Vagrant
from zero to VM (in seconds)
antonio.pessolano@gmail.com
@apessolano
Chi sono
SysAdmin in ambiente M$ dal 2000 al 2004
Web developer dal 2004 (più o meno)
Senior developer @
More info:
http://www.linkedin.com/in/antoniopessolano
PerchèVagrant?
Prima di tutto...
Qualche anno fa
Oggi
“Keep development, staging and
production as similar as possible”
http://12factor.net
Dev/Prod Parity
Problemi principali
• Switchare tra diversi progetti non è semplice
• Il setup dei pacchetti richiesti per ogni
progetto non è sempre immediato
• L’ambiente di sviluppo rischia di divergere
troppo da quello di produzione
La soluzione?
Installazione
Le fondamenta
Installazione
https://www.virtualbox.org/wiki/Downloads
Installazione
http://downloads.vagrantup.com/
1. Seleziono la versione
che mi interessa
2. successivamente il
sistema operativo
che intendo utilizzare
I componenti
Come funziona?
Providers
Offrono la possibilità di gestire:
• CPU e RAM
• Networking
• Storage
Dalla versione 1.1.*:Virtualbox,VMWare,
AWS, DigitalOcean, ecc.
Box
Lo scheletro a partire dal qualeVagrant costruisce le
virtual machine.
• Le box sono dipendenti dal provider specificato.
• Meccanismo per limitare il tempo di bootstrap di una
VM
vagrant box add [label] [uri]
vagrant box add precise64 http://file.vagrantup.com/precise64.box
Provisioning
Permette di:
• Permette di installare software, modificare le
configurazioni.
• Permette di rendere ripetibile e ridistribuibile la
VM.
Vagrant offre diverse soluzioni di provisioning.
Tra queste: Shell Script, Chef, Puppet, ecc.
Comandi principali
vagrant	
  box	
  <command>	
  <args>
vagrant	
  box	
  add	
  <name>	
  <url>	
  [-­‐-­‐provider	
  provider]
vagrant	
  box	
  list
vagrant	
  box	
  remove	
  <name>	
  <provider>
vagrant	
  box	
  repackage	
  <name>	
  <provider>
Comandi principali
vagrant	
  up
vagrant	
  ssh
vagrant	
  halt
vagrant	
  suspend
vagrant	
  destroy
lanciare la macchina virtuale
effettua il login via ssh allaVM
spegne la vm (senza cancellare
i file)
Salva lo stato della vm e la
spegne. Permette un riavvio
più rapido
distrugge completamente la
VM eliminando tutti i file
Tutto chiaro?!
Vagrantfile
Andiamo al sodo...
La mia primaVM
Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.synced_folder "project", "/vagrant"
config.vm.network :forwarded_port, guest:80, host: 8080
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
config.vm.provision :shell, :path => "provision.sh"
end
https://gist.github.com/apessolano/6360194
Live demo
Facciamo qualcosa?
Links
Vagrant: Up and running
Mitchel Hashimoto
O’Reilly
http://shop.oreilly.com/product/0636920026358.do
Vagrant Docs
http://docs.vagrantup.com/v2/
Vagrant on Twitter
https://twitter.com/mitchellh
https://twitter.com/vagrantup
https://twitter.com/hashicorp
Services
https://puphpet.com/
http://rove.io/
Esempi
https://gist.github.com/apessolano/6360194
https://gist.github.com/apessolano/6360643
https://gist.github.com/apessolano/6360832
Grazie!
antonio.pessolano@gmail.com
@apessolano
Antonio Pessolano
Immagini utilizzate:
http://www.hashicorp.com/images/blog/a-new-look-for-vagrant/logo-8b7a4912.png
http://soloconlamiatesta.files.wordpress.com/2012/10/scimmiapensante.jpg
http://cdn.iovideogioco.com/wp-content/uploads/2009/04/lego.jpg
http://andreazanini.altervista.org/wp-content/uploads/2013/04/auto-in-pezzi-parti-esploso.jpg
http://ilsileno.it/wp-content/uploads/2012/03/stupore.jpg
http://www.pontos-news.gr/files/3_avga_diakosmisi_pasxa_616793647.jpg

Vagrant from zero to VM