bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


vagrant

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
vagrant [2025/10/22 14:51]
enric_mieza_sanchez [Exercici 5]
vagrant [2026/10/13 18:29] (actual)
enric_mieza_sanchez [Exercici 1.6: Wordpress]
Línia 9: Línia 9:
  
 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". 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".
 +
 +Articles relacionats:
 +  * [[vagrant ubuntu libvirt|Vagrant amb Libvirt a Ubuntu/Debian]]
  
 {{tag> #FpInfor #Ciber #CiberMp03 #Ceti #CetiMp03 #Asix Vagrant DevOps}} {{tag> #FpInfor #Ciber #CiberMp03 #Ceti #CetiMp03 #Asix Vagrant DevOps}}
Línia 15: Línia 18:
 Les instruccions oficials les teniu aquí: https://www.vagrantup.com/downloads 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 +Sol estar disponible als repositoris de les distribucions de Linux, però sempre convé instal·lar la versió que ens recomanen a la web de Vagrant.
-  $ 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 +
- +
-<WRAP important> +
-Es recomana utilitzar una màquina física Ubuntu 22.04 (LTS) amb +
-  * VirtualBox 7.0 (no és el de la versió dels repositoris de Ubuntu 22.04, cal anar a virtualbox.org) +
-  * Instal·lar Vagrant segons les [[https://developer.hashicorp.com/vagrant/downloads?ajs_aid=5466580f-2ad1-4fc6-812e-d32380b97335&product_intent=vagrant|indicacions de la web oficial vagrantup.com]], amb els seus propis repositoris APT. +
- +
-</WRAP> +
  
 \\ \\
Línia 54: Línia 45:
   vagrant@ubuntu-focal $ sudo apt install -y apache2   vagrant@ubuntu-focal $ sudo apt install -y apache2
   vagrant@ubuntu-focal $ ip address   vagrant@ubuntu-focal $ ip address
 +
 +<WRAP important>
 +=== Tancament de la Vagrant Cloud o HCP Vagrant Registry ===
 +
 +Com a conseqüència de la compra de l'empresa HashiCorp per part d'IBM el febrer de 2025, **la Vagrant Cloud (o HCP Vagrant Registry) es tancarà el Gener de 2027**. De fet, des de l'1 d'Octubre de 2026 ja no es podran pujar més imatges a aquest repositori públic.
 +
 +A partir d'aquestes dates **caldrà que cada usuari hostatgi les seves imatges en servidors propis**. Molts proveïdors de Vagrant boxes com generic, Roboxes.org, etc. han deixat de publicar i actualitzar imatges i ens podem trobar amb errors si les utilitzem.
 +
 +Sembla que l'usuari ''cloud-image'' segueix actualitzant les imatges (al menys fins a Setembre de 2026). Prova de fer els exercicis amb la imatge ''cloud-image/debian-13''. Cal, però, afegir una instrucció per configurar bash com a //shell// de l'usuari vagrant com es mostra en aquest arxiu (per defecte porta sh):
 +<code ruby>
 +Vagrant.configure("2") do |config|
 +  config.vm.box = "cloud-image/debian-13"
 +  config.vm.provision "shell", inline: <<-SHELL
 +    chsh -s /bin/bash vagrant
 +  SHELL
 +end
 +</code>
 +</WRAP>
  
 \\ \\
Línia 103: Línia 112:
  
 ===== Exercicis ===== ===== Exercicis =====
-==== Exercici 1 ====+==== Exercici 1.1 ====
 <WRAP todo> <WRAP todo>
 Investiga com utilitzar aquestes comandes bàsiques: Investiga com utilitzar aquestes comandes bàsiques:
Línia 112: Línia 121:
 </WRAP> </WRAP>
  
-==== Exercici 2 ====+==== Exercici 1.2 ====
 <WRAP todo> <WRAP todo>
 Cerca informació per configurar: Cerca informació per configurar:
Línia 121: Línia 130:
 </WRAP> </WRAP>
  
-==== Exercici 3 ====+==== Exercici 1.3 ====
 <WRAP todo> <WRAP todo>
 Cerca informació del //provider// VirtualBox i modifica el ''Vagrantfile'' adequadament per: Cerca informació del //provider// VirtualBox i modifica el ''Vagrantfile'' adequadament per:
Línia 130: Línia 139:
 </WRAP> </WRAP>
  
-==== Exercici 4 ====+==== Exercici 1.4 ==== 
 +<WRAP todo> 
 +Configura una VM: 
 +  - Amb Apache2 
 +  - Amb una pàgina de benvinguda personalitzada senzilla, que mostri:<code html> 
 +<h1>VM server</h1></code> 
 +  - Que mostri la web als ports 80 i 8080 de la VM 
 +  - Que mostri la info de php a la pàgina ''/info.php''. Això s'aconsegueix fàcilment amb la instrucció ''phpinfo()'' que volca tots els paràmetres ben formatats. 
 +</WRAP> 
 + 
 +==== Exercici 1.5: Apache, PHP i userdir ====
 <WRAP todo> <WRAP todo>
 Fes un Vagrantfile que crei una màquina amb les següents característiques: Fes un Vagrantfile que crei una màquina amb les següents característiques:
Línia 143: Línia 162:
 </WRAP> </WRAP>
  
-==== Exercici 5: Wordpress ====+==== Exercici 1.6: Wordpress ====
 <WRAP todo> <WRAP todo>
 Volem fer proves amb Wordpress i automatitzarem la configuració del servei en una VM amb Vagrant. Volem fer proves amb Wordpress i automatitzarem la configuració del servei en una VM amb Vagrant.
Línia 172: Línia 191:
   * Utilitzar l'inspector de HTML de les eines de desenvolupador del navegador, i modificar el<code html><form method="post"></code> per <code html><form method="get"></code>   * Utilitzar l'inspector de HTML de les eines de desenvolupador del navegador, i modificar el<code html><form method="post"></code> per <code html><form method="get"></code>
   * Enviar el formulari. Les dades que necessitem les tenim davant nostre a la URL.   * Enviar el formulari. Les dades que necessitem les tenim davant nostre a la URL.
-  * Elaborar la comanda curl amb -X POST i -d "...les-dades-que-apareixen-a-la-URL-dp-del-&..."+  * Elaborar la comanda curl per crear les taules. 
 +    * Ha de ser amb el mètode //post//, apuntant a ''install.php?step=2''. En definitiva:<code>curl -X POST "http://192.168.33.10/wp-admin/install.php?step=2"</code> 
 +    * Separeu les dades del formulari de la URL i les afegiu amb ''-d "...les-dades-que-apareixen-a-la-URL-dp-del-&..."''
  
 ...et voilà! ...et voilà!
Línia 178: Línia 199:
 </WRAP> </WRAP>
  
-==== Exercici 6 ====+ 
 +\\ 
 + 
 +===== Aprofundint: scripts Ruby ===== 
 + 
 +Vagrant utilitza scripts en llenguatge Ruby. En realitat no utilitza funcions molt sofisticades d'aquest llenguatge, sinó que el que es fa és crear una configuració d'objectes que després Vagrant pot interpretar per a crear les diverses  per a realitzar les configuracions de les VMs. 
 + 
 +Pots crear un script ruby i executar-lo amb l'intèrpret de Ruby, per exemple: 
 + 
 +<file ruby nom.rb> 
 +#!/usr/bin/env ruby 
 + 
 +puts "Com et dius?" 
 +nom = gets.chomp 
 + 
 +puts "Hola, #{nom}!" 
 +</file> 
 + 
 +Guarda l'arxiu i executa'l amb: 
 +  $ ruby nom.rb 
 + 
 +\\ 
 + 
 +==== Loops en Ruby ==== 
 + 
 +Els //loops// en Ruby (ens caldran pels scripts Vagrant) es poden fer de moltes formes, de les quals les més típiques podrien ser aquestes: 
 + 
 +<file ruby loops.rb> 
 +# un bucle indexat 
 + 
 +(1..5).each do |n| 
 +  puts "volta #{n}" 
 +end 
 + 
 + 
 +# iterar un array 
 + 
 +nodes = [ "web", "db", "storage" ] 
 +nodes.each_with_index do |name, i| 
 +  puts "VM num #{i} : #{name}" 
 +end 
 + 
 + 
 +# iterar un diccionari 
 + 
 +nodes = { 
 +  "web"     => { ip: "192.168.33.10", memory: 1024, cpus: 1 }, 
 +  "db"      => { ip: "192.168.33.11", memory: 2048, cpus: 2 }, 
 +  "storage" => { ip: "192.168.33.12", memory: 512,  cpus: 1 } 
 +} 
 + 
 +nodes.each do |name, opts| 
 +  puts "VM #{name}" 
 +  puts "\tcpus:\t" + opts[:cpus].to_s 
 +  puts "\tmemory:\t" + opts[:memory].to_s 
 +  puts "\tip:\t" + opts[:ip] 
 +end 
 +</file> 
 + 
 +\\ 
 + 
 +==== Crear diverses VMs en un arxiu Vagrant ==== 
 +Per crear diverses VMs en un arxiu es fa mitjançant la crida ''config.vm.define'': 
 + 
 +<file ruby Vagrantfile> 
 +Vagrant.configure("2") do |config| 
 +  config.vm.box = "ubuntu/jammy64" 
 + 
 +  config.vm.define "web" do |web| 
 +    web.vm.hostname = "web" 
 +    web.vm.network "private_network", ip: "192.168.33.10" 
 +  end 
 + 
 +  config.vm.define "db" do |db| 
 +    db.vm.hostname = "db" 
 +    db.vm.network "private_network", ip: "192.168.33.11" 
 +  end 
 +end 
 +</file> 
 + 
 +I si ho volem fer amb un loop: 
 + 
 +<file ruby Vagrantfile> 
 +Vagrant.configure("2") do |config| 
 +  config.vm.box = "ubuntu/jammy64" 
 + 
 +  nodes = { 
 +    "web" => "192.168.33.10", 
 +    "db"  => "192.168.33.11" 
 +  } 
 + 
 +  nodes.each do |name, ip| 
 +    config.vm.define name do |node| 
 +      node.vm.hostname = name 
 +      node.vm.network "private_network", ip: ip 
 +    end 
 +  end 
 +end 
 +</file> 
 + 
 +\\ 
 + 
 +===== Mes exercicis ===== 
 + 
 +==== Exercici 2.1: Aulari ====
 <WRAP todo> <WRAP todo>
 +
 +Crea una simulació d'un aulari:
 +  * 3 aules, amb 3 VMs cadascuna.
 +  * Cada aula té una xarxa separada
 +  * Cada VM té 512 MB de RAM
 +  * Crea un node **master** que vegi totes les aules.
 +  * Configura les màquines perquè la master pugui entrar per SSH a qualsevol de les VMs.
 +</WRAP>
 +
 +\\
 +
 +==== Exercici 2.2: Cluster Proxmox ====
 +<WRAP todo>
 +
 +Crearem un cluster Proxmox (PVE) de 3 nodes amb Vagrant.
 +
 +  - Partirem d'una imatge de Proxmox 9 de l'usuari ''castor/proxmox''.
 +  - Ha de tenir suficient RAM (4G) i CPU (2) per node (PVE requereix recursos)
 +  - Les VMs han de tenir les adreces 192.168.40.21 , .22 i .23
 +  - Documentació disponible:
 +    * Instal·lació de Proxmox per a Debian 12 per a la configuració bàsica dels nodes.
 +    * PVE Cluster Manager per la clusterització dels nodes.
 +  - Configurar NFS per TCP si dona error de UDP (nfs_udp:false).
 +
 +Recomanacions per al script de creació:
 +
 +  - Es poden aprovisionar diversos scripts, s'executaran seqüencialment.
 +  - No utilitzar "apt install" ("apt" falla en alguns casos) sinó "apt-get install -y" (-y de "yes" evita que demani confirmació).
 +  - Arranjar el fitxer /etc/hosts (el que ve a la imatge no funciona bé per clusteritzar). Ho podeu fer amb la comanda ''sed'' o similars:
 +    * Eliminar la linia del /etc/hosts que diu "pve.example.com"
 +    * Proxmox requereix que a l'arxiu ''/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ó.
 +  - Fer reboot afegint el paràmetres reboot:true al provision shell del script (si ho fem dins del script falla pq no espera el reinici).
 +  - Al node1 caldrà crear el cluster amb la comanda "pvecm create mycluster"
 +  - A la resta de nodes cal esperar (sleep) i anar-los afegint seqüencialment al cluster iniciat al node1. Esperar 10" x <numero_de_node>
 +  - Per automatitzar ens convé buscar sempre versions de les instruccions que no siguin interactives. En el cas que no tinguem mes remei, com passa a l'afegir els nodes amb "pvecm add <ip>" es poden introduir els paràmetres amb la redirecció ''<<''. Ens demana introduir la contrasenya d'admin i respondre "yes", per tant serà algo com:<code bash>pvecm add <ip> -force << EOF
 +<contrasenya>
 +yes
 +EOF
 +</code>
  
 </WRAP> </WRAP>
  
vagrant.1761144680.txt.gz · Darrera modificació: 2025/10/22 14:51 per enric_mieza_sanchez