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 [2026/09/09 15:55]
enric_mieza_sanchez [Exercici 6: Cluster Proxmox]
vagrant [2026/10/13 18:29] (actual)
enric_mieza_sanchez [Exercici 1.6: Wordpress]
Línia 18: 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 65: Línia 53:
 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. 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 ser que el proveïdor ''bento'' sí que les seguirà proveint, caldrà veure amb quin mecanisme les publica.+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> </WRAP>
  
Línia 116: 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 125: Línia 121:
 </WRAP> </WRAP>
  
-==== Exercici 2 ====+==== Exercici 1.2 ====
 <WRAP todo> <WRAP todo>
 Cerca informació per configurar: Cerca informació per configurar:
Línia 134: 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 143: Línia 139:
 </WRAP> </WRAP>
  
-==== Exercici 4 ====+==== Exercici 1.4 ====
 <WRAP todo> <WRAP todo>
 Configura una VM: Configura una VM:
Línia 149: Línia 145:
   - Amb una pàgina de benvinguda personalitzada senzilla, que mostri:<code html>   - Amb una pàgina de benvinguda personalitzada senzilla, que mostri:<code html>
 <h1>VM server</h1></code> <h1>VM server</h1></code>
-  - Que mostri la web als ports 80 i 8080+  - 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> </WRAP>
  
-==== Exercici 5: Apache, PHP i userdir ====+==== 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 165: Línia 162:
 </WRAP> </WRAP>
  
-==== Exercici 6: 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 194: 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 200: Línia 199:
 </WRAP> </WRAP>
  
-==== Exercici 7: Cluster Proxmox ====+ 
 +\\ 
 + 
 +===== 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> 
 + 
 +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> <WRAP todo>
  
Línia 228: Línia 344:
 EOF EOF
 </code> </code>
- 
  
 </WRAP> </WRAP>
  
vagrant.1788969355.txt.gz · Darrera modificació: 2026/09/09 15:55 per enric_mieza_sanchez