Cos’è vagrant e come si usa

Vagrant Logo

Quanti di voi hanno mai sentito parlare di Vagrant? Probabilmente se avete mai gestito o amministrato macchine virtuali, avrete sicuramente incontrato uno dei sistemi virtualizzazione presenti sul mercato come VirtualBoxVMware e partendo da questi possiamo iniziare a capire cosa è Vagrant e cosa ci permette di fare.

Vagrant Logo

Cos’è

Vagrant può essere definito come un gestore di macchine virtuali. Una macchina virtuale non è altro che un ambiente virtuale che simula un computer con risorse ben definite come RAM, CPU, Hard Disk ed Interfacce di rete. Vagrant permette di gestire in maniera automatizzata la creazione, la configurazione e l’intera gestione delle nostra macchine virtuali attraverso le API messe a disposizione dai providers chiamati comunemente sistemi di virtualizzazione.

Le componenti principali di Vagrant sono:

  1. Providers

    VirtualBox è uno dei provider maggiormente utilizzato dagli sviluppatori. Esso permette di gestire ambienti virtuali con CPU, RAM, Rete Storage e ovviamente permette di installare eseguire un sistema operativo sulle macchine create.

  2. Box

    Installare un sistema operativo all’interno dei macchina virtuale segue la stessa procedura lenta, e a volte macchinosa, utilizzata per installarlo in un macchina reale. Vagrant mette a disposizione dei “box” ovvero delle macchine pre-configurate con sistema operativo installato da cui partire.

  3. Provisioning

    Il meccanismo di personalizzazione ed installazione di software all’interno di un macchina vagrant è detto provisioning. Esso permette di configurare automaticamente e rendere ridristribuibile la macchina attraverso un singolo file

Perché usarlo

Usare un software dovrebbe comunque darci qualche vantaggio. In un ambiente di lavoro eterogeneo dove esistono diversi progetti e diversi team che operano su di essi, diventa difficile passare da un progetto all’altro, sopratutto quando i progetti sono diversi tra loro.

In particolare, parlando di progetti web, i problemi principali sono:

  1. Creare degli ambienti di sviluppo e testing molto simili a quello in produzione per semplificare il deploy
  2. Tutti gli sviluppatori dovrebbero lavorare sullo stesso ambiente
  3. Ogni ambiente dovrebbe essere configurato indipendente dalla macchina su cui gira per aumentarne la portabilità

Vagrant risolve questi problemi con un file di configurazione e qualche comando. È possible installarlo su Windows, Mac OS o Linux a patto che sia installato sul sistema uno dei sistemi di virtualizzazione compatibili VirtualBox o VMware.

Come usarlo

Per installarlo visitare il sito https://www.vagrantup.com/ e scaricare il pacchetto di installazione. Doper installazione verificare che il comando vagrant correttamente aprendo il terminale o il prompt dei comandi.

Installato Vagrant non ci resta che creare il file di configurazione Vagrantfile (senza estensione) ed inserirlo nella cartella del nostro progetto, questo informerà il provider su come dovrà essere configurata la macchina.

Nel file di configurazione viene definito il box con il sistema operativo a bordo, ubuntu in questo caso. È possibile trovare tutte le box messe a disposizione da vagrant sul sito ufficiale o all’indirizzo: https://atlas.hashicorp.com/boxes

Oltre al box vediamo diverse sezioni per definire la RAM, il numero di processori che la macchina dovrà avere oltre che alle impostazioni di rete. In questo caso la macchina può essere raggiunta mediante uno specifico indirizzo ip.

Ultima ma non per importanza è la synced_folder, ovvero la cartella che il box condivide con il nostro PC. Questa cartella è molto utile perché può ad esempio contenere i file del nostro progetto.

Cosa si può fare

Un tipico esempio di vagrant è quello di usare la VM (Virtual Machine) come server web e inserire i sorgenti all’interno della cartella condivisa. In questo modo possiamo condividere la configurazione con i colleghi e lavorare tutti sulla stessa configurazione, che può essere molto simile a quella del nostro server di produzione.
Ovviamente possiamo configurare qualsiasi macchina sia che essa sia destinata ad uno server side sia per elaborare dati o semplicemente testare le nostre applicazioni, ma l’unico limite come sempre è la nostra immaginazione.

Nei prossimi articoli vedremo come usarlo in modo più specifico per realizzare siti web.
Curiosi? Commentate e fatemi sapere cosa ne pensate!

2 Commenti

  1. Ale

    Ciao, spesso sento di libvrt. Se ho capito esso rappresenta un altro provider come virtualbox o vmware che può essere utilizzato con vagrant. Quindi, ti chiedo : è corretto considerare libvirt un provider?
    Grazie

    Risposta
    1. Christian Rizza (Autore Post)

      Ciao Ale, grazie per il commento.
      Purtroppo non ho mai sentito parlare di libvrt ma sembra interessante.
      Se libvirt ha le stesse funzionalità di virtualbox e wmvare allora si è possibile considerlarlo provider.

      Un link interessante dove poter trovare informaztioni e un plugin per vagrant è https://github.com/vagrant-libvirt/vagrant-libvirt

      Risposta

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *