Taula de continguts

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.

Vagrant és una eina d'automatització d'infraestructura, també conegut com a IaC.

En Ubuntu, el més habitual sol ser treballar Vagrant amb VirtualBox, però la configuració amb Libvirt té molts avantatges, en particular la velocitat.


Instal·lació en Debian/Ubuntu

Tenim aquesta referència.

Resum per a Ubuntu 22.04 i 24.04:

  1. Instal·la Libvirt i la interfície gràfica virt-manager:
    sudo apt install libvirt-daemon virt-manager nfs-kernel-server
  2. Instal·la NFS per tal que Vagrant pugui gestionar l es carpetes compartides amb Libvirt (en Windows això no funciona).
    sudo apt install nfs-kernel-server
  3. Afegeix el teu usuari al grup libvirt:
    sudo adduser <usuari> libvirt
  4. Reinicia la màquina perquè l'usuari principal pugui gestionar Libvirt.
    sudo reboot
  5. Engega la interfície gràfica:
    Dash -> virt
  6. Instal·la les eines de desenvolupament per a poder compilar el plugin:
    sudo apt install libvirt-dev ruby-dev make gcc
  7. Instal·la els plugins de Vagrant que permeten gestionar Libvirt.
    vagrant plugin install vagrant-libvirt

Ara ja hauries de tenir la instrucció vagrant disponible al terminal.


Crea VMs amb Vagrant

Provarem una configuració mínima per crear una VM amb Vagrant:

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:

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:

config.vm.synced_folder ".", "/vagrant", 
  type: "nfs",
  nfs_version: 3,
  nfs_udp: false,
  nfs_protocol: "tcp"