Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automatiser des environments de build complexes sans

cournape
October 27, 2013

Automatiser des environments de build complexes sans

Cette présentation montre comment l'on peut utiliser vagrant et packer pour préparer des environments de build complets et reproductibles.

Je prendrai l'exemple de compiler un paquet wheel 'numpy' sous windows pour illustrer l'automatisation en direct.

cournape

October 27, 2013
Tweet

More Decks by cournape

Other Decks in Programming

Transcript

  1. VAGRANT, PACKER ET UN PEU
    DE RUBY
    Automatiser des builds complexes
    @cournape
    github.com/cournape
    Sunday, 27 October 13

    View Slide

  2. UN PEU D’HISTOIRE
    • Python ‘scientifique’
    • C, C++, Fortran
    • Compilateurs, librairies
    bizarres (CUDA, opencl,
    etc...)
    Sunday, 27 October 13

    View Slide

  3. Sunday, 27 October 13

    View Slide

  4. UTILISER DES VMS
    • Cas typique: fichier VM partagé:
    • Manque de transparence
    • Taille rédhibitoire (windows, mac)
    • Aucune fléxibilité
    Sunday, 27 October 13

    View Slide

  5. • Alternative: VM construites programmatiquement
    Sunday, 27 October 13

    View Slide

  6. VM AUTOMATISÉES
    Base VM (packer)
    Provisioned VM (vagrant)
    VM ready to build
    Increasing
    flexibility
    More cross
    platform
    Change
    less
    frequently
    automation
    more
    robust
    Sunday, 27 October 13

    View Slide

  7. BASE VM
    • vagrant pour automatiser/distribuer: http://
    www.vagrantup.com/
    • VM de base (“basebox”)
    • très spécifique à la plateforme, OS (windows vs RHEL,
    virtualbox vs ec2)
    • Fichiers .box disponibles pour linux
    Sunday, 27 October 13

    View Slide

  8. VM PROVISIONÉES
    • Contient tout ce qui n’est pas spécifique à un projet
    • compilateurs, paquets tiers
    • examples: homebrew, ifort, VS 2008, xcode
    • vagrant: supporte chef, salt, etc... pour le provisioning
    Sunday, 27 October 13

    View Slide

  9. EXEMPLE
    Vagrant.configure("2") do |config|
    config.vm.box = "win-7-ultimate-i386"
    config.vm.guest = :windows
    config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "chef-cookbooks"
    chef.log_level = :debug
    chef.add_recipe "mingw"
    end
    end
    $ vagrant up
    $ vagrant provision
    Sunday, 27 October 13

    View Slide

  10. POURQUOI VAGRANT
    • Grosse communauté
    • Beaucoup de plugins (support pour vmware fusion, etc...)
    • Petits details qui comptent:
    • répertoire partagé par défaut
    • “Bridged, private networks”
    Sunday, 27 October 13

    View Slide

  11. PACKER
    Sunday, 27 October 13

    View Slide

  12. PACKER
    • Boîte à outils pour construire des VMs de base (.box)
    • En Go, support pour windows, linux
    • Backend: virtualbox, vmware, ec2
    • http://packer.io
    Sunday, 27 October 13

    View Slide

  13. EXEMPLE
    {
    "provisioners": [
    {
    "type": "shell",
    "scripts": [
    "scripts/base.sh",
    ! ...
    ],
    "builders": [
    {
    "type": "virtualbox",
    ...
    },
    }
    Sunday, 27 October 13

    View Slide

  14. POURQUOI PACKER
    • Utile même sans vagrant
    • Peut construire plusieurs VM en //
    • Mode “debug”
    Sunday, 27 October 13

    View Slide

  15. EXAMPLE: NUMPY WHEEL
    Sunday, 27 October 13

    View Slide

  16. QUESTIONS ?
    Sunday, 27 October 13

    View Slide