bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


vagrant_ubuntu_libvirt

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_ubuntu_libvirt [2024/11/25 20:09]
enric_mieza_sanchez [Instal·lació en Ubuntu]
vagrant_ubuntu_libvirt [2026/02/17 23:39] (actual)
enric_mieza_sanchez [Compartir carpetes amb viriofsd]
Línia 1: Línia 1:
 ====== Vagrant amb Libvirt en Ubuntu ====== ====== Vagrant amb Libvirt en Ubuntu ======
  
-Libvirt i KVM son unes biblioteques de virtualització molt eficients per treballar, en especial quan ho fem de forma automatitzada, com en el cas de Vagrant. KVM és emprada per distribucions tan potents com Proxmox.+El sistema de virtualització format per QEMU, KVM i libvirt és molt eficient per treballar, en especial quan ho fem de forma automatitzada, com en el cas de Vagrant. KVM és emprada per distribucions tan potents com Proxmox i, en general, és la opció més adoptada pels grans proveïdors ja que és codi lliure molt provat i robust, i que permet estalviar costos de llicències.
  
-[[Vagrant]] és una eina d'automatització d'infraestructura, també conegut com a IaC.+En aquest sistema tenim: 
 +  * QEMU: motor de virtualització 
 +  * KVM o Kernel Virtual Machine : acceleració de la virtualització 
 +  * libvirt: emulació dels perifèrics
  
-En Ubuntu, el més habitual sol ser treballar Vagrant amb VirtualBox, però la configuració amb Libvirt té molts avantatges, en particular la velocitat.+[[Vagrant]] és una eina d'automatització d'infraestructura, també conegut com a IaC o Infrastructure as Code. 
 + 
 +En Ubuntu, el més habitual sol ser treballar Vagrant amb VirtualBox, però la configuració amb el proveïdor ''libvirt'' té molts avantatges, en particular la velocitat.
  
 \\ \\
  
