Ora che abbiamo installato tutto il necessario non ci resta che iniziare a fare qualche prova, sfruttando e imparando a conoscere quelli che sono i due comandi più importanti di Vagrant.
vagrant init
Lanciamo la nostra shell (prompt comandi) e e creiamo una nuova directory (nel nostro caso C:\vm-htmlit
), portiamoci al suo interno e lanciamo uno dei principali comandi dell’ecosistema:
C:\vm-htmlit> vagrant init hashicorp/precise32
A `Vagrantfile` has been placed in this directory. [...]
Il comando è diviso in tre parti fondamentali:
Comando | Descrizione |
---|---|
vagrant | è il comando principale |
init | è il sotto-comando. In questo caso è stato richiesto di inizializzare un nuovo progetto Vagrant all’interno del path C:\vm-htmlit |
hashicorp/precise32 | segnaliamo che il progetto è a un sistema operativo di tipo Ubuntu 12.04 Precise Pangolin a 32 bit, in futuro l’immagine di tale sistema (o meglio box) andrà recuperata dal repository Hashicorp |
Lanciato il comando, se tutto andrà per il verso giusto, Vagrant ci informerà dell’aggiunta di un Vagrantfile alla directory corrente.
I sistemi operativi da utilizzare possiamo recuperarli dal repository ufficiale, cercando quello che fa al caso nostro, in alternativa possiamo creare un box personalizzato ed usarlo per i nostri progetti. Per ora Ubuntu è più che sufficiente a soddisfare le nostre esigenze.
Vagrantfile
Questo file è il cuore di un progetto Vagrant e racchiude le caratteristiche della nostra futura macchina virtuale, qui potremo specificare la quantità di RAM, le configurazioni di rete e tanto altro ancora. Possiamo aprire il file con un qualunque editor di testo: il contenuto è scritto in Ruby ma non è necessario conoscere il linguaggio per capire cosa voglia significare, inoltre è fortemente commentato.
Se un Vagrantfile diventa molto verboso, fino a risultare fastidioso, è possibile aggiungere il flag --minimal
al comando init
. Questo è l’output generato dal comando init
precedente privato di tutti i commenti:
Vagrant.configure(2) do |config|
config.vm.box = "hashicorp/precise32"
end
La prima e la terza riga creano un blocco entro cui la configurazione della macchina virtuale è agganciata alla variabile config. La seconda riga specifica di quale box Vagrant avrà bisogno per avviare la macchina virtuale (e coincide con quanto scritto nel comando init
precedentemente).
vagrant up
Per avviare la nostra macchina virtuale è sufficiente lanciare vagrant up da riga di comando (assicuriamoci di eseguire il comando nella stessa directory in cui abbiamo generato il Vagrantfile). Il comando cercherà sul nostro disco se è presente il box precise32.box
(ovviamente ciò non avverrà), altrimenti lo preleverà dal repository centrale, in tal caso l’avvio della macchina virtuale non sarà dei più rapidi:
C:\vm-htmlit> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'hashicorp/precise32' could not be found. Attempting to find and install...
==> default: Loading metadata for box 'hashicorp/precise32'
default: URL: https://atlas.hashicorp.com/hashicorp/precise32
==> default: Adding box 'hashicorp/precise32' (v1.0.0) for provider: virtualbox
default: Progress: 30% (Rate: 538k/s, Estimated time remaining: 0:06:48))
Salvo problemi, dopo il download, la macchina virtuale dovrebbe essere su, e il prompt dei comandi dovrebbe ritornare di nuovo disponibile. Nonostante sembri che non sia successo nulla, la macchina virtuale sarà già in background in attesa di istruzioni.
Poiché non abbiamo ancora strumenti per interfacciarci alla vistual machine e verificarne l’effettivo funzionamento, apriamo il task manager ("Gestione attività") e cerchiamo tra le applicazioni attive la voce VBoxHeadless, se la troviamo tutto è andato a buon fine.
In alternativa, per avere informazione sullo stato delle nostre virtual machine, quali sono in esecuzione, quali stoppate e così via, possiamo digitare il comando:
vagrant status
Possiamo stoppare una macchina virtuale utilizzando il comando vagrant halt e farla tornare di nuovo in vita ridigitando vagrant up
, vedremo che i tempi di avvio della macchina saranno molto più veloci rispetto alla prima esecuzione. Il motivo, come si intuisce, sta nel fatto che Vagrant questa volta non ha dovuto scaricare il box del sistema operativo in quanto già presente sul disco locale.
Se guardiamo con più attenzione l’output del comando vagrant up
alla sua seconda esecuzione ne avremo la conferma in quanto da nessuna parte si parlerà di download del box come nel caso precedente:
C:\vm-htmlit> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'hashicorp/precise32'...
==> default: Checking if box 'hashicorp/precise32' is up to date...
==> default: Booting VM…
[...]
Nella prossima lezione approfondiremo meglio il concetto di box, finora solo accennato, ma fondamentale ai fini della comprensione di alcune dinamiche di gestione.