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

F46b6942be65359575174569d8979223?s=128

Julien BIANCHI

December 24, 2012
Tweet

Transcript

  1. VAGRANT! http://vagrantup.com/! http://downloads.vagrantup.com/! ! Environnements de travail ! virtualisés !

    isolés! réutilisables! jetables! !
  2. 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»  
  3. VAGRANT! VBOX! VERSION:  4.2+   VERSION:  1.0.5  

  4. $  vagrant  box  add  <nom>  <url>   import d’une !

    BASE-BOX!
  5. 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/!
  6. 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    
  7. DÉMARRAGE! de la VM! $  vagrant  up  [<nom>]  

  8. 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  
  9. 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.  
  10. Partage  VBOXSF  /  NFS   ~/workspace/project! /vagrant! host:2222! host:2280! VM:22!

    VM:80! Redirection de ports!
  11. PROVISIONNEMENT! de la VM! $  vagrant  up  [<nom>]   $

     vagrant  provision  
  12. 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      
  13. 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.  
  14. É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  
  15. 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  
  16. 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  
  17. vagrant
 EN MOINS DE 5 MIN! hXp://ascii.io/a/1717  

  18. 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  
  19. 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  
  20. 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  
  21. 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   •  …  
  22. QUESTIONS…! ? hSp://vagrantbox.es   hSp://vagrantup.com   hSps://twiSer.com/mitchellh   hSps://github.com/mitchellh/vagrant  

      irc.freenode.net#vagrant    
  23. @JUBIANCHI   hSp://twiSer.com/jubianchi   hSp://github.com/jubianchi   FIN…!