Uso de cloud-init con libvirt

Í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"
comments powered by Disqus

Relacionados

Configuración de un servidor SAN

En este post se muestran, a través de un caso práctico, algunos ejemplos de configuración de un servidor SAN.

Leer

Interconexión entre dos servidores Postgres

En este post se explica brevemente cómo se puede establecer una interconexión entre dos servidores PostgreSQL.

Leer

Creación de Replica Sets en kubernetes

Para crear un ReplicaSet, en primer lugar, se declara el recurso en un fichero yaml.

Leer