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 [2022/09/13 18:02]
enrique_mieza_sanchez
vagrant [2025/10/22 15:00] (actual)
enric_mieza_sanchez [Exercici 4]
Línia 20: Línia 20:
 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: 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   $ 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 29: Línia 37:
 \\ \\
  
-===== Primeres passes =====+===== Creant una VM =====
 Cada "escenari" de VMs Vagrant necessitarà una carpeta on situar un arxiu d'inici ''Vagrantfile''. Cada "escenari" de VMs Vagrant necessitarà una carpeta on situar un arxiu d'inici ''Vagrantfile''.
  
Línia 35: Línia 43:
   $ mkdir -p makines/makina1   $ mkdir -p makines/makina1
   $ cd makines/makina1   $ cd makines/makina1
-  $ vagrant init ubuntu/focal64+  $ vagrant init ubuntu/jammy64
   $ vagrant up   $ vagrant up
  
Línia 47: Línia 55:
   vagrant@ubuntu-focal $ ip address   vagrant@ubuntu-focal $ ip address
  
 +\\
 +
 +===== Xarxa =====
 Amb la darrera instrucció podrem veure la IP de la màquina creada, que probablement sigui una 10.0.2.15. 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: 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:
Línia 52: Línia 63:
   * Fent un //port forwarding// a la màquina //host//.   * Fent un //port forwarding// a la màquina //host//.
  
 +==== Port forwarding ====
 Provarem el //port forwarding//, al Vagrant file ja ens surt un exemple. Provarem el //port forwarding//, al Vagrant file ja ens surt un exemple.
  
Línia 57: Línia 69:
   config.vm.network "forwarded_port", guest: 80, host: 8080   config.vm.network "forwarded_port", guest: 80, host: 8080
  
 +==== Xarxa privada ====
 +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 [[https://www.virtualbox.org/manual/ch06.html|editar la configuració de xarxa de VirtualBox]] per permetre les IPs de les VMs:
 +<file txt /etc/vbox/networks.conf>
 +* 0.0.0.0/0 ::/0
 +</file>
 +
 +==== Accedint els serveis ====
 I ara reiniciem la màquina amb la nova configuració: I ara reiniciem la màquina amb la nova configuració:
   $ vagrant reload   $ vagrant reload
  
-Ara podem accedir a la web de la nova VM mitançant el //browser// de la màquina //host//:+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   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: I si voleu comprovar que realment és la nostra nova màquina, personalitzeu la //default page// d'Apache:
Línia 78: Línia 103:
  
 ===== Exercicis ===== ===== Exercicis =====
-<WRAP todo> 
 ==== Exercici 1 ==== ==== Exercici 1 ====
 +<WRAP todo>
 Investiga com utilitzar aquestes comandes bàsiques: Investiga com utilitzar aquestes comandes bàsiques:
   vagrant halt   vagrant halt
Línia 87: Línia 112:
 </WRAP> </WRAP>
  
-<WRAP todo> 
 ==== Exercici 2 ==== ==== Exercici 2 ====
 +<WRAP todo>
 Cerca informació per configurar: Cerca informació per configurar:
   - El //hostname// de la màquina virtualitzada (anomena-la, per exemple, "zeus").   - El //hostname// de la màquina virtualitzada (anomena-la, per exemple, "zeus").
Línia 96: Línia 121:
 </WRAP> </WRAP>
  
-<WRAP todo> 
 ==== Exercici 3 ==== ==== Exercici 3 ====
 +<WRAP todo>
 Cerca informació del //provider// VirtualBox i modifica el ''Vagrantfile'' adequadament per: Cerca informació del //provider// VirtualBox i modifica el ''Vagrantfile'' adequadament per:
   - Eliminar la interfície gràfica.   - Eliminar la interfície gràfica.
Línia 105: Línia 130:
 </WRAP> </WRAP>
  
 +==== Exercici 4: Apache, PHP i userdir ====
 <WRAP todo> <WRAP todo>
-==== Exercici 4 ==== 
 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:
   - Debian darrera versió.   - Debian darrera versió.
-  - Que s'anomeni **"gaspache"** com a //hostname// i també com a nom de màquina en el VirtualBox.+  - Que tingui com a //hostname// el teu nom i també com a nom de màquina en el VirtualBox.
   - Amb un Apache i PHP preinstal·lat.   - Amb un Apache i PHP preinstal·lat.
   - Que redirigeixi el port 80 de la web d'Apache al port 9090 de la màquina //host//.   - Que redirigeixi el port 80 de la web d'Apache al port 9090 de la màquina //host//.
Línia 118: Línia 143:
 </WRAP> </WRAP>
  
 +==== Exercici 5: Wordpress ====
 +<WRAP todo>
 +Volem fer proves amb Wordpress i automatitzarem la configuració del servei en una VM amb Vagrant.
 +
 +Requeriments:
 +
 +  - El Wordpress ha de ser la darrera versió en català.
 +  - Ha d'estar preinstal·lat amb les taules creades i un usuari vagrant/vagrant.
 +  - El nom del blog ha de ser "El meu blog vagrant".
 +  - Ha de permetre que es carreguin imatges.
 +
 +Es recomana seguir aquest guió per al script del Vagrantfile:
 +
 +  - Instal·lar dependències (apache, mariadb, etc.).
 +  - Crear usuari, bd i permisos a mariadb.
 +  - Descarregar arxiu ZIP de Wordpress en català i descomprimir.
 +  - Configurar wp-config.php amb credencials per a BD (a partir de wp-config-sample.php).
 +  - Es recomana utilitzar la comanda ''sed'' per modificar l'arxiu ''wp-config.php'' copiat de ''wp-config-sample.php''
 +  - Ajustar permisos per a les càrregues d'arxius com imatges.
 +  - Crear taules del blog i configurar usuari vagrant/vagrant. Es pot solventar de diverses formes:
 +    * Amb una crida ''curl'' que simuli la introducció de les dades del formulari d'instal·lació que ens facilita Wordpress després de configurar la BD.
 +    *Amb la utilitat via comandes wp-cli.org
 +
 +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:
 +
 +  * Accedir a la web d'instal·lació.
 +  * Introduir les dades
 +  * 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.
 +  * Elaborar la comanda curl amb -X POST i -d "...les-dades-que-apareixen-a-la-URL-dp-del-&..."
 +
 +...et voilà!
 +
 +</WRAP>
 +
 +==== Exercici 6: 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>
  
vagrant.1663092149.txt.gz · Darrera modificació: 2022/09/13 18:02 per enrique_mieza_sanchez