Introducció a Vagrant
Vagrant és una eina que crea i gestiona màquines virtuals a partir d’un fitxer de text. Descrius com vols la màquina i Vagrant la munta per tu, sempre igual.
Què és Vagrant
Normalment, crear una màquina virtual vol dir obrir un programa de virtualització, triar un sistema operatiu, instal·lar-lo, configurar la xarxa i instal·lar el programari necessari. És un procés lent i difícil de repetir exactament igual.
Vagrant automatitza tot això. Tota la configuració es guarda en un únic fitxer anomenat Vagrantfile, i amb una sola ordre, vagrant up, la màquina es crea, s’arrenca i queda llesta per fer-la servir.
Vagrant no virtualitza per ell mateix. Es limita a donar ordres a un programa de virtualització (anomenat provider), com ara VirtualBox, VMware, libvirt/KVM o Hyper-V.
Per què l’utilitzarem
- Reproduïble: el mateix
Vagrantfilegenera sempre la mateixa màquina. - Ràpid: pots destruir una màquina i tornar-la a crear en pocs minuts.
- Segur per provar: si trenques alguna cosa, esborres la màquina i comences de nou.
- Escalable: amb un sol fitxer pots definir moltes màquines i fer que es comuniquin entre elles.
- Compartible: n’hi ha prou amb passar el
Vagrantfilea una altra persona perquè tingui el mateix entorn.
Com funciona
- VagrantfileDescriu la màquina que vols
- VagrantLlegeix el fitxer i executa les ordres
- ProviderEl programa que crea la VM (p. ex. VirtualBox)
- Màquina virtualLlesta per fer-hi
vagrant ssh
Conceptes que farem servir
| Concepte | Què és |
|---|---|
| Vagrantfile | Fitxer de text (amb sintaxi Ruby) que defineix la màquina: sistema operatiu, memòria, xarxa, carpetes compartides i programari. |
| Box | Imatge base d’un sistema operatiu ja preparada, que Vagrant descarrega i utilitza com a punt de partida (per exemple, una Ubuntu o una Debian). |
| Provider | El programa de virtualització que executa realment la màquina. El més habitual per començar és VirtualBox. |
| Provisioner | Script o eina (shell, Ansible…) que instal·la i configura programari dins la màquina de manera automàtica quan es crea. |
| Carpeta sincronitzada | Carpeta compartida entre el teu ordinador i la màquina virtual. Per defecte, la carpeta del projecte és accessible dins la VM a /vagrant. |
| Xarxa | Manera de connectar la màquina: redirecció de ports, xarxa privada amb IP fixa o xarxa pública. |
Ordres bàsiques
| Ordre | Què fa |
|---|---|
vagrant init | Crea un Vagrantfile inicial al directori actual. |
vagrant up | Crea i arrenca la màquina (i executa el provisioning la primera vegada). |
vagrant ssh | Obre una sessió de terminal dins la màquina. |
vagrant status | Mostra l’estat de les màquines del projecte. |
vagrant halt | Apaga la màquina. |
vagrant suspend / resume | Posa la màquina en pausa i la reprèn. |
vagrant reload | Reinicia la màquina aplicant els canvis del Vagrantfile. |
vagrant provision | Torna a executar els scripts de provisioning en una màquina ja creada. |
vagrant destroy | Elimina la màquina i el seu disc. El Vagrantfile es conserva. |
vagrant global-status | Llista totes les màquines Vagrant del sistema. |
Un Vagrantfile mínim
Aquest és el fitxer més senzill possible. Defineix una màquina Ubuntu amb 2 GB de memòria i 2 processadors:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/jammy64"
config.vm.hostname = "prova"
config.vm.provider "virtualbox" do |vb|
vb.memory = 2048
vb.cpus = 2
end
end
Cada part té una funció clara: config.vm.box indica el sistema operatiu de partida, hostname posa nom a la màquina i el bloc provider ajusta els recursos de la VM.
Cicle de treball habitual
mkdir el-meu-projecte && cd el-meu-projecte
vagrant init ubuntu/jammy64 # crea el Vagrantfile
vagrant up # crea i arrenca la VM
vagrant ssh # entra a la VM
exit # surt de la VM
vagrant halt # apaga la VM
vagrant destroy -f # l'elimina quan ja no la necessitem
Vagrantfile. Les ordres de Vagrant sempre s’executen des d’aquesta carpeta.
Què necessitem tenir instal·lat
- Vagrant, la mateixa eina.
- Un provider, normalment VirtualBox. Segons el sistema operatiu i el processador de l’ordinador (per exemple, en Mac amb Apple Silicon), pot ser necessari un altre proveïdor.
- Un terminal per escriure les ordres i un editor de text per modificar el
Vagrantfile.