Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| 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, | Vagrant és particularment útil quan necessitem recrear un entorn molts cops, ja sigui per testejar eines, configuracions, | ||
| + | |||
| + | Articles relacionats: | ||
| + | * [[vagrant ubuntu libvirt|Vagrant amb Libvirt a Ubuntu/ | ||
| {{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:// | Les instruccions oficials les teniu aquí: https:// | ||
| - | Però en Ubuntu sol estar als repositoris | + | Sol estar disponible |
| - | $ sudo apt install vagrant | + | |
| - | + | ||
| - | Recordeu que Vagrant no virtualitza, sinó que automatitza tasques amb algun virtualitzador // | + | |
| - | $ 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ó | + | |
| - | * Instal·lar Vagrant segons les [[https:// | + | |
| - | + | ||
| - | </ | + | |
| \\ | \\ | ||
| 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' | ||
| + | |||
| + | A partir d' | ||
| + | |||
| + | Sembla que l' | ||
| + | <code ruby> | ||
| + | Vagrant.configure(" | ||
| + | config.vm.box = " | ||
| + | config.vm.provision " | ||
| + | chsh -s /bin/bash vagrant | ||
| + | SHELL | ||
| + | end | ||
| + | </ | ||
| + | </ | ||
| \\ | \\ | ||
| Línia 103: | Línia 112: | ||
| ===== Exercicis ===== | ===== Exercicis ===== | ||
| - | ==== Exercici 1 ==== | + | ==== Exercici |
| <WRAP todo> | <WRAP todo> | ||
| Investiga com utilitzar aquestes comandes bàsiques: | Investiga com utilitzar aquestes comandes bàsiques: | ||
| Línia 112: | Línia 121: | ||
| </ | </ | ||
| - | ==== Exercici 2 ==== | + | ==== Exercici |
| <WRAP todo> | <WRAP todo> | ||
| Cerca informació per configurar: | Cerca informació per configurar: | ||
| Línia 121: | Línia 130: | ||
| </ | </ | ||
| - | ==== Exercici 3 ==== | + | ==== Exercici |
| <WRAP todo> | <WRAP todo> | ||
| Cerca informació del // | Cerca informació del // | ||
| Línia 130: | Línia 139: | ||
| </ | </ | ||
| - | ==== Exercici 4 ==== | + | ==== Exercici |
| + | <WRAP todo> | ||
| + | Configura una VM: | ||
| + | - Amb Apache2 | ||
| + | - Amb una pàgina de benvinguda personalitzada senzilla, que mostri:< | ||
| + | < | ||
| + | - Que mostri la web als ports 80 i 8080 de la VM | ||
| + | - Que mostri la info de php a la pàgina ''/ | ||
| + | </ | ||
| + | |||
| + | ==== 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: | ||
| </ | </ | ||
| - | ==== Exercici | + | ==== Exercici |
| <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' | * Utilitzar l' | ||
| * 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 " | + | * Elaborar la comanda curl per crear les taules. |
| + | * Ha de ser amb el mètode //post//, apuntant a '' | ||
| + | * Separeu les dades del formulari de la URL i les afegiu amb '' | ||
| ...et voilà! | ...et voilà! | ||
| Línia 178: | Línia 199: | ||
| </ | </ | ||
| - | ==== Exercici | + | |
| + | \\ | ||
| + | |||
| + | ===== Aprofundint: | ||
| + | |||
| + | Vagrant utilitza scripts en llenguatge Ruby. En realitat no utilitza funcions molt sofisticades d' | ||
| + | |||
| + | Pots crear un script ruby i executar-lo amb l' | ||
| + | |||
| + | <file ruby nom.rb> | ||
| + | # | ||
| + | |||
| + | puts "Com et dius?" | ||
| + | nom = gets.chomp | ||
| + | |||
| + | puts "Hola, # | ||
| + | </ | ||
| + | |||
| + | Guarda l' | ||
| + | $ 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 # | ||
| + | end | ||
| + | |||
| + | |||
| + | # iterar un array | ||
| + | |||
| + | nodes = [ " | ||
| + | nodes.each_with_index do |name, i| | ||
| + | puts "VM num #{i} : # | ||
| + | end | ||
| + | |||
| + | |||
| + | # iterar un diccionari | ||
| + | |||
| + | nodes = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | nodes.each do |name, opts| | ||
| + | puts "VM # | ||
| + | puts " | ||
| + | puts " | ||
| + | puts " | ||
| + | end | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ==== Crear diverses VMs en un arxiu Vagrant ==== | ||
| + | Per crear diverses VMs en un arxiu es fa mitjançant la crida '' | ||
| + | |||
| + | <file ruby Vagrantfile> | ||
| + | Vagrant.configure(" | ||
| + | config.vm.box = " | ||
| + | |||
| + | config.vm.define " | ||
| + | web.vm.hostname = " | ||
| + | web.vm.network " | ||
| + | end | ||
| + | |||
| + | config.vm.define " | ||
| + | db.vm.hostname = " | ||
| + | db.vm.network " | ||
| + | end | ||
| + | end | ||
| + | </ | ||
| + | |||
| + | I si ho volem fer amb un loop: | ||
| + | |||
| + | <file ruby Vagrantfile> | ||
| + | Vagrant.configure(" | ||
| + | config.vm.box = " | ||
| + | |||
| + | nodes = { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | nodes.each do |name, ip| | ||
| + | config.vm.define name do |node| | ||
| + | node.vm.hostname = name | ||
| + | node.vm.network " | ||
| + | end | ||
| + | end | ||
| + | end | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== Mes exercicis ===== | ||
| + | |||
| + | ==== Exercici | ||
| <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. | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ==== 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' | ||
| + | - 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: | ||
| + | |||
| + | Recomanacions per al script de creació: | ||
| + | |||
| + | - Es poden aprovisionar diversos scripts, s' | ||
| + | - No utilitzar "apt install" | ||
| + | - Arranjar el fitxer /etc/hosts (el que ve a la imatge no funciona bé per clusteritzar). Ho podeu fer amb la comanda '' | ||
| + | * Eliminar la linia del /etc/hosts que diu " | ||
| + | * Proxmox requereix que a l' | ||
| + | - 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 < | ||
| + | - 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' | ||
| + | < | ||
| + | yes | ||
| + | EOF | ||
| + | </ | ||
| </ | </ | ||