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

vagrant

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 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

Avatar for Julien BIANCHI

Julien BIANCHI

December 24, 2012

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   •  …