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

Métricas y monitorización con Pormetheus y Grafana

Grafana y Prometheus son herramientas que permiten monitorizar el funcionamiento de los equipos de una red. En combinación, pueden recopilar y centralizar información relevante del funcionamiento de los servidores de una red, mostrarla de manera visual a través de una interfaz gráfica y notificar situaciones críticas en los equipos.

Leer

Almacenamiento en Docker

En este post se resume el funcionamiento de los dos principales métodos de almacenamiento en Docker: los volúmenes y los bind mount

Leer

Implantación de aplicaciones web PHP en Docker

Para implantar una aplicación PHP en Docker se genera un entorno LAMP usando varios contenedores a través de un fichero docker-compose como se muestra en este post

Leer