Vagrantfrom zero to VM (in seconds)
@apessolano
Chi sonoSysAdmin 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
Installazionehttps://www.virtualbox.org/wiki/Downloads
Installazionehttp://downloads.vagrantup.com/
1. Seleziono la versione che mi interessa
2. successivamente il sistema operativo
che intendo utilizzare
I componenti
Come funziona?
ProvidersOffrono la possibilità di gestire:
• CPU e RAM
• Networking
• Storage
Dalla versione 1.1.*: Virtualbox, VMWare, AWS, DigitalOcean, ecc.
BoxLo scheletro a partire dal quale Vagrant 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
ProvisioningPermette 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 listvagrant box remove <name> <provider>vagrant box repackage <name> <provider>
Comandi principalivagrant up
vagrant ssh
vagrant halt
vagrant suspend
vagrant destroy
lanciare la macchina virtuale
effettua il login via ssh alla VM
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 prima VMVagrant.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?
LinksVagrant: Up and runningMitchel HashimotoO’Reillyhttp://shop.oreilly.com/product/0636920026358.do
Vagrant Docshttp://docs.vagrantup.com/v2/
Vagrant on Twitterhttps://twitter.com/mitchellhhttps://twitter.com/vagrantuphttps://twitter.com/hashicorp
Serviceshttps://puphpet.com/http://rove.io/
Esempihttps://gist.github.com/apessolano/6360194https://gist.github.com/apessolano/6360643https://gist.github.com/apessolano/6360832
Grazie!
[email protected]@apessolano
Antonio Pessolano
Immagini utilizzate:http://www.hashicorp.com/images/blog/a-new-look-for-vagrant/logo-8b7a4912.pnghttp://soloconlamiatesta.files.wordpress.com/2012/10/scimmiapensante.jpghttp://cdn.iovideogioco.com/wp-content/uploads/2009/04/lego.jpghttp://andreazanini.altervista.org/wp-content/uploads/2013/04/auto-in-pezzi-parti-esploso.jpghttp://ilsileno.it/wp-content/uploads/2012/03/stupore.jpghttp://www.pontos-news.gr/files/3_avga_diakosmisi_pasxa_616793647.jpg