Configuración y gestión de cloud-init para RHEL 8
Uso de cloud-init para automatizar la inicialización de las instancias de la nube
Resumen
Hacer que el código abierto sea más inclusivo
Red Hat se compromete a sustituir el lenguaje problemático en nuestro código, documentación y propiedades web. Estamos empezando con estos cuatro términos: maestro, esclavo, lista negra y lista blanca. Debido a la enormidad de este esfuerzo, estos cambios se implementarán gradualmente a lo largo de varias versiones próximas. Para más detalles, consulte el mensaje de nuestro CTO Chris Wright.
Proporcionar comentarios sobre la documentación de Red Hat
Agradecemos su opinión sobre nuestra documentación. Por favor, díganos cómo podemos mejorarla. Para ello:
Para comentarios sencillos sobre pasajes concretos:
- Asegúrese de que está viendo la documentación en el formato Multi-page HTML. Además, asegúrese de ver el botón Feedback en la esquina superior derecha del documento.
- Utilice el cursor del ratón para resaltar la parte del texto que desea comentar.
- Haga clic en la ventana emergente Add Feedback que aparece debajo del texto resaltado.
- Siga las instrucciones mostradas.
Para enviar comentarios más complejos, cree un ticket de Bugzilla:
- Vaya al sitio web de Bugzilla.
- Como componente, utilice Documentation.
- Rellene el campo Description con su sugerencia de mejora. Incluya un enlace a la(s) parte(s) pertinente(s) de la documentación.
- Haga clic en Submit Bug.
Capítulo 1. Introducción a cloud-init
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
El lugar donde se obtiene la imagen para configurar cloud-init
depende del uso que se le quiera dar.
-
El paquete
cloud-init
se instala en las imágenes de huésped KVM que se descargan desde el Portal del Cliente de Red Hat. Cuando se lanza una instancia, se habilitacloud-init
. Las Imágenes de Huésped KVM que se descargan desde el Portal del Cliente de Red Hat están pensadas para ser utilizadas con Red Hat Virtualization (RHV) y Red Hat OpenStack Platform (RHOSP). También puede crear una imagen desde cero para RHV y RHOSP. -
Otra opción es descargar una imagen ISO desde el Portal del Cliente de Red Hat o crear una. En este caso, debe instalar
cloud-init
en su imagen ISO. -
Si planea utilizar una imagen con un proveedor de nube (por ejemplo, AWS o Azure), utilice Red Hat Image Builder para crear la imagen. Las imágenes de Image Builder están personalizadas para su uso con proveedores de nube específicos. Los tipos de imagen AMI, VHD y qcow2 incluyen
cloud-init
ya instalado. Consulte Composición de una imagen de sistema RHEL personalizada para obtener información sobre Image Builder.
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.
Productos específicos de Red Hat (por ejemplo, Red Hat Virtualization) tienen procedimientos documentados para configurar cloud-init
para su uso con esos productos.
Este documento hace referencia a la documentación de cloud-init
en varios lugares. Consulte la documentación de cloud-init
a la que se hace referencia para obtener información completa sobre cloud-init
.
Requisitos previos
- Regístrese para obtener una cuenta en el Portal del Cliente de Red Hat.
Recursos adicionales
1.1. configuración de cloud-init
cloud-init
utiliza instrucciones de archivos con formato YAML para realizar las tareas. Usted decide la configuración inicial que desea que cloud-init
realice proporcionando instrucciones dentro de los archivos YAML. Cuando una instancia arranca, el servicio cloud-init
se inicia y busca y ejecuta las instrucciones. Las tareas se completan durante el primer arranque o en los siguientes arranques de la máquina virtual, según la configuración de cloud-init
.
Las tareas se definen configurando el archivo /etc/cloud/cloud.cfg
y añadiendo directivas en el directorio /etc/cloud/cloud.cfg.d/
.
El archivo
cloud.cfg
incluye directivas, como las de acceso y autenticación de usuarios e información del sistema.El archivo también incluye módulos por defecto y opcionales para
cloud-init
. Los módulos se ejecutan en orden dentro de tres fases que incluyen la fase de inicializacióncloud-init
, la fase de configuración y la fase final. Dentro del archivocloud.cfg
, los módulos para las tres fases se enumeran bajocloud_init_modules
,cloud_config_modules
, ycloud_final_modules
, respectivamente.-
El directorio
cloud.cfg.d
es donde se pueden añadir directivas adicionales paracloud-init
. Cuando se añaden directivas al directoriocloud.cfg.d
, normalmente se añaden a un archivo llamado*.cfg
, y siempre se incluye#cloud-config
al principio del archivo.
1.2. cloud-init funciona por etapas
cloud-init
funciona en cinco etapas durante el arranque del sistema. Estas etapas determinan si cloud-init
se ejecuta y dónde encuentra sus fuentes de datos, entre otras tareas. A continuación se presenta un breve resumen de las etapas.
-
La etapa generadora de
cloud-init
, a través del serviciosystemd
, determina si se ejecutacloud-init
en el arranque. -
Durante la etapa local,
cloud-init
encuentra las fuentes de datos locales y aplica la configuración de la red. -
Durante la etapa de red,
cloud-init
procesa los datos del usuario y ejecuta los módulos listados encloud_init_modules
en su archivocloud.cfg
. Puedes activar, desactivar o añadir módulos a la seccióncloud_init_modules
. -
Durante la etapa de configuración,
cloud-init
ejecuta los módulos listados encloud_config_modules
en su archivocloud.cfg
. Puedes activar, desactivar o añadir módulos a la seccióncloud_config_modules
. -
Durante la etapa final,
cloud-init
puede ejecutar lo que haya incluido encloud_final_modules
en su archivocloud.cfg
. Puede incluir instalaciones de paquetes que normalmente se ejecutan tras el arranque del sistema y también puede incluir complementos de gestión de la configuración y scripts de usuario. Puede habilitar, deshabilitar o añadir módulos a la seccióncloud_final_modules
.
Las cinco etapas de arranque se describen en la sección de documentación cloud-init
Etapas de arranque.
1.3. los módulos cloud-init se ejecutan en fases
Cuando cloud-init
se ejecuta, ejecuta los módulos dentro de cloud.cfg
en orden dentro de tres fases que incluyen la fase de red (cloud_init_modules
), la fase de configuración (cloud_config_modules
), y la fase final (cloud_final_modules
). Cuando cloud-init
se ejecuta por primera vez en una VM, todos los módulos que ha configurado se ejecutan en sus respectivas fases. En una ejecución posterior de cloud-init
, el hecho de que un módulo se ejecute dentro de una fase depende de la module frequency del módulo individual. Algunos módulos se ejecutan cada vez que se ejecuta cloud-init
; otros módulos sólo se ejecutan la primera vez que se ejecuta cloud-init
, incluso si el ID de la instancia cambia.
Un ID de instancia identifica de forma exclusiva una instancia. Cuando un ID de instancia cambia, cloud-init
trata la instancia como una nueva instancia.
A continuación se describen brevemente los valores de module frequency.
- Per instance significa que el módulo se ejecuta en el primer arranque de una instancia. Por ejemplo, si se clona una instancia o se crea una nueva instancia a partir de una imagen guardada, los módulos designados como por instancia se ejecutan de nuevo.
- Per once significa que el módulo se ejecuta sólo una vez. Por ejemplo, si se clona una instancia o se crea una nueva instancia a partir de una imagen guardada, los módulos designados por una vez no vuelven a ejecutarse en esas instancias.
- Per always significa que el módulo se ejecuta en cada arranque.
Puede anular la frecuencia de un módulo al configurarlo o mediante la línea de comandos.
1.4. cloud-init actúa sobre los datos del usuario, los metadatos y los datos del proveedor
cloud-init
consume y actúa sobre los datos del usuario, los metadatos y los datos del proveedor.
-
Los datos de usuario incluyen las directivas que usted especifica en el archivo
cloud.cfg
y en el directoriocloud.cfg.d
, por ejemplo, los datos de usuario pueden incluir archivos para ejecutar, paquetes para instalar y scripts de shell. Consulte la sección de documentacióncloud-init
Formatos de datos de usuario para obtener información sobre los tipos de datos de usuario que permitecloud-init
. -
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. Si utiliza una plataforma en la nube específica, la plataforma determina dónde encuentran sus instancias los datos de usuario y los metadatos. Su plataforma puede requerir que añada metadatos y datos de usuario a un servicio HTTP; en este caso, cuando
cloud-init
se ejecuta consume metadatos y datos de usuario del servicio HTTP. 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.
cloud-init
actúa sobre los datos opcionales del proveedor y los datos del usuario después de leer cualquier metadato e inicializar el sistema. Por defecto, los datos del proveedor se ejecutan en el primer arranque. Puede desactivar la ejecución de los datos del proveedor.Consulte la sección de documentación
cloud-init
Metadatos de la instancia para obtener una descripción de los metadatos; Fuentes de datos para obtener una lista de fuentes de datos; y Datos del proveedor para obtener más información sobre los datos del proveedor.
1.5. cloud-init identifica la plataforma de la nube
cloud-init
intenta identificar la plataforma en la nube utilizando el script ds-identify
. El script se ejecuta en el primer arranque de una instancia.
Añadir una directiva de fuente de datos puede ahorrar tiempo cuando se ejecuta cloud-init
. La directiva se añade en el archivo /etc/cloud/cloud.cfg
o en el directorio /etc/cloud/cloud.cfg.d
. A continuación se muestra un ejemplo.
datasource_list:[Ec2]
Además de añadir la directiva para su plataforma en la nube, puede configurar aún más cloud-init
añadiendo detalles de configuración adicionales, como las URL de metadatos.
datasource_list: [Ec2] datasource: Ec2: metadata_urls: ['http://169.254.169.254']
Después de la ejecución de cloud-init
, puede ver un archivo de registro (run/cloud-init/ds-identify.log
) que proporciona información detallada sobre la plataforma.
Recursos adicionales
Capítulo 2. Soporte de Red Hat para cloud-init
Este capítulo cubre el soporte de Red Hat para cloud-init
. Incluye información sobre los productos de Red Hat que utilizan cloud-init
, los módulos de cloud-init
que soporta Red Hat y los directorios y archivos por defecto.
2.1. cloud-init directorios y archivos significativos
La siguiente tabla incluye directorios y archivos importantes. Revise estos directorios y archivos; le permiten realizar tareas como:
-
Configuración de
cloud-init
-
Encontrar información sobre su configuración después de la ejecución de
cloud-init
- Examinar los archivos de registro
- Encontrar plantillas
Dependiendo de su escenario y fuente de datos, puede haber archivos y directorios adicionales importantes para su configuración.
Tabla 2.1. directorios y archivos cloud-init
Directorio o archivo | Descripción |
---|---|
|
El archivo |
|
El directorio |
|
Cuando |
|
El directorio |
|
Este directorio incluye plantillas que puede habilitar en |
|
El archivo |
|
El directorio |
2.2. Productos de Red Hat que utilizan cloud-init
Puede utilizar cloud-init
con los siguientes productos de Red Hat.
-
Red Hat Virtualization. Una vez que instale
cloud-init
en una VM, puede crear una plantilla y aprovechar las funciones decloud-init
para todas las VMs creadas a partir de esa plantilla. Consulte Uso de Cloud-Init para automatizar la configuración de las máquinas virtuales para obtener información sobre el uso decloud-init
con las máquinas virtuales. -
Red Hat OpenStack Platform. Puede utilizar
cloud-init
para ayudar a configurar imágenes para OpenStack. Consulte la Guía de instancias e imágenes para obtener más información. -
Red Hat CloudForms. Puede utilizar
cloud-init
para aprovisionar máquinas virtuales para Red Hat CloudForms. Consulte Plantillas de personalización para el aprovisionamiento de máquinas virtuales e instancias para obtener más información. -
Red Hat Satellite. Puede utilizar
cloud-init
con Red Hat Satellite. Consulte Preparación de imágenes Cloud-init en Red Hat Virtualization para más información. -
Red Hat OpenShift. Puede utilizar
cloud-init
cuando cree máquinas virtuales para OpenShift. Consulte Creación de máquinas virtuales para obtener más información.
2.3. Red Hat admite estos módulos de cloud-init
Red Hat soporta la mayoría de los módulos de cloud-init
. Los módulos individuales pueden contener múltiples opciones de configuración. La siguiente tabla lista todos los módulos de cloud-init
que Red Hat soporta actualmente y proporciona una breve descripción y la frecuencia del módulo por defecto. Consulte Módulos en la sección de documentación de cloud-init para ver las descripciones y opciones completas de estos módulos.
Tabla 2.2. Módulos soportados de cloud-init
módulo cloud-init | Descripción | Frecuencia del módulo por defecto |
---|---|---|
bootcmd | Ejecuta comandos al principio del proceso de arranque | por siempre |
ca_certs | Añade certificados de CA | por ejemplo |
depurar | Activa o desactiva la salida de información interna para ayudar a la depuración | por ejemplo |
disable_ec2_metadata | Activa o desactiva los metadatos de AWS EC2 | por siempre |
configuración_del_disco | Configura tablas de partición y sistemas de archivos sencillos | por ejemplo |
mensaje_final |
Especifica el mensaje de salida una vez que | por siempre |
foo | El ejemplo muestra la estructura del módulo (el módulo no hace nada) | por ejemplo |
growpart | Redimensiona las particiones para llenar el espacio disponible en el disco | por siempre |
llaves_para_la_consola | Permite controlar las huellas dactilares y las claves que se pueden escribir en la consola | por ejemplo |
paisaje | Instala y configura un cliente landscape | por ejemplo |
localidad | Configura la configuración regional del sistema y la aplica a todo el sistema | por ejemplo |
mcollective |
Instala, configura e inicia | por ejemplo |
migrante |
Traslada las versiones antiguas de | por siempre |
montajes | Configura los puntos de montaje y los archivos de intercambio | por ejemplo |
teléfono_casa | Envía datos a un host remoto después de completar el arranque | por ejemplo |
cambio_de_estado_de_la_potencia | Completa el apagado y el reinicio después de que se hayan ejecutado todos los módulos de configuración | por ejemplo |
marioneta | Instala y configura puppet | por ejemplo |
redimensionamiento | Redimensiona un sistema de archivos para utilizar todo el espacio disponible en una partición | por siempre |
resolver_conf |
Configura | por ejemplo |
rh_suscripción | Registra un sistema Red Hat Enterprise Linux | por ejemplo |
datos_de_derecho_de_usuario |
Añade compatibilidad con los ganchos de configuración de RightScale para | por ejemplo |
rsyslog |
Configura el registro del sistema remoto mediante | por ejemplo |
runcmd | Ejecuta comandos arbitrarios | por ejemplo |
sal_minion |
Instala, configura e inicia | por ejemplo |
scripts_per_boot | Se ejecuta por scripts de arranque | por siempre |
scripts_per_instance | Ejecución de scripts por instancia | por ejemplo |
scripts_per_once | Ejecuta los scripts una vez | por una vez |
scripts_user | Ejecuta los scripts del usuario | por ejemplo |
scripts_vendor | Ejecuta los scripts de los proveedores | por ejemplo |
semilla_aleatoria | Proporciona datos de semillas aleatorias | por ejemplo |
set_hostname | Establece el nombre de host y el nombre de dominio completo (FQDN) | por siempre |
set_passwords | Establece las contraseñas de los usuarios y activa o desactiva la autenticación de contraseñas SSH | por ejemplo |
ssh_authkey_fingerprints | Registra las huellas digitales de las claves SSH de los usuarios | por ejemplo |
ssh_import_id | Importación de claves SSH | por ejemplo |
ssh | Configura el SSH y las claves de host y de SSH autorizadas | por ejemplo |
zona horaria | Establece la zona horaria del sistema | por ejemplo |
actualizar_etc_hosts |
Actualizaciones | por siempre |
actualizar_nombre_de_host | Actualiza el nombre de host y el FQDN | por siempre |
grupos_de_usuarios | Configura usuarios y grupos | por ejemplo |
escribir_archivos | Escribe archivos arbitrarios | por ejemplo |
yum_add_repo | Añade la configuración del repositorio yum al sistema | por siempre |
La siguiente tabla enumera los módulos que Red Hat no soporta actualmente.
Tabla 2.3. Módulos no compatibles
Módulo |
---|
apt_configure |
apt_pipeline |
byobu |
chef |
emit_upstart |
grub_dpkg |
ubuntu_init_switch |
2.4. El archivo cloud.cfg por defecto
El archivo /etc/cloud/cloud.cfg
enumera los módulos que componen la configuración básica de cloud-init
.
Los módulos en el archivo son los módulos por defecto para cloud-init
. Puedes configurar los módulos para tu entorno o eliminar los que no necesites. Los módulos que se incluyen en cloud.cfg
no hacen necesariamente nada por aparecer en el archivo. Tiene que configurarlos individualmente si quiere que realicen acciones durante una de las fases de cloud-init
.
El archivo cloud.cfg
proporciona la cronología para ejecutar módulos individuales. Puede añadir módulos adicionales a cloud.cfg
siempre que Red Hat soporte los módulos que desea añadir.
Lo que sigue es el contenido por defecto del archivo para Red Hat Enterprise Linux (RHEL).
-
Los módulos se ejecutan en el orden indicado en
cloud.cfg
. Normalmente no se cambia este orden. -
Las directivas de
cloud.cfg
pueden ser anuladas por los datos del usuario. -
Cuando se ejecuta
cloud-init
manualmente, se puede anularcloud.cfg
con las opciones de la línea de comandos. - Cada módulo incluye sus propias opciones de configuración, donde se puede añadir información específica.
users: 1 - default disable_root: 1 2 ssh_pwauth: 0 3 mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2'] 4 ssh_deletekeys: 1 5 ssh_genkeytypes: ~ 6 syslog_fix_perms: ~ 7 disable_vmware_customization: false 8 cloud_init_modules: 9 - disk_setup - migrator - bootcmd - write-files - growpart - resizefs - set_hostname - update_hostname - update_etc_hosts - rsyslog - users-groups - ssh cloud_config_modules: 10 - mounts - locale - set-passwords - rh_subscription - yum-add-repo - package-update-upgrade-install - timezone - puppet - chef - salt-minion - mcollective - disable-ec2-metadata - runcmd cloud_final_modules: 11 - rightscale_userdata - scripts-per-once - scripts-per-boot - scripts-per-instance - scripts-user - ssh-authkey-fingerprints - keys-to-console - phone-home - final-message - power-state-change system_info: default_user: 12 name: cloud-user lock_passwd: true gecos: Cloud User groups: [adm, systemd-journal] sudo: ["ALL=(ALL) NOPASSWD:ALL"] shell: /bin/bash distro: rhel 13 paths: cloud_dir: /var/lib/cloud 14 templates_dir: /etc/cloud/templates 15 ssh_svcname: sshd 16 # vim:syntax=yaml
- 1
- Especifica el usuario por defecto para el sistema. Consulte Usuarios y grupos para obtener más información.
- 2
- Activa o desactiva el inicio de sesión de root. Consulte Claves autorizadas para obtener más información.
- 3
- Especifica si
ssh
está configurado para aceptar la autenticación con contraseña. Consulte Establecer contraseñas para obtener más información. - 4
- Configura los puntos de montaje; debe ser una lista que contenga seis valores. Consulte la sección Montajes para obtener más información.
- 5
- Especifica si se eliminan las claves SSH del host por defecto. Consulte Claves de host para obtener más información.
- 6
- Especifica los tipos de claves a generar. Consulte la sección Claves de host para obtener más información.
- 7
cloud-init
se ejecuta en múltiples etapas de arranque. Establezca esta opción para quecloud-init
pueda registrar todas las etapas en su archivo de registro. Encuentre más información sobre esta opción en el archivocloud-config.txt
en el directoriousr/share/doc/cloud-init/examples
.- 8
- Activa o desactiva la personalización de VMware vSphere
- 9
- Los módulos de esta sección son servicios que se ejecutan cuando se inicia el servicio
cloud-init
, al principio del proceso de arranque. - 10
- Estos módulos se ejecutan durante la configuración de
cloud-init
, después del arranque inicial. - 11
- Estos módulos se ejecutan en la fase final de
cloud-init
, una vez finalizada la configuración. - 12
- Especifica los detalles del usuario por defecto. Consulte Usuarios y grupos para obtener más información.
- 13
- Especifica la distribución
- 14
- Especifica el directorio principal que contiene los subdirectorios específicos de
cloud-init
. Consulte Diseño de directorios para obtener más información. - 15
- Especifica dónde residen las plantillas
- 16
- El nombre del servicio SSH
Recursos adicionales
2.5. El directorio cloud.cfg.d
cloud-init
actúa sobre las directivas que usted proporciona y configura. Normalmente, esas directivas se incluyen en el directorio cloud.cfg.d
.
Aunque puede configurar los módulos añadiendo directivas de datos de usuario dentro del archivo cloud.cfg
, como mejor práctica considere dejar cloud.cfg
sin modificar. Agregue sus directivas al directorio /etc/cloud/cloud.cfg.d
. Añadir directivas a este directorio puede facilitar futuras modificaciones y actualizaciones.
Hay varias formas de añadir directivas. Puede incluir directivas en un archivo llamado *.cfg
, que incluye el encabezamiento #cloud-config
. Normalmente, el directorio contendrá varios archivos *cfg
. Hay otras opciones para añadir directivas, por ejemplo, puede añadir un script de datos de usuario. Consulte Formatos de datos de usuario para obtener más información.
Recursos adicionales
2.6. El archivo 05_logging.cfg por defecto
El archivo 05_logging.cfg
establece la información de registro para cloud-init
. El directorio /etc/cloud/cloud.cfg.d
incluye este archivo, junto con otras directivas cloud-init
que se añaden.
cloud-init
utiliza la configuración de registro en 05_logging.cfg
por defecto. Lo que sigue es el contenido por defecto del archivo para Red Hat Enterprise Linux (RHEL).
## This yaml formatted config file handles setting ## logger information. The values that are necessary to be set ## are seen at the bottom. The top '_log' are only used to remove ## redundancy in a syslog and fallback-to-file case. ## ## The 'log_cfgs' entry defines a list of logger configs ## Each entry in the list is tried, and the first one that ## works is used. If a log_cfg list entry is an array, it will ## be joined with '\n'. _log: - &log_base | [loggers] keys=root,cloudinit [handlers] keys=consoleHandler,cloudLogHandler [formatters] keys=simpleFormatter,arg0Formatter [logger_root] level=DEBUG handlers=consoleHandler,cloudLogHandler [logger_cloudinit] level=DEBUG qualname=cloudinit handlers= propagate=1 [handler_consoleHandler] class=StreamHandler level=WARNING formatter=arg0Formatter args=(sys.stderr,) [formatter_arg0Formatter] format=%(asctime)s - %(filename)s[%(levelname)s]: %(message)s [formatter_simpleFormatter] format=[CLOUDINIT] %(filename)s[%(levelname)s]: %(message)s - &log_file | [handler_cloudLogHandler] class=FileHandler level=DEBUG formatter=arg0Formatter args=('/var/log/cloud-init.log',) - &log_syslog | [handler_cloudLogHandler] class=handlers.SysLogHandler level=DEBUG formatter=simpleFormatter args=("/dev/log", handlers.SysLogHandler.LOG_USER) log_cfgs: # Array entries in this list will be joined into a string # that defines the configuration. # # If you want logs to go to syslog, uncomment the following line. # - [ *log_base, *log_syslog ] # # The default behavior is to just log to a file. # This mechanism that does not depend on a system service to operate. - [ *log_base, *log_file ] # A file path can also be used. # - /etc/log.conf # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'}
Recursos adicionales
2.7. La disposición del directorio /var/lib/cloud de cloud-init
Cuando cloud-init
se ejecuta por primera vez, crea un directorio que incluye información sobre su instancia y la configuración de cloud-init
.
Lo que sigue es el ejemplo de distribución de directorios para cloud-init
.
El directorio puede incluir directorios opcionales, como /scripts/vendor
.
/var/lib/cloud/ - data/ - instance-id - previous-instance-id - previous-datasource - previous-hostname - result.json - set-hostname - status.json - handlers/ - instance - boot-finished - cloud-config.txt - datasource - handlers/ - obj.pkl - scripts/ - sem/ - user-data.txt - user-data.txt.i - vendor-data.txt - vendor-data.txt.i - instances/ f111ee00-0a4a-4eea-9c17-3fa164739c55/ - boot-finished - cloud-config.txt - datasource - handlers/ - obj.pkl - scripts/ - sem/ - user-data.txt - user-data.txt.i - vendor-data.txt - vendor-data.txt.i - scripts/ - per-boot/ - per-instance/ - per-once/ - vendor/ - seed/ - sem/ - config_scripts_per_once.once
Recursos adicionales
Capítulo 3. Configuración de cloud-init
Este capítulo incluye ejemplos de las tareas de configuración más comunes para cloud-init
.
Su configuración de cloud-init
puede requerir que añada directivas al archivo cloud.cfg
y al directorio cloud.cfg.d
. Por otra parte, su fuente de datos específica puede requerir que añada directivas a archivos, como un archivo de datos de usuario y un archivo de metadatos. Una fuente de datos puede requerir que cargue sus directivas en un servidor HTTP. Compruebe los requisitos de su fuente de datos y añada las directivas en consecuencia.
3.1. Creación de una máquina virtual que incluye cloud-init para un origen de datos NoCloud
Lo que sigue es un procedimiento de ejemplo para crear una nueva máquina virtual que incluya cloud-init
. En este procedimiento, se crea un archivo meta-data
y user-data
. Su archivo meta-data
incluye los detalles de la instancia. Su archivo user-data
incluye información para crear un usuario y concederle acceso. A continuación, se incluyen estos archivos en una nueva imagen ISO y se adjunta el archivo ISO a una nueva máquina virtual creada a partir de una imagen de invitado KVM. En este caso, la fuente de datos es NoCloud.
Procedimiento
Cree un directorio llamado
cloudinitiso
y muévase a él.$ mkdir cloudinitiso $ cd cloudinitiso
Cree un archivo llamado
meta-data
. Añade la siguiente información al archivo.instance-id: citest local-hostname: citest-1
Cree un archivo llamado
user-data
. Incluya la siguiente información en el archivo.#cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
NotaLa última línea del archivo
user-data
hace referencia a una clave pública SSH. Encuentre sus claves públicas SSH en~/.ssh/id_rsa.pub
. Cuando intente este procedimiento de ejemplo, modifique la línea para incluir una de sus claves públicas.Utilice el comando
genisoimage
para crear una imagen ISO que incluyauser-data
ymeta-data
.# genisoimage -output ciiso.iso -volid cidata -joliet -rock user-data meta-data I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 0 Total rockridge attributes bytes: 331 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 183 extents written (0 MB)
-
Descargue una imagen de invitado KVM desde el Portal del Cliente de Red Hat al directorio
/var/lib/libvirt/images
. Cree una nueva VM a partir de la imagen huésped de KVM utilizando el comando
virt-install
. Incluya la imagen ISO que ha creado como archivo adjunto a la imagen.virt-install \ --memory 4096 \ --vcpus 4 \ --name mytestcivm \ --disk /var/lib/libvirt/images/rhel-8.1-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \ --disk /home/sample/cloudinitiso/ciiso.iso,device=cdrom \ --os-type Linux \ --os-variant rhel8.0 \ --virt-type kvm \ --graphics none \ --import
Acceda a su imagen como
cloud-user
. Su contraseña escilogon
.citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
Pasos de verificación
Compruebe el estado de
cloud-init
para ver si ha completado sus tareas.[cloud-user@citest-1 instance]$ cloud-init status status: done
cloud-init
crea la disposición del directoriocloud-init
bajo/var/lib/cloud
cuando se ejecuta, y actualiza o cambia ciertos contenidos del directorio basándose en las directivas que has especificado.Por ejemplo, puede confirmar que la fuente de datos es
NoCloud
comprobando el archivo de la fuente de datos.$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]
cloud-init
copia los datos del usuario en/var/lib/cloud/instance/user-data.txt
.$cat user-data.txt #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
Estos son ejemplos. El diseño del directorio
cloud-init
incluye mucha más información.
En el caso de OpenStack, la Guía de instancias e imágenes incluye información para configurar una instancia mediante cloud-init
. Consulte Creación de una instancia personalizada para conocer los procedimientos específicos.
Recursos adicionales
3.2. Expiración de la contraseña de un usuario de la nube con cloud-init
Puede forzar a cloud-user
a cambiar la contraseña de cloud-user
en el primer inicio de sesión. Realice el siguiente procedimiento para hacer caducar una contraseña.
Procedimiento
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.Cambie la línea
chpasswd: {expire: False}
porchpasswd: {expire: True}
.#cloud-config password: mypassword chpasswd: {expire: True} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com
Esto funciona para caducar la contraseña porque
password
ychpasswd
operan con el usuario por defecto a menos que se indique lo contrario.NotaEsta es una configuración global. Si establece
chpasswd
enTrue
, todos los usuarios que cree deberán cambiar sus contraseñas cuando se conecten.
3.3. Cambiar un nombre de usuario por defecto con cloud-init
Puede cambiar el nombre de usuario por defecto por otro que no sea cloud-user
.
Procedimiento
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.Añade la línea
user: <username>
, sustituyendo <username> por el nuevo nombre de usuario por defecto.#cloud-config user: username password: mypassword chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com
3.4. Establecer una contraseña de root con cloud-init
Para establecer la contraseña de root, cree una lista de usuarios.
Procedimiento
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.Cree una lista de usuarios en la sección
chpasswd
del archivo. El formato se muestra en el siguiente ejemplo.NotaLos espacios en blanco son importantes. No incluya espacios en blanco antes o después de los dos puntos en su lista de usuarios. Si incluye espacios en blanco, la contraseña se establece con un espacio en ella.
#cloud-config ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com chpasswd: list: | root:myrootpassword cloud-user:mypassword expire: False
NotaSi utiliza este método para establecer la contraseña del usuario, debe establecer all passwords en esta sección.
3.5. Gestión de las suscripciones de Red Hat con cloud-init
Puede utilizar la directiva rh_subscription
para registrar su sistema. Los ejemplos son los siguientes. Para cada suscripción, usted editaría sus datos de usuario.
Procedimiento
El siguiente ejemplo utiliza las opciones auto-attach
y service-level
.
En
rh_subscription
, añada suusername
ypassword
, pongaauto-attach
enTrue
, y pongaservice-level
enself-support
.rh_subscription: username: sample@redhat.com password: 'mypassword' auto-attach: True service-level: self-support
NotaLa opción
service-level
requiere que se utilice la opciónauto-attach
.
El siguiente ejemplo utiliza las opciones activation-key
y org
.
En
rh_subscription
, añada su númeroactivation key
yorg
y establezcaauto-attach
aTrue
.rh_subscription: activation-key: example_key org: 12345 auto-attach: True
El siguiente ejemplo añade un grupo de suscripción.
En
rh_subscription
, añada suusername
,password
, y el número de piscina.rh_subscription: username: sample@redhat.com password: 'password' add-pool: XYZ01234567
NotaEsta muestra es el equivalente al comando
subscription-manager attach --pool=XYZ01234567
.
El siguiente ejemplo establece un nombre de host del servidor en el archivo /etc/rhsm/rhsm.conf
.
En
rh_subscription
, añada suusername
,password
,server-hostname
, y pongaauto-attach
enTrue
.rh_subscription: username: sample@redhat.com password: 'password' server-hostname: test.example.com auto-attach: True
3.6. Añadir usuarios y opciones de usuario con cloud-init
Los usuarios se crean y describen en una sección de users
. Puede modificar la sección para añadir más usuarios a la configuración inicial del sistema, y puede establecer opciones de usuario adicionales.
Si añade la sección users
, también debe establecer las opciones de usuario por defecto en esta sección.
Procedimiento
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.Añade o modifica la sección
users
para añadir usuarios.-
Si quieres que
cloud-user
sea el usuario creado por defecto junto con los demás usuarios que especifiques, asegúrate de añadirdefault
como primera entrada de la sección. Si no es la primera entrada, no se creacloud-user
. Por defecto, los usuarios son etiquetados como
unconfined_u
si no hay un valorselinux-user
.#cloud-config users: - default - name: user2 gecos: User N. Ame selinux-user: staff_u groups: users,wheel ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.com chpasswd: list: | root:password cloud-user:mypassword user2:mypassword2 expire: False
Nota-
El ejemplo coloca al usuario
user2
en dos grupos,users
ywheel
. -
A partir de
cloud-init 0.7.5
, la lista de grupos no admite espacios en blanco. Consulte BZ 1126365 para obtener más información.
-
El ejemplo coloca al usuario
-
Si quieres que
3.7. Ejecución de los primeros comandos de arranque con cloud-init
Puedes utilizar las secciones runcmd
y bootcmd
para ejecutar comandos durante el arranque y la inicialización.
La sección bootcmd
se ejecuta al principio del proceso de inicialización y por defecto se ejecuta en cada arranque. La sección runcmd
se ejecuta cerca del final del proceso y sólo se ejecuta durante el primer arranque y la inicialización.
Procedimiento
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.Añade las secciones para
bootcmd
yruncmd
; incluye los comandos que quieras que ejecutecloud-init
.#cloud-config users: - default - name: user2 gecos: User N. Ame groups: users chpasswd: list: | root:password fedora:myfedpassword user2:mypassword2 expire: False bootcmd: - echo New MOTD >> /etc/motd runcmd: - echo New MOTD2 >> /etc/motd
3.8. Añadir sudoers adicionales con cloud-init
Puede configurar un usuario como sudoer añadiendo una entrada sudo
y groups
en la sección users
.
Procedimiento
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.-
Añada una entrada en
sudo
y especifique el acceso del usuario. Por ejemplo,sudo: ALL=(ALL) NOPASSWD:ALL
permite a un usuario el acceso sin restricciones. Añade una entrada en
groups
y especifica los grupos que incluyen al usuario.#cloud-config users: - default - name: user2 gecos: User D. Two sudo: ["ALL=(ALL) NOPASSWD:ALL"] groups: wheel,adm,systemd-journal ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA...vz user@domain.com chpasswd: list: | root:password cloud-user:mypassword user2:mypassword2 expire: False
3.9. Establecer una configuración de red estática con cloud-init
Puede establecer su configuración de red con cloud-init
añadiendo una sección network-interfaces
a sus metadatos.
Red Hat Enterprise Linux proporciona su servicio de red por defecto a través de NetworkManager, que es un demonio de control y configuración de red dinámico que mantiene los dispositivos de red y las conexiones activas cuando están disponibles. Consulte Introducción a NetworkManager para obtener más información sobre NetworkManager.
Su fuente de datos puede proporcionar una configuración de red. Consulte la sección de documentación cloud-init
Fuentes de configuración de red para obtener más información.
Si no especifica ninguna configuración de red para cloud-init
y no ha desactivado la configuración de red, cloud-init
intenta determinar si algún dispositivo conectado tiene una conexión. Si encuentra un dispositivo conectado, genera una configuración de red que emite una petición DHCP en la interfaz. Consulte la sección de la documentación cloud-init
Configuración de red de reserva para obtener más información.
Procedimiento
El siguiente ejemplo añade una configuración de red estática.
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.Añade una sección
network-interfaces
.network-interfaces: | iface eth0 inet static address 192.168.1.10 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.254 bootcmd: - ifdown eth0 - ifup eth0
Puede desactivar una configuración de red añadiendo la siguiente información a sus metadatos.
network config: disabled
Recursos adicionales
3.10. Configurar sólo un usuario root con cloud-init
Puedes configurar tus datos de usuario de forma que tengas un usuario root y ningún otro usuario.
Procedimiento
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.Cree una entrada para el usuario
root
en la secciónusers
.El sencillo ejemplo que sigue incluye una sección
users
con sólo la opciónname
.users: - name: root chpasswd: list: | root:password expire: False
Opcionalmente, configure las claves SSH para el usuario root.
users: - name: root ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.com
3.11. Configuración del almacenamiento con container-storage-setup en cloud-init
Puede configurar el almacenamiento haciendo referencia a la utilidad container-storage-setup
dentro del módulo write_files
.
Procedimiento
Dependiendo de los requisitos de su fuente de datos, abra su archivo de datos de usuario para editarlo, o bien añada la siguiente directiva al directorio
cloud.cfg.d
.NotaTodas las directivas de usuario incluyen
#cloud-config
al principio del archivo para quecloud-init
reconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d
, nombre el archivo*.cfg
, e incluya siempre#cloud-config
al principio del archivo.Añada o modifique el módulo
write_files
para incluir la ruta de acceso a la utilidadcontainer-storage-setup
.El siguiente ejemplo establece el tamaño del volumen lógico raíz a 6GB en lugar de los 3GB por defecto.
write_files: - path: /etc/sysconfig/docker-storage-setup permissions: 0644 owner: root content: | ROOT_SIZE=6G
NotaAntes de RHEL 7.4, container-storage-setup se llamaba docker-storage-setup. Si está utilizando OverlayFS para el almacenamiento, a partir de RHEL 7.4 puede utilizar ese tipo de sistema de archivos con SELinux en modo de refuerzo.
3.12. Cambiar la configuración regional del sistema con cloud-init
Puede configurar la ubicación del sistema con el módulo locale
.
Procedimiento
-
Dependiendo de los requisitos de su fuente de datos, abra su archivo de metadatos para editarlo, o bien añada la siguiente directiva al archivo
cloud.cfg
o al directoriocloud.cfg.d
. -
Añade la directiva
locale
, especificando la ubicación. El siguiente ejemplo establece ellocale
aja_JP
(Japón) con codificaciónUTF-8
.
#cloud-config locale: ja_JP.UTF-8
Recursos adicionales
3.13. cloud-init y scripts de shell
Puede añadir valores de lista o valores de cadena a bootcmd
o runcmd
. También puede proporcionar un script de shell dentro de sus datos de usuario.
-
Si utiliza un valor de lista para
bootcmd
oruncmd
, cada elemento de la lista se ejecuta a su vez utilizandoexecve
. - Si se utiliza un valor de cadena, toda la cadena se ejecuta como un script de shell.
-
Si desea utilizar
cloud-init
para ejecutar un script de shell, puede proporcionar un script de shell (completo con shebang (#!) ) en lugar de proporcionar acloud-init
un archivo.yaml
.
Consulte la sección Ejecutar comandos en el primer arranque para ver ejemplos de cómo poner scripts de shell en bootcmd
y runcmd
.
3.14. Evitar que cloud-init actualice los archivos de configuración
Cuando se crea o restaura una instancia a partir de una imagen de copia de seguridad, el ID de la instancia cambia. El cambio de ID de instancia puede hacer que cloud-init
actualice los archivos de configuración.
Realice el siguiente procedimiento para asegurarse de que cloud-init
no actualiza ciertos archivos de configuración cuando crea o restaura desde una copia de seguridad.
Procedimiento
-
Abra el archivo
/etc/cloud/cloud.cfg
para editarlo. Comente o elimine la configuración que no desea que
cloud-init
actualice cuando restaure su instancia.Por ejemplo, para evitar la actualización del archivo de claves SSH, elimine
-ssh
de la seccióncloud_init_modules
.cloud_init_modules: - disk_setup - migrator - bootcmd - write-files - growpart - resizefs - set_hostname - update_hostname - update_etc_hosts - rsyslog - users-groups # - ssh
Pasos de verificación
Puede comprobar qué archivos de configuración ha actualizado cloud-init
. Para ello, examine el archivo /var/log/cloud/cloud-init.log
. Los archivos actualizados se registran durante el inicio de la instancia con mensajes que comienzan con Writing to
. A continuación, un ejemplo.
2019-09-03 00:16:07,XXX - util.py[DEBUG]: Writing to /root/.ssh/authorized_keys - wb: [XXX] 554 bytes 2019-09-03 00:16:08,XXX - util.py[DEBUG]: Writing to /etc/ssh/sshd_config - wb: [XXX] 3905 bytes
3.15. Modificación de una VM creada a partir de una imagen huésped de KVM después de la ejecución de cloud-init
Esta sección proporciona un procedimiento de ejemplo para cuando quiera modificar la configuración de cloud-init
antes de volver a ejecutar cloud-init
. Cuando usted lanza una VM que incluye el paquete cloud-init
instalado y habilitado, cloud-init
se ejecuta en su estado por defecto en ese arranque inicial de su VM.
Procedimiento
- Inicie sesión en su máquina virtual.
-
Añada o cambie las directivas, por ejemplo, modifique el archivo
cloud.cfg
en el directorio/etc/cloud
o añada directivas al directorio/etc/cloud/cloud.cfg.d
. Ejecute el comando
cloud-init clean
para limpiar los directorios y así poder volver a ejecutarcloud-init
. También puede ejecutar los siguientes comandos como root para limpiar la VM.`rm -Rf /var/lib/cloud/instances/*` `rm -Rf /var/lib/cloud/instance` `rm -Rf /var/lib/cloud/data/*`
NotaPuede guardar la imagen limpiada como una nueva imagen y utilizarla para varias máquinas virtuales. Las nuevas máquinas virtuales se ejecutan en
cloud-init
utilizando la configuración actualizada decloud-init
.Vuelva a ejecutar
cloud-init
o reinicie la máquina virtual.cloud-init
vuelve a ejecutarse, implementando los cambios de configuración que ha realizado.
3.16. Modificación de una VM para una fuente de datos específica después de la ejecución de cloud-init
Esta sección proporciona un procedimiento de ejemplo para cuando desee modificar la configuración de cloud-init
antes de volver a ejecutar cloud-init
. El siguiente procedimiento utiliza OpenStack como ejemplo. Tenga en cuenta que el procedimiento varía en función de su fuente de datos.
Procedimiento
-
Cree y lance una instancia para la plataforma OpenStack. Consulte Instancias de máquinas vir tuales para obtener información sobre la creación de instancias para OpenStack. En este ejemplo, nuestra máquina virtual incluye
cloud-init
, que se ejecuta al arrancar la máquina virtual. -
Agregue o cambie las directivas. Por ejemplo, modificar el archivo
user-data.file
que se almacena en el servidor HTTP de OpenStack. Limpie la máquina virtual. Ejecute los siguientes comandos como root.
`rm -rf /etc/resolv.conf /run/cloud-init` `userdel -rf cloud-user` `hostnamectl set-hostname localhost.localdomain` `rm /etc/NetworkManager/conf.d/99-cloud-init.conf`
NotaPuede guardar la imagen limpiada como una nueva imagen y utilizarla para varias máquinas virtuales. Las nuevas máquinas virtuales ejecutan
cloud-init
utilizando su configuración actualizada decloud-init
.Vuelva a ejecutar
cloud-init
o reinicie la máquina virtual.Cloud-init se vuelve a ejecutar, implementando los cambios de configuración realizados.
3.17. Solución de problemas de cloud-init
Puede solucionar los problemas de su instancia después de que se haya ejecutado cloud-init
examinando su configuración y los archivos de registro. Una vez que haya identificado el problema, puede volver a ejecutar cloud-init
en su instancia.
Puede ejecutar cloud-init
desde la línea de comandos utilizando el comando cloud-init
. Para ver la sintaxis del comando, junto con una descripción de los argumentos y subcomandos opcionales, ejecute el comando cloud-init --help
. La sintaxis básica es la siguiente.
cloud-init [-h] [--version] [--file FILES] [--debug] [--force] {init,modules,single,query,dhclient-hook,features,analyze,devel,collect-logs,clean,status}
El procedimiento que sigue ofrece ideas para identificar problemas con cloud-init
y muestras para volver a ejecutar el programa.
Procedimiento
Revise los archivos de configuración de
cloud-init
.-
Examine el archivo de configuración
/etc/cloud/cloud.cfg
. Compruebe qué módulos están incluidos encloud_init_modules
,cloud_config_modules
, ycloud_final_modules
. -
Compruebe las directivas (archivos
*.cfg
) en el directorio/etc/cloud/cloud.cfg.d
.
-
Examine el archivo de configuración
Revise los archivos
/var/log/cloud-init.log
y/var/log/cloud-init-output.log
para obtener detalles sobre un problema específico. Por ejemplo, si el problema era que la partición raíz no se extendía automáticamente, compruebe los mensajes de registro degrowpart
. Si el sistema de archivos no se extendió, revise los mensajes de registro pararesizefs
. A continuación se muestra un ejemplo de comandogrep
pararesizefs
.# grep resizefs /var/log/cloud-init.log
Notagrowpart
no soporta LVM. Si su partición raíz está basada en LVM, la partición raíz no se extiende automáticamente en el primer arranque.Vuelva a ejecutar
cloud-init
. A continuación se presentan ejemplos de escenarios. Ejecute los comandos como root.Vuelva a ejecutar
cloud-init
sólo con los módulos init./usr/bin/cloud-init -d init
Vuelva a ejecutar
cloud-init
con todos los módulos de su configuración./usr/bin/cloud-init -d módulos
Borrar la caché de
cloud-init
y forzar la ejecución decloud-init
tras el arranque.rm -rf /var/lib/cloud/* && /usr/bin/cloud-init -d init
Ejecute los siguientes comandos para limpiar los directorios y simular una instancia limpia.
rm -Rf /var/lib/cloud/instances/* rm -Rf /var/lib/cloud/instance rm -Rf /var/lib/cloud/data/* reboot
Ejecute los siguientes comandos para volver a ejecutar
cloud-init
.cloud-init init --local cloud-init init
Recursos adicionales