Dec 022013
 

vagrantSe si lavora in IT è abbastanza normale in questi giorni avere un computer con almeno 4 GB di RAM e se lo avete comprato nell’ultimo anno probabilmente ne ha di 8GB, questo è fantastico per eseguire le applicazioni moderne che di solito richiedono molta più RAM rispetto al passato, ma questo rende l’utilizzo di Virtual Machine su personal computer molto più facile e fattibile.

Questo ha aperto alcune opzioni interessanti nel ciclo di sviluppo di qualsiasi applicazione o servizio in quanto ora è possibile avere una macchina di test/sviluppo su ogni computer personale, come amministratore di sistema mi piacerebbe che queste VM fossero il più simile possibile all’ambiente di produzione, quindi qual’è un buon modo per gestire e distribuire macchine virtuali per gli sviluppatori?

Per quello che ho trovato in giro la migliore risposta al momento è: Vagrant .
In questa prima parte tratterò l’aspetto teorico di Vagrant e in quella successiva vi mostrerò qualche comando di base per impostare un ambiente funzionante con esso.




Vagrant è un software libero ed open-source per la creazione e la configurazione di ambienti di sviluppo virtuali, fornisce un ambiente di lavoro facile da configurare, riproducibile, e portatile costruito con tecnologie standard nel settore e controllato da un unico flusso di lavoro coerente per aiutare a massimizzare la produttività e la flessibilità vostra e della vostra squadra.

Per raggiungere la sua magia, Vagrant sta sulle spalle di giganti. Le macchine sono fornite tramite VirtualBox, VMware, AWS, o un qualsiasi altro fornitore. Poi, strumenti standard di provisioning e configurazione come script in shell, Chef o Puppet, possono essere utilizzati per installare e configurare il software sulla macchina automaticamente.

installazione

Ci sono 2 modi per installare Vagrant sul proprio computer:

- Come Paccketto
- Come gemma di Ruby

Visto che non sono così esperto in Ruby preferisco il metodo classico con pacchetto, e se si utilizza una distribuzione moderna, probabilmente lo troverete nel vostro repository, visto che Vagrant ha un ciclo di rilascio abbastanza veloce si può anche decidere di scaricare il file .deb o .rpm direttamente dal sito web per avere l’ultima versione disponibile (1.3.5 al momento della stesura di questo articolo).

Io ho usato il pacchetto disponibile sul mio repository (1.0.3), un po’ vecchio ma buono quanto basta per questa introduzione.

Concetti di base di Vagrant

Questi sono alcuni elementi che è necessario conoscere per lavorare con Vagrant:

Vagrantfile

Provisioners
L’avvio di una macchina virtuale vuota non è molto utile, per questo motivo Vagrant supporta il provisioning delle macchine virtuali attraverso l’uso di provisioners. Ci sono una manciata di software per le scelte più comuni supportati out of the box con Vagrant, ma è anche possibile aggiungere il proprio molto facilmente se si conosce un po’ di Ruby.

I provisioners ti permettono di impostare facilmente la macchina virtuale con tutto ciò di cui ha bisogno per eseguire il software. Quindi al termine delle loro operazioni vi troverete una macchina virtuale con tutto lo stack software che vi interessa avere in quello specifico ambiente.

I rifornitori disponibili che vengono forniti con Vagrant sono:

  • Chef Solo
  • Chef Server
  • Puppet Standalone
  • Puppet Server
  • Shell script

Boxes

Un “box” è l’immagine di base utilizzata per creare un ambiente virtuale con Vagrant. E’ pensata per essere un file portabile che può essere utilizzato da altri, su qualsiasi piattaforma su cui Vagrant possa funzionare per far partire un ambiente virtuale. La utility vagrant box fornisce tutta la potenza per gestire i box e vagrant package viene utilizzato per creare box.

I box forniscono solo l’immagine di base per Vagrant. Nel momento in cui si esegue Vagrant up , il box viene copiato in modo che possa essere poi modificato per quella specifica macchina virtuale. Pertanto, è possibile rimuovere o aggiornare il box dopo che una macchina virtuale è stata creata.

Providers

Mentre Vagrant è fornito out of the box con il supporto per VirtualBox , Vagrant ha anche la capacità di gestire altri tipi di macchine. Ciò viene fatto utilizzando altri provider con Vagrant.

Provider alternativi sono in grado di offrire diverse funzionalità che potrebbero avere più senso nel vostro caso d’uso. Ad esempio, se si sta utilizzando Vagrant per qualsiasi lavoro in ambiente reale, il provider VMware è quello raccomandato dato che è ben supportato e generalmente più stabile e performante di VirtualBox.

Prima di poter utilizzare un altro provider, è necessario installarlo. Vagrant ha di base solo il supporto VirtualBox. L’installazione di altri fornitori avviene tramite il sistema di plugin Vagrant.

Plugins
A volte, si vuole cambiare il modo in cui Vagrant fa qualcosa o aggiungere ulteriori funzionalità a Vagrant. Questo può essere fatto attraverso i plugin di Vagrant.

I plugin sono potenti, cittadini di prima classe che estendono Vagrant utilizzando una ben documentata, API stabile, in grado di sopportare importanti aggiornamenti di versione.

Infatti, la maggior parte del nucleo di Vagrant è implementato utilizzando plugin .

Cartelle Sincronizzate

Questo è l’ultimo concetto che voglio mostrarvi ed è molto utile quando si lavora con i box.
Le Cartelle sincronizzate consentono a Vagrant di sincronizzare una cartella sul computer host sulla macchina guest, permettendo di continuare a lavorare sul file del progetto sul computer host, ma utilizzano le risorse nella macchina guest per compilare o eseguire il progetto.

Per impostazione predefinita, Vagrant condividerà la directory del progetto (la directory con il Vagrantfile) nella directory /vagrant.

Conclusioni

Probabilmente come me durante la lettura di tutte queste funzionalità e caratteristiche desiderate iniziare a fare qualche box per i vostri colleghi e personalizzarle, per spostare sui personal computer la maggior parte delle macchine di sviluppo che dovete gestire, non vi preoccupate nel prossimo articolo andremo sulla pratica.


Popular Posts:

flattr this!

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>