-===== Instal·lació en Ubuntu =====+===== Instal·lació en Debian/Ubuntu =====
 Tenim [[https://bizanosa.com/ubuntu-debian-install-libvert-for-vagrant/|aquesta referència]]. Tenim [[https://bizanosa.com/ubuntu-debian-install-libvert-for-vagrant/|aquesta referència]].
  
Línia 15: Línia 20:
  
   - [[https://developer.hashicorp.com/vagrant/install?product_intent=vagrant#linux|Instal·la Vagrant com indica el fabricant HashiCorp a la seva web]].   - [[https://developer.hashicorp.com/vagrant/install?product_intent=vagrant#linux|Instal·la Vagrant com indica el fabricant HashiCorp a la seva web]].
-  - Instal·la Libvirt i la interfície gràfica virt-manager:<code bash>sudo apt install libvirt-daemon virt-manager nfs-common</code> +  - Instal·la Libvirt i la interfície gràfica virt-manager:<code bash>sudo apt install libvirt-daemon virt-manager nfs-kernel-server</code> 
-  - Instal·la NFS per tal que Vagrant pugui gestionar l es carpetes compartides amb Libvirt (en Windows això no funciona).<code bash>sudo apt install nfs-common</code>+  - Instal·la NFS per tal que Vagrant pugui gestionar l es carpetes compartides amb Libvirt (en Windows això no funciona).<code bash>sudo apt install nfs-kernel-server</code> 
 +  - Afegeix el teu usuari al grup ''libvirt'':<code>sudo adduser <usuari> libvirt</code>
   - Reinicia la màquina perquè l'usuari principal pugui gestionar Libvirt.<code bash>sudo reboot</code>   - Reinicia la màquina perquè l'usuari principal pugui gestionar Libvirt.<code bash>sudo reboot</code>
   - Engega la interfície gràfica:<code>Dash -> virt</code>   - Engega la interfície gràfica:<code>Dash -> virt</code>
 +  - Instal·la les eines de desenvolupament per a poder compilar el plugin:<code bash>sudo apt install libvirt-dev ruby-dev make gcc</code>
   - Instal·la els plugins de Vagrant que permeten gestionar Libvirt.<code bash>vagrant plugin install vagrant-libvirt</code>   - Instal·la els plugins de Vagrant que permeten gestionar Libvirt.<code bash>vagrant plugin install vagrant-libvirt</code>
-  - Prova un configuració mínima: **ULL! et demanarà la password de sudo**<code bash> + 
-cd /el/meu/projecte/vagrant +Ara ja hauries de tenir la instrucció ''vagrant'' disponible al terminal. 
-vagrant init debian/bookworm64+ 
 +\\ 
 +===== Crea VMs amb Vagrant ===== 
 + 
 +Provarem una configuració mínima per crear una VM amb Vagrant: 
 + 
 +  Crea una carpeta per cada projecte (una per cada VM si no tenen res a veure entre elles):<code bash>mkdir vm1 
 +cd vm1</code> 
 +  * Crea el Vagrantfile. Aquesta instrucció crearà un esquelet molt complert que pots anar activant per parts descomentant les línies que t'interessin:<code bash> 
 +vagrant init debian/bookworm64</code> 
 +  * Engega la màquina amb:<code bash>
 vagrant up --provider=libvirt vagrant up --provider=libvirt
 </code> </code>
-  - Recorda que per ajustar els paràmetres de Libvirt per a la VM podem afegir dins del Vagrantfile:<file ruby>+  * Ajusta els paràmetres de Libvirt per a la VM inspeccionant i retocant el Vagrantfile:<file ruby>
   # Configuració comuna a per totes les màquines   # Configuració comuna a per totes les màquines
   config.vm.provider "libvirt" do |vb|   config.vm.provider "libvirt" do |vb|
-    vb.memory = "1024+    vb.memory = "2048
-    vb.cpus = 1+    vb.cpus = 2
   end   end
 </file> </file>
 +
 +===== Cerca imatges a Vagrant Cloud =====
 +
 +Les imatges han d'estar adaptades per a cada //provider//, pel què no son iguals una imatge per a VirtualBox que una per a ''libvirt''.
 +
 +Consulta a [[https://portal.cloud.hashicorp.com/vagrant/discover Vagrant Cloud]] si hi ha disponible la imatge que t'interessa.
 +
 +Exemples d'imatge confiables i disponibles per a ''libvirt'':
 +  * bento/ubuntu-24.04
 +  * bento/fedora-41
 +  * debian/bookworm64
 +
 +\\
 +
 +===== Compartir carpetes amb viriofsd =====
 +
 +Per defecte, les carpetes compartides (per exemple ''/vagrant'' per defecte) es fan mitjançant NFS si emprem ''libvirt''. Una alternativa interessant és utilitzar ''virtiofs''.
 +
 +Fins a Debian 12 ''virtiofs'' ja ve inclòs en ''libvirt''.
 +
 +Si tens Debian 13+ hauràs d'instal·lar ''virtiofsd'':
 +  sudo apt install virtiofsd
 +
 +Al ''Vagrantfile'' caldrà explicitar la carpeta compartida, encara que per defecte es faci:
 +<code ruby>config.vm.synced_folder ".", "/vagrant", type: "virtiofs"</code>
 +  
 +A la configuració del //provider// caldrà ajustar la configuració a mode //shared//:
 +<file ruby Vagrantfile>
 +config.vm.provider "libvirt" do |vm|
 +    vm.memory = "2048"
 +    vm.cpus = 1
 +    # ajustos per a virtiofs
 +    vm.memorybacking :access, :mode => 'shared'
 +end
 +</file>
 +
 +\\
 +
 +===== NFS en Debian/Ubuntu =====
 +
 +Si utilitzes una Ubuntu i et dona error en la compartició NFS, pots intentar aquesta configuració que farà el //shared folder// via TCP enlloc del UDP per defecte al Vagrantfile:
 +<code ruby>
 +config.vm.synced_folder ".", "/vagrant", 
 +  type: "nfs",
 +  nfs_version: 3,
 +  nfs_udp: false,
 +  nfs_protocol: "tcp"
 +</code>
 +
 +
 +\\
 +
 +===== Nested virtualization (virtualització aniuada) =====
 +
 +Si vols fer //nested virtualization// amb libvirt et recomano la [[https://nts.strzibny.name/inception-running-vagrant-inside-vagrant-with-kvm/|lectura d'aquest post sobre virtualizació aniuada amb Vagrant]].
 +
 +\\
 +
 +===== Escriptoris =====
 +
 +Les imatges oficials Vagrant solen ser versions //server// o //headless//, és a dir, sense escriptori. Si el vols afegir, sempre el pots instal·lar amb:
 +  $ sudo apt-get update
 +  $ sudo apt-get install -y gnome
 +  
 +També podeu instal·lar altres escriptoris com ''lxde'', ''xfce'' o ''kde'' enlloc de ''gnome''.
 +
 +Perquè funcioni adequadament amb l'aplicació ''virt-manager'', en particular per gestionar bé l'idioma del teclat, convé afegir els //settings// perquè faci servir el visor SPICE enlloc del VNC:
 +<file ruby Vagrantfile>
 +  config.vm.provider "libvirt" do |libvirt|
 +    libvirt.memory = "4096"
 +    libvirt.cpus = 2
 +    libvirt.graphics_type = "spice"
 +    libvirt.video_type = "qxl"
 +    libvirt.channel :type => 'spicevmc', :target_name => 'com.redhat.spice.0', :target_type => 'virtio'
 +  end
 +</file>
 +
  
vagrant_ubuntu_libvirt.1732565347.txt.gz · Darrera modificació: 2024/11/25 20:09 per enric_mieza_sanchez