Uso de cloud-init con libvirt
- Francisco Javier Huete
- Servicios
- January 13, 2025
Índice
Para configurar una máquina virtual con cloud-init usando libvirt se necesitan tres ficheros: network-config, meta-data y user-data. En este caso, los dos primeros están vacíos. El fichero user-data incluye la configuración necesaria para actualizar los paquetes, instalar Apache2, crear un usuario y configurar el nombre de la máquina.
#cloud-config
# Actualiza los paquetes
package_update: true
package_upgrade: true
# Instala el paquete apache2
packages:
- apache2
# Configura el hostname y el fqdn
fqdn: maquina-cloud.example.org
hostname: maquina-cloud
manage_etc_hosts: true
# Crear dos usuarios, configura el acceso por sudo y añade clave pública ssh
users:
- name: javi
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Cambia las contraseña a los usuarios creados
chpasswd:
expire: False
users:
- name: root
password: root
type: text
- name: javi
password: usuario
type: text
Para poder ejecutar la configuración con cloud init es necesario instalar imágenes que tengan cloud init ya instalado. En el caso de Debian, estas imágenes están publicadas en su repositorio.
Los ficheros de cloud init se indican en el comando de creación de la instancia con virt-install
.
virt-install --name DebianCloud --memory 1024 --os-variant debian11 --disk=size=10,backing_store="$(pwd)/debian-12-generic-amd64-20241201-1948.qcow2" --cloud-init user-data=$(pwd)/user-data,meta-data=$(pwd)/meta-data,network-config=$(pwd)/network-config"