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 distribution’s 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