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
  2. UN PEU D’HISTOIRE • Python ‘scientifique’ • C, C++, Fortran

    • Compilateurs, librairies bizarres (CUDA, opencl, etc...) Sunday, 27 October 13
  3. UTILISER DES VMS • Cas typique: fichier VM partagé: •

    Manque de transparence • Taille rédhibitoire (windows, mac) • Aucune fléxibilité Sunday, 27 October 13
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. EXEMPLE { "provisioners": [ { "type": "shell", "scripts": [ "scripts/base.sh",

    ! ... ], "builders": [ { "type": "virtualbox", ... }, } Sunday, 27 October 13
  11. POURQUOI PACKER • Utile même sans vagrant • Peut construire

    plusieurs VM en // • Mode “debug” Sunday, 27 October 13