Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Vagrant, box e macchine virtuali

Un box contiene un intero sistema operativo e permette di clonare e in modo semplice una macchina virtuale, scopriamone il funzionamento.
Un box contiene un intero sistema operativo e permette di clonare e in modo semplice una macchina virtuale, scopriamone il funzionamento.
Link copiato negli appunti

In Vagrant un box è un file .tar compresso, in esso troviamo le immagini di una virtual machine (.vmdk e .ovf se questa fosse stata creata con VirtualBox), un Vagrantfile ed un file JSON di metadati. Il suo ruolo è quello di fare da prototipo per tutti i progetti futuri che andremo a creare con Vagrant.

NOTA: D'ora in avanti per "progetto Vagrant" intenderemo una directory con un Vagrantfile al suo interno.

Poiché ogni box contiene un intero sistema operativo, le dimensioni possono variare da qualche centinaio di MB per un sistema Linux headless (ovvero senza interfacce utente) a vari GB per un sistema Windows.

Come già accennato, al primo vagrant up un box viene scaricato dal repository specificato nel Vagrantfile e salvato lontano da occhi indiscreti in una sorta di repository locale. Tale repository è nascosto nei meandri del nostro hard disk in modo da evitare la tentazione di andarci a smanettare. Questa operazione avviene una sola volta per ogni box: se creiamo un secondo progetto avente come box, ancora una volta, hashicorp/precise32 (come nell’esempio precedente), esso non verrebbe scaricato essendo già presente sul disco.

Quando eseguiamo il comando vagrant up per la prima volta per un dato progetto il box, se presente nel nostro repository locale, viene clonato in una directory di progetto. In questo modo avremo due box, quello originario e quello clonato.

La fase di startup di una virtual machine avviene sempre usando il box clonato, tale operazione permette a più virtual machine aventi per origine lo stesso box di essere in esecuzione contemporaneamente senza interferire tra loro.

Ogni modifica apportata ad una macchina virtuale renderà man mano il relativo box clonato sempre più diverso da quello originario. Per avere un quadro generale possiamo lanciare il comando vagrant status:

C:\vm-htmlit> vagrant status
default               running (virtualbox)

L’output del comando mostra alla prima colonna il nome della macchina virtuale, in questo caso default, la seconda colonna mostra lo stato della macchina e il provider di virtualizzazione utilizzato. Qualora la macchina virtuale venisse arrestata, grazie al comando vagrant halt, le modifiche effettuate all’interno della macchina virtuale sarebbero ancora visibili al successivo avvio in quanto tali modifiche sono persistite nel box clonato che continuerà ad esistere, sebbene la macchina risulti spenta:

C:\vm-htmlit> vagrant status
default               poweroff (virtualbox)

Se vogliamo liberarci del box clonato (ma non di quello originario) e ripartire dall’immagine pulita utilizziamo il comando vagrant destroy, in questo caso al successivo avvio non avremo più alcuna traccia di eventuali modifiche, in quanto il box clonato sarà identico a quello presente nel repository locale.

C:\vm-htmlit> vagrant status
default               not created (virtualbox)

Comandi per agire sui "base box"

Tutti i comandi precedenti hanno effetto solo sui box di progetto (quelli clonati dopo il primo vagrant up) e non sui "base box" che resteranno al sicuro per eventuali utilizzi futuri. Se è necessario agire sui box originari, invece, utilizzeremo i seguenti comandi:

vagrant box add

Questo comando permette di scaricare un box sul computer locale, fa parte della sequenza di comandi eseguiti durante l’esecuzione di vagrant up e in virtù di ciò il suo utilizzo esplicito è poco comune.

vagrant box add {nome} {URL}

vagrant box list

Elenca tutti i box scaricati sul nostro computer locale.

C:\> vagrant box list
hashicorp/precise32              (virtualbox)
hashicorp/precise64              (virtualbox)

vagrant box remove

Rimuove il box specificato. In virtù del fatto che una virtual machine utilizza un box clonato per avviarsi questa è in grado di funzionare anche se il box originario fosse stato rimosso.

vagrant box remove {nome} [provider]

Ovviamente un vagrant destroy elimina anche il box clonato; in tal caso ad un successivo vagrant up il box sarebbe nuovamente scaricato nel reposito
ry locale, clonato e solo a questo punto la macchina virtuale potrà essere nuovamente avviata.


Ti consigliamo anche