1. Coneixement i configuració dels paràmetres del fitxer Vagrantfile
Tots els membres de l’equip han de conèixer els paràmetres del fitxer Vagrantfile i saber com configurar-los. A continuació es mostren els principals paràmetres utilitzats:
- config.vm.box: Defineix la imatge base del sistema operatiu que s’utilitzarà.
- config.vm.hostname: Estableix el nom de la màquina virtual.
- config.vm.network: Configura la xarxa de la màquina virtual, pot ser una xarxa privada o pública.
- config.vm.provision: Permet executar scripts provisionals per configurar la màquina després d’haver estat creada.
Exemple de configuració:
Vagrant.configure("2") do |config|
config.vm.box = "debian"
config.vm.hostname = "debian"
config.vm.network "private_network", type: "dhcp"
config.vm.provision "shell", inline: <<-SHELL /sbin/ip route del default /sbin/ip route add default via 192.168.201.33 dev eth1 SHELL end
2. Gestió de màquines virtuals amb Vagrant (up, halt, status)
Els membres de l’equip han de saber com gestionar màquines virtuals amb Vagrant mitjançant les ordres bàsiques següents:
- vagrant up: Crea i inicia la màquina virtual.
- vagrant halt: Atura la màquina virtual.
- vagrant status: Mostra l’estat actual de la màquina virtual.
Exemples d’ús:
[08:52:13][Vagrant][dperez@smx2-207]-$ vagrant status
Current machine states:
debian poweroff (virtualbox)
Router poweroff (virtualbox)
windows10 poweroff (virtualbox)
ubuntu poweroff (virtualbox)
This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.
[08:52:19][Vagrant][dperez@smx2-207]-$ vagrant up Router
Bringing machine 'Router' up with 'virtualbox' provider...
==> Router: Clearing any previously set forwarded ports...
==> Router: Clearing any previously set network interfaces...
==> Router: Specific bridge 'true' not found. You may be asked to specify
==> Router: which network to bridge to.
==> Router: Preparing network interfaces based on configuration...
Router: Adapter 1: nat
Router: Adapter 2: intnet
Router: Adapter 3: bridged
==> Router: Forwarding ports...
Router: 22 (guest) => 2222 (host) (adapter 1)
==> Router: Booting VM...
==> Router: Waiting for machine to boot. This may take a few minutes...
Router: SSH address: 127.0.0.1:2222
Router: SSH username: vagrant
Router: SSH auth method: private key
==> Router: Machine booted and ready!
==> Router: Checking for guest additions in VM...
==> Router: Setting hostname...
==> Router: Configuring and enabling network interfaces...
==> Router: Mounting shared folders...
Router: /vagrant => /home/dperez/Documents/Vagrant
==> Router: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> Router: flag to force provisioning. Provisioners marked to run always will still run.
[08:53:01][Vagrant][dperez@smx2-207]-$ vagrant halt
==> Router: Attempting graceful shutdown of VM...
3. Ús del fitxer Vagrantfile per a totes les configuracions de la màquina virtual (HW i SW)
El fitxer Vagrantfile s’utilitza per configurar tant el maquinari (HW) com el programari (SW) de la màquina virtual. Això inclou la configuració de xarxes, la instal·lació de paquets necessaris i la configuració de serveis.
Exemple de Vagrantfile complet:
Vagrant.configure("2") do |config|
# Configuración de Debian (LDAP)
config.vm.define "LDAP" do |ldap|
ldap.vm.box = "debian"
ldap.vm.hostname = "ldap"
ldap.vm.network "private_network", type: "dhcp", virtualbox__intnet: true, mac: "080027D14F66"
ldap.vm.provision "shell", inline: <<-SHELL
# /sbin/ip route del default
# /sbin/ip route add default via 192.168.201.49 dev eth1
SHELL
end
# Configuración de Rocky Linux (Router)
config.vm.define "Router" do |router|
router.vm.box = "rocky"
router.vm.hostname = "router"
router.vm.network "private_network", ip: "192.168.201.49", netmask: "255.255.255.248", virtualbox__intnet: true, mac: "080027B2343C"
router.vm.network "public_network", ip: "172.25.205.12", netmask: "255.255.0.0", bridge: true
router.vm.provision "shell", inline: <<-SHELL
# /sbin/ip route add 192.168.201.32/28 via 172.25.207.12
SHELL
end
# Configuración de Debian (NFS)
config.vm.define "NFS" do |nfs|
nfs.vm.box = "debian"
nfs.vm.hostname = "nfs"
nfs.vm.network "private_network", type: "dhcp", virtualbox__intnet: true, mac: "080027D34F77"
nfs.vm.provision "shell", inline: <<-SHELL
# /sbin/ip route del default
# /sbin/ip route add default via 192.168.201.49 dev eth1
SHELL
end