Skip to content

353.3 cloud-init (weight: 3)

Description: Candidates should able to use cloud-init to configure virtual machines created from standardized images. This includes adjusting virtual machines to match their available hardware resources, specifically, disk space and volumes. Additionally, candidates should be able to configure instances to allow secure SSH logins and install a specific set of software packages. Furthermore, candidates should be able to create new system images with cloud-init support.

Key Knowledge Areas:

Understanding the features and concepts of cloud-init, including user-data, initializing and configuring cloud-init
Use cloud-init to create, resize and mount file systems, configure user accounts, including login credentials such as SSH keys and install software packages from the distributions repository
Integrate cloud-init into system images
Use config drive datasource for testing

Partial list of the used files, terms and utilities:

cloud-init
user-data
/var/lib/cloud/

cloud-init es un paquete de software que automatiza la inicialización de las instancias de la nube durante el arranque del sistema. Puedes configurar cloud-init para que realice una variedad de tareas. Algunos ejemplos de tareas que puede realizar cloud-init son:

  • Configurar un nombre de host
  • Instalación de paquetes en una instancia
  • Ejecución de guiones
  • Suprimir el comportamiento por defecto de la máquina virtual

La mayoría de las plataformas en la nube admiten cloud-init, aunque los procedimientos de configuración y las opciones admitidas varían. Como alternativa, puede configurar cloud-init para un entorno NoCloud.

Puede configurar cloud-init en una máquina virtual (VM) y luego utilizar esa VM como plantilla para VMs adicionales o clusters de VMs.

cloud-init utiliza instrucciones de archivos con formato YAML para realizar las tareas.

archivos principales

user-data

  • los datos de usuario pueden incluir archivos para ejecutar, paquetes para instalar y scripts de shell.

meta-data

  • Los metadatos incluyen datos asociados con una fuente de datos específica, por ejemplo, los metadatos pueden incluir un nombre de servidor y un ID de instancia.

ventor-data

  • Los datos del proveedor son proporcionados opcionalmente por la organización (por ejemplo, un proveedor de la nube) e incluyen información que puede personalizar la imagen para que se adapte mejor al entorno en el que se ejecuta la imagen.

/var/lib/cloud

  • Cuando cloud-init se ejecuta, crea una disposición de directorios bajo /var/lib/cloud. La disposición incluye directorios y archivos que dan detalles sobre la configuración de su instancia.

Instance metadata service (IMDS)

Cuando las instancias de la nube/máquinas virtuales requieren acceso a datos sobre sí mismos o el entorno de la nube, pueden consultar su Servicio de metadatos de instancia (IMDS)

Cloud-init utiliza este servicio pra generar algunas configuraciones y también se puede ver si algo salio mal

Localmente con LXD/Qemu

LXD

mkdir temp
cd temp

generar archivos de configuración inicial

cat << EOF > user-data.yaml
#cloud-config
password: password
chpasswd:
  expire: False
EOF

cat << EOF > meta-data
instance-id: someid/somehostname
local-hostname: jammy
EOF

Crear container

lxc launch ubuntu-daily:bionic test-container --config=user.user-data="$(cat user-data.yaml)"

Qemu

cat << EOF > user-data
#cloud-config
password: password
chpasswd:
  expire: False
EOF

cat << EOF > meta-data
instance-id: someid/somehostname
local-hostname: jammy
EOF

generar imagen con los datos en su interior con cloud-locals

cloud-localds seed.img user-data

arrancar imagen ubunto con especificaciones de cloud-init

qemu-system-x86_64 -m 1024 -net nic -net user \
    -hda ubuntu-20.04-server-cloudimg-amd64.img \
    -hdb seed.img

ver el estado

cloud-init status --wait

ordenes basicas

cloud-init query userdata
cloud-init analyze show
sudo cloud-init collect-logs
cloud-localds seed.img user-data

configuraciones