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

vagrant

 vagrant

Présentation de l'outil Vagrant qui permet de construire des environnements de développements virtualisés, semblables à la production :
* Les composants qui interviennent
* Les commandes de base
* Quelques plugins intéressants
* Des conseils d'utilisation

Julien BIANCHI

December 24, 2012
Tweet

More Decks by Julien BIANCHI

Other Decks in Programming

Transcript

  1. VAGRANT…! …est une interface ! qui permet de (re)créer !

    et de configurer des ! environnements de ! développement…! …  «  and  makes  the  “Works  on  my  machine”  excuse  a  relic  of  the  past»  
  2. BASE-BOX! •  imageVirtual  Box  packagée   au  format  Vagrant  

    •  modèlede  machine  virtuelle     par?ellement  configurée   •  base  réu?lisable  pour  créer     des  environnements  de  travail   http://www.vagrantbox.es/!
  3. initialisation de ! l’ENVIRONNEMENT! http://vagrantup.com/v1/docs/vagrantfile.html! $  cd  mon-­‐projet   #

     IniFalisaFon  de  l’environnement   $  vagrant  init   #  EdiFon  du  fichier  de  configuraFon   $  vim  VagranJile   #  VagranJile   Vagrant::Config.run  do  |config|          config.vm.box  =        precise32          config.vm.box_url  =  hSp://files.vagrantup.com/precise32.box   end    
  4. CONNEXION
 à la machine virtuelle! $  cd  mon-­‐projet   $

     ls   foo  bar.php   $  vagrant  up   $  vagrant  ssh   $$  cd  /vagrant   $$  ls   foo  bar.php   $$  php  bar.php   php:  command  not  found   h/p://vagrantup.com/v1/docs/ge:ng-­‐started/ssh.html  
  5. PARTAGE de fichiers
 REDIRECTION de ports! •  VM  locale  au

     dossier/projet   •  dossier  courant  automa?quement   partagé   •  redirec?ons  de  port  personnalisables   UFlisez  bewiwi/vagrant-­‐getredirec?on  (Github)   pour  retrouver  facilement  les  ports  redirigés.  
  6. les provisionners :! CHEF/ PUPPET! #  VagranJile   Vagrant::Config.run  do

     |config|          config.vm.box  =        precise32                    config.vm.provision  :chef_solo  do  |chef|                  chef.cookbooks_path  =  "cookbooks"                    chef.add_recipe  "git"                                  chef.add_recipe  "php"            end   end      
  7. PROVISIONING! •  installa?on/restaura?on   d’une  configuraFon   •  langage  de

     descripFon   •  abstrac?on  du  système   •  composants  réu?lisables   http://vagrantup.com/v1/docs/getting-started/provisioning.html   h/p://community.opscode.com/cookbooks   h/p://forge.puppetlabs.com/       UFlisez  des  cookbooks/modules  de  qualité  pour     garanFr  l’intégrité  de  la  machine  virtuelle.  
  8. ÉTEINDRE
 la machine virtuelle! #  MeSre  la  VM  en  pause

      $  vagrant  suspend   #  Éteindre  la  VM   $  vagrant  halt  [-­‐f]   #  Détruire  la  VM   $  vagrant  destroy  [-­‐f]   •  suspend  et  halt  préservent  l’état  de  la     machine  virtuelle   •  destroy  détruit  physiquement  la  machine     virtuelle  
  9. utiliser le
 SANDBOX! #  Installer  le  plugin  Sahara   $

     vagrant  gem  install  sahara   $  vagrant  up   $  vagrant  sandbox  on   $  vagrant  ssh   $$  cd  /vagrant  &&  ./project-­‐load-­‐fixtures   $$  exit   $  vagrant  sandbox  commit   $$  …   $  vagrant  sandbox  rollback   $  vagrant  ssh   h/ps://github.com/jedi4ever/sahara  
  10. quelques! PLUGINS! •  DWT/VAGRANT-­‐HOSTS   gesFon  du  fichier  hosts  de

     l’hôte   •  GARETHR/RUBY-­‐VAGRANTBOXES   recherche  sur  vagrantbox.es   •  FGREHM/VAGRANT-­‐NOTIFY   forward  les  noFficaFons  depuis  la     VM  vers  l’hôte   hSps://github.com/mitchellh/vagrant/wiki/Available-­‐Vagrant-­‐Plugins  
  11. vagrant : comment ! BIEN L’UTILISER ?! 1.  versionner  la

     box  dans  un  dépôt     externe  au  projet   •  ne  pas  polluer  le  code  source     du  projet   •  réu?liser  la  box  dans  d’autres  projets  
  12. vagrant : comment ! BIEN L’UTILISER ?! 2.  packager  la

     box  avec  la  configura?on     minimale  requise   •  mise  à  dispo.  &  partage  facilités   •  gain  de  temps  :  le  provisionnement   ne  sera  lancé  qu’une  seule  fois  
  13. vagrant : comment ! BIEN L’UTILISER ?! 3.  ne  pas

     versionner  directement  le  VagranJile  du   projet   •  versionner  plutôt  un  Vagran_ile-­‐dist   •  ignorer  le  Vagran_ile   •  personnalisa?on  par  le  développeur  
  14. CAS D’UTILISATION! •  Presque  n’importe  quel  projet   •  compila?on

     d’une  librairie   •  test/essai  d’un  logiciel   •  isola?on  des  tests  en  environnement   d’intégraFon  conFnue   •  …