Virtualización

¿Qué es cloud-init?

Definición

cloud-init is the standard mechanism for configuring a virtual machine on first boot, using metadata supplied by the platform. It handles SSH key injection, hostname, network configuration and arbitrary user scripts, which is what makes fully automated provisioning possible.

Por qué es importante cloud-init

Maneja la inyección de claves SSH, el hostname, la configuración de red y scripts de usuario arbitrarios, lo que hace posible el aprovisionamiento totalmente automatizado.

cloud-init en la práctica

En un arranque nuevo, cloud-init se ejecuta antes de que tus servicios comiencen. Observarías la consola para ver 'running modules' y revisarías /var/log/cloud-init-output.log. Un script user-data mal configurado puede colgar el arranque o dejar SSH bloqueado. Probarías primero en una instancia desechable. Puedes volver a ejecutarlo con 'cloud-init clean' y reiniciar. Equivocarte te cuesta tiempo re-aprovisionando desde el panel, o una sesión VNC para arreglarlo a mano.

Lo que se suele malinterpretar sobre cloud-init

El error común es asumir que cloud-init se vuelve a ejecutar en cada arranque. Se ejecuta una vez en el primer arranque. Si agrega un script a user-data esperando que se aplique al reiniciar, no lo hará. Corrección: úselo solo para el aprovisionamiento inicial, o llame explícitamente a 'cloud-init clean' para restablecer el estado y obtener una ejecución nueva.

cloud-init — preguntas frecuentes

¿Cómo paso user-data a cloud-init?

Al aprovisionar desde el panel o la API, puede proporcionar un campo user-data. Se inyecta a través de los metadatos y cloud-init lo aplica en el primer arranque. Manténgalo como un script de shell o un YAML cloud-config, según lo que necesite.

¿Puedo usar cloud-init con un ISO personalizado?

Sí, si el ISO tiene cloud-init instalado. Por ejemplo, las imágenes cloud de las principales distros lo incluyen. También puede subir su propia imagen con cloud-init. Asegúrese de que la instancia sea KVM, no un contenedor, ya que cloud-init depende de los metadatos proporcionados por la plataforma.

Más de virtualización

KVM
KVM es virtualización completa por hardware integrada en el kernel de Linux, lo que da a cada invitado su propio kernel y un aislamiento reforzado por hardware de otros inquilinos.
OpenVZ
OpenVZ es virtualización por contenedores en la que cada instancia comparte el kernel del host, por lo que los invitados no pueden cargar módulos del kernel ni ejecutar un sistema operativo diferente.
LXC
LXC es contenedorización nativa de Linux que aísla procesos con namespaces y cgroups mientras comparte el kernel del host.
Hipervisor
Un hipervisor es la capa de software que crea y ejecuta máquinas virtuales, asignando CPU física, memoria y E/S entre ellas.
Virtualización anidada
La virtualización anidada permite que una máquina virtual ejecute a su vez máquinas virtuales, exponiendo las extensiones de virtualización del procesador al invitado.
vCPU
Una vCPU es un procesador virtual presentado a un invitado, respaldado por tiempo de planificación en un núcleo o hilo físico.