Vagrant és una eina de codi lliure desenvolupada per HashiCorp per automatitzar la creació i gestió de màquines virtuals. La podriem classificar dins les eines de DevOps conegudes com a Infraestructure as Code. Vagrant no és un virtualitzador, només automatitza tasques de forma programàtica, pel què necessita que tinguem instal·lat algun provider com VirtualBox o VMware.
La web oficial és https://www.vagrantup.com/
Està pensada per poques màquines i per entorns de desenvolupament i test. Si el què volem és creació de moltes màquines per entorns de producció segurament el què necessitem son eines com Terraform.
Vagrant és particularment útil quan necessitem recrear un entorn molts cops, ja sigui per testejar eines, configuracions, etc. i poder clarificar el típic cas de «en la meva màquina funciona».
Les instruccions oficials les teniu aquí: https://www.vagrantup.com/downloads
Però en Ubuntu sol estar als repositoris i s'instal·la fàcilment amb un clàssic
$ sudo apt install vagrant
Recordeu que Vagrant no virtualitza, sinó que automatitza tasques amb algun virtualitzador provider. Per tant, caldrà que tinguem instal·lat VirtualBox, VMware o similars. En GNU/Linux el més fàcil és instal·lar VirtualBox:
$ sudo apt install virtualbox
Es recomana utilitzar una màquina física Ubuntu 22.04 (LTS) amb
Cada «escenari» de VMs Vagrant necessitarà una carpeta on situar un arxiu d'inici Vagrantfile.
Creem una carpeta i inicialitzem un Vagrantfile amb la imatge ubuntu/focal64 :
$ mkdir -p makines/makina1 $ cd makines/makina1 $ vagrant init ubuntu/jammy64 $ vagrant up
Això hauria de ser prou per posar en marxa la màquina Ubuntu Focal Fossa dins el virtualitzador que tinguem a la nostra màquina host. Ens podem connectar a la màquina acabada de crear amb:
$ vagrant ssh
I ja podrem treballar sobre la nostra màquina :) Per fer un exemple ràpid, instal·larem Apache i visitarem la web creada:
vagrant@ubuntu-focal $ sudo apt update vagrant@ubuntu-focal $ sudo apt install -y apache2 vagrant@ubuntu-focal $ ip address
Amb la darrera instrucció podrem veure la IP de la màquina creada, que probablement sigui una 10.0.2.15. Si esteu fent servir VirtualBox, en la configuració per defecte la xarxa està en NAT, pel què no puc accedir a la màquina que acabo de crear. Per accedir a l'Apache que acabo de crear tinc diverses opcions, per exemple:
Provarem el port forwarding, al Vagrant file ja ens surt un exemple.
Sortim de la shell amb CTRL+D, i editem el Vagrantfile per a fer aquest canvi. Descomentem la línia:
config.vm.network "forwarded_port", guest: 80, host: 8080
També podríem configurar la interfície en modalitat host-only network, sol fer-se d'aquesta manera al Vagrantfile:
config.vm.network "private_network", ip: "192.168.33.110"
Si el VirtualBox ens dona error al crear la xarxa, podem editar la configuració de xarxa de VirtualBox per permetre les IPs de les VMs:
* 0.0.0.0/0 ::/0
I ara reiniciem la màquina amb la nova configuració:
$ vagrant reload
Ara podem accedir a la web de la nova VM mitançant el browser de la màquina host a través del forwarded port:
http://localhost:8080
O bé directament a la IP de la màquina si està en modalitat xarxa interna:
http://192.168.33.110
I si voleu comprovar que realment és la nostra nova màquina, personalitzeu la default page d'Apache:
vagrant@ubuntu-focal:~$ sudo -s root@ubuntu-focal:/home/vagrant# echo "<h1>Maquina vagrant</h1>" > /var/www/html/index.html
Revisiteu la pàgina i… Voilà!
Resum de comandes utilitzades:
vagrant init <box> vagrant up vagrant ssh vagrant reload
Investiga com utilitzar aquestes comandes bàsiques:
vagrant halt vagrant suspend vagrant resume vagrant destroy
Cerca informació per configurar:
vagrant ssh (la info de connexió es mostra amb vagrant ssh-config).
Cerca informació del provider VirtualBox i modifica el Vagrantfile adequadament per:
Fes un Vagrantfile que crei una màquina amb les següents característiques:
phpinfo();phpinfo();Volem fer proves amb Wordpress i automatitzarem la configuració del servei en una VM amb Vagrant.
Requeriments:
Es recomana seguir aquest guió per al script del Vagrantfile:
sed per modificar l'arxiu wp-config.php copiat de wp-config-sample.phpcurl que simuli la introducció de les dades del formulari d'instal·lació que ens facilita Wordpress després de configurar la BD.
Segurament el darrer pas de crear les taules del blog pot ser el menys habitual. El hack recomanat per fer el curl que crearà les taules es pot fer com segueix:
…et voilà!
Crearem un cluster Proxmox (PVE) de 3 nodes amb Vagrant.
castor/proxmox.Recomanacions per al script de creació:
sed o similars:/etc/hosts hi hagi la IP pública del node, no serveix el loopback 127.0.0.1 o similars. Elimineu la línia que diu «nodeX» de /etc/hosts i afegiu la IP del node en qüestió.«. Ens demana introduir la contrasenya d'admin i respondre «yes», per tant serà algo com:pvecm add <ip> -force << EOF <contrasenya> yes EOF