Vagrant és una eina de codi obert creada per HashiCorp que permet crear i gestionar entorns de desenvolupament virtualitzats de manera automatitzada i reproduïble.
En lloc de configurar manualment una màquina virtual cada vegada,
Vagrant et permet descriure l’entorn en un fitxer de text
(Vagrantfile) i aixecar-lo amb una sola ordre.
Vagrant actua com una capa d’abstracció per sobre dels proveïdors de virtualització:
El flux bàsic és
Vagrantfile → vagrant up → Màquina virtual llesta i configuradaVagrantfile — fitxer de configuració en Ruby que defineix la màquina: sistema operatiu, memòria, xarxa, carpetes compartides, scripts de provisió…
Box — imatge base del sistema operatiu (com una
plantilla). Per exemple: ubuntu/focal64, debian/bullseye64. Es descarreguen del catàleg
públic de Vagrant Cloud.
Provisioners — scripts que s’executen automàticament en crear la màquina per instal·lar programari (Shell, Ansible, Puppet, Chef…).
Per al context educatiu de xarxes i sistemes, Vagrant és especialment útil perquè permet aixecar múltiples màquines virtuals interconnectades amb una sola ordre.
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update
sudo apt install vagrantvagrant init ubuntu/jammy64 # Crear un Vagrantfile bàsic
vagrant up # Crear i arrencar la VM
vagrant ssh # Connectar-se per SSH
vagrant halt # Apagar la VM
vagrant suspend # Suspendre (guardar estat)
vagrant resume # Reprendre
vagrant reload # Reiniciar i reaplicar config
vagrant provision # Tornar a executar els provisioners
vagrant destroy # Eliminar la VM completament
vagrant status # Estat de la VM
vagrant global-status # Estat de totes les VMs del sistemaÉs un fitxer Ruby que descriu la màquina virtual. Aquest és un exemple de configuració. Pots trobar més informació a Documentació de Vagrantfile
Vagrant.configure("2") do |config|
# Defineix la imatge (box) base que utilitzarà
config.vm.box = "ubuntu/jammy64"
# Configura l'adreça IP privada
config.vm.network "private_network", ip: "192.168.56.10"
# Assigna recursos de maquinari
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
vb.cpus = 2
end
# Executa un script bash automàticament durant el primer desplegament
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y apache2
SHELL
end
Catàleg de màquines disponibles