Vagrant è uno strumento a riga di comando per la creazione e la configurazione di ambienti di sviluppo virtualizzati.
Questo strumento ci permette do eseguire il provisioning automatico di ambienti in VirtualBox, Hyper-V, Parrallels e Docker, ma il vero vantaggio è che la configurazione avviene attraverso un file di configurazione, dove andremmo a specificare tutte le configurazioni della macchina che vogliamo creare e poterlo distribuire velocemente per creare in poco tempo nuovi ambienti.
Una volta configurato il file, vagrant si occuperà di configurare e scaricare tutto il necessario con il minimo intervento.
Esistono Vagrant Box per ogni tipologia di applicazione, con delle caratteristiche e software già preinstallato. In questo articolo valuteremo il Box per Laravel, essendo che ci faremo girare una versione non aggiornata ci imbatteremo anche in un problema di compatibilità con i Box, per cui dovremmo eseguire un downgrade di versione.
VAGRANT FILE
Come spiegato prima alla base di Vagrant c’è un file di configurazione, tramite questo file di configurazione adeguatamente configurato il sistema crea la macchina e configura automaticamente l’ambiente senza minimo sforzo. In generale ogni Vagrant file è adibito a un tipo di ambiente e può contenere diversi parametri di configurazione anche se i comuni sono uguali, in seguito approfondiremo installando un ambiente per Laravel.
I vari box possono essere cercati al seguente link:
Discover Vagrant Boxes – Vagrant Cloud (vagrantup.com)
INSTALLAZIONE
In questo articolo installeremo un ambiente vagante per far girare in locale una versione di Laravel
Prima di iniziare installiamo GitBash, per comodità mi trovo bene a usare la bash di Linux, e l’installazione di Vagrant tramite questi link:
https://developer.hashicorp.com/vagrant/downloads
https://git-scm.com/download/win
Ora andiamo a cercare il box di cui abbiamo bisogno tramite il link indicato prima
https://app.vagrantup.com/boxes/search
In questo caso possiamo vedere l’ultima versione 13.0.0
Se andiamo in git vediamo altri aspetti della versione
Per installare il box è molto semplice, necessita solo di clonare la repository in una directory locale
git clone https://github.com/laravel/homestead.git ~/Homestead
cd ~/Homestead
git checkout release
Questa versione del box come accennato non ci va bene, perchè è di una versione troppo aggiornata,
quindi in questo caso verchiamo quella corretta ed eseguiamo un git checkout per posizionarsi alla versione corretta
git checkout v8.6.0
CHIAVE SSH
Creiamo la chiave ssh che ci servirà a vagrant per imporare nella vm
VAGRANT FILE
A questo punto dobbiamo configurare il vagrant file dento la cartella appena creata, copiamo la versione di esempio
Ora configuriamo i seguenti paramenti:
Avremo:
- ip: indirizzo che verrà assegnato alla macchina
- memory: la memoria assegnata alla macchina
- cpus: il numero di cpu assegnate alla macchina
- provider: la tecnologia di virtualizzazione con cui verrà provvisionata la macchina
- keys: la chiave privata che verrà imporata sulla macchina
- folders: qui viene specificata la cartella dove è presente i file della nostra app nel nostro pc da collegare alla macchina virtuale
- sites: qui creeremo i siti con cui possiamo raggiongere la macchina
- database: il nome del db che verrà creato
AVVIO E PROVISIONING
vagrant up
Ora eseguiremo il provisioning, se è la prima volta vagrant scaricherà il box ed eseguitrà una prima configurazione. E’ necessario aprire il terminal nella macchina locale e spostarsi all’interno dei file creati dal box (dove è presente il file yaml in precedenza modificato).
Durante il provisioning verranno preconfigurate tutte le applicazioni necessarie per far girare correttamente il nostro box.
Se il provisioning è già stato fatto, Vagrant oltre ad avviare la macchina virtuale riconfigurerà tutte le interfacce di rete e mapperò le condivisioni impostate.
SPEGNIMENTO
vagrant halt
Tramite questo comando la macchina verrà spenta.
CONNESSIONE SSH
vagrant ssh
A questo punto l’ultimo comando necessario è quello per collegarci alla macchina in ssh.
Eseguendo un ls vediamo la directory mappata nella nostra macchina locale
Quindi ogni modifica che andremmo a fare nel codice nella nostra macchina locale verrò automaticamente acquisita in Vagrant.
CONCLUSIONE
In questo articolo abbiamo visto come creare e utilizzare un ambiente Vagrant, utile per sviluppare in locale in modo semplice e vedere le modifiche senza avere un server web esterno.
Ovviamente chi ha le repo in Git può utilizzare pull e push per potersi gestire meglio lo sviluppo dei progetti.