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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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-initse 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-initen 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-initya 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 Copiar enlaceEnlace copiado en el portapapeles!
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.cfgincluye 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.des 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-configal principio del archivo.
1.2. cloud-init funciona por etapas Copiar enlaceEnlace copiado en el portapapeles!
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-initen el arranque. -
Durante la etapa local,
cloud-initencuentra las fuentes de datos locales y aplica la configuración de la red. -
Durante la etapa de red,
cloud-initprocesa los datos del usuario y ejecuta los módulos listados encloud_init_modulesen su archivocloud.cfg. Puedes activar, desactivar o añadir módulos a la seccióncloud_init_modules. -
Durante la etapa de configuración,
cloud-initejecuta los módulos listados encloud_config_modulesen su archivocloud.cfg. Puedes activar, desactivar o añadir módulos a la seccióncloud_config_modules. -
Durante la etapa final,
cloud-initpuede ejecutar lo que haya incluido encloud_final_modulesen 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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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.cfgy 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-initFormatos 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-initse 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-initactú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-initMetadatos 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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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.
| 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 Copiar enlaceEnlace copiado en el portapapeles!
Puede utilizar cloud-init con los siguientes productos de Red Hat.
-
Red Hat Virtualization. Una vez que instale
cloud-initen una VM, puede crear una plantilla y aprovechar las funciones decloud-initpara 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-initcon las máquinas virtuales. -
Red Hat OpenStack Platform. Puede utilizar
cloud-initpara 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-initpara 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-initcon 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-initcuando 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 Copiar enlaceEnlace copiado en el portapapeles!
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.
| 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.
| Módulo |
|---|
| apt_configure |
| apt_pipeline |
| byobu |
| chef |
| emit_upstart |
| grub_dpkg |
| ubuntu_init_switch |
2.4. El archivo cloud.cfg por defecto Copiar enlaceEnlace copiado en el portapapeles!
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.cfgpueden ser anuladas por los datos del usuario. -
Cuando se ejecuta
cloud-initmanualmente, se puede anularcloud.cfgcon 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:
- default
disable_root: 1
ssh_pwauth: 0
mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
ssh_deletekeys: 1
ssh_genkeytypes: ~
syslog_fix_perms: ~
disable_vmware_customization: false
cloud_init_modules:
- disk_setup
- migrator
- bootcmd
- write-files
- growpart
- resizefs
- set_hostname
- update_hostname
- update_etc_hosts
- rsyslog
- users-groups
- ssh
cloud_config_modules:
- 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:
- 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:
name: cloud-user
lock_passwd: true
gecos: Cloud User
groups: [adm, systemd-journal]
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/bash
distro: rhel
paths:
cloud_dir: /var/lib/cloud
templates_dir: /etc/cloud/templates
ssh_svcname: sshd
# 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
sshestá 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-initse ejecuta en múltiples etapas de arranque. Establezca esta opción para quecloud-initpueda registrar todas las etapas en su archivo de registro. Encuentre más información sobre esta opción en el archivocloud-config.txten 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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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 Copiar enlaceEnlace copiado en el portapapeles!
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
cloudinitisoy muévase a él.$ mkdir cloudinitiso $ cd cloudinitisoCree un archivo llamado
meta-data. Añade la siguiente información al archivo.instance-id: citest local-hostname: citest-1Cree 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.comNotaLa última línea del archivo
user-datahace 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
genisoimagepara crear una imagen ISO que incluyauser-dataymeta-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 \ --importAcceda 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-initpara ver si ha completado sus tareas.[cloud-user@citest-1 instance]$ cloud-init status status: donecloud-initcrea la disposición del directoriocloud-initbajo/var/lib/cloudcuando 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
NoCloudcomprobando el archivo de la fuente de datos.$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]cloud-initcopia 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.comEstos son ejemplos. El diseño del directorio
cloud-initincluye 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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal 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.comEsto funciona para caducar la contraseña porque
passwordychpasswdoperan con el usuario por defecto a menos que se indique lo contrario.NotaEsta es una configuración global. Si establece
chpasswdenTrue, 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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal 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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal principio del archivo.Cree una lista de usuarios en la sección
chpasswddel 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: FalseNotaSi 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 Copiar enlaceEnlace copiado en el portapapeles!
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 suusernameypassword, pongaauto-attachenTrue, y pongaservice-levelenself-support.rh_subscription: username: sample@redhat.com password: 'mypassword' auto-attach: True service-level: self-supportNotaLa opción
service-levelrequiere 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 keyyorgy establezcaauto-attachaTrue.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: XYZ01234567NotaEsta 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-attachenTrue.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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal principio del archivo.Añade o modifica la sección
userspara añadir usuarios.-
Si quieres que
cloud-usersea el usuario creado por defecto junto con los demás usuarios que especifiques, asegúrate de añadirdefaultcomo primera entrada de la sección. Si no es la primera entrada, no se creacloud-user. Por defecto, los usuarios son etiquetados como
unconfined_usi 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: FalseNota-
El ejemplo coloca al usuario
user2en dos grupos,usersywheel. -
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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal principio del archivo.Añade las secciones para
bootcmdyruncmd; 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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal principio del archivo.-
Añada una entrada en
sudoy especifique el acceso del usuario. Por ejemplo,sudo: ALL=(ALL) NOPASSWD:ALLpermite a un usuario el acceso sin restricciones. Añade una entrada en
groupsy 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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal 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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal principio del archivo.Cree una entrada para el usuario
rooten la secciónusers.El sencillo ejemplo que sigue incluye una sección
userscon sólo la opciónname.users: - name: root chpasswd: list: | root:password expire: FalseOpcionalmente, 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 Copiar enlaceEnlace copiado en el portapapeles!
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-configal principio del archivo para quecloud-initreconozca que el archivo contiene directivas de usuario. Cuando incluya directivas en el directoriocloud.cfg.d, nombre el archivo*.cfg, e incluya siempre#cloud-configal principio del archivo.Añada o modifique el módulo
write_filespara 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=6GNotaAntes 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 Copiar enlaceEnlace copiado en el portapapeles!
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.cfgo al directoriocloud.cfg.d. -
Añade la directiva
locale, especificando la ubicación. El siguiente ejemplo establece ellocaleaja_JP(Japón) con codificaciónUTF-8.
#cloud-config
locale: ja_JP.UTF-8
Recursos adicionales
3.13. cloud-init y scripts de shell Copiar enlaceEnlace copiado en el portapapeles!
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
bootcmdoruncmd, 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-initpara ejecutar un script de shell, puede proporcionar un script de shell (completo con shebang (#!) ) en lugar de proporcionar acloud-initun 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 Copiar enlaceEnlace copiado en el portapapeles!
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.cfgpara editarlo. Comente o elimine la configuración que no desea que
cloud-initactualice cuando restaure su instancia.Por ejemplo, para evitar la actualización del archivo de claves SSH, elimine
-sshde 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 Copiar enlaceEnlace copiado en el portapapeles!
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.cfgen el directorio/etc/cloudo añada directivas al directorio/etc/cloud/cloud.cfg.d. Ejecute el comando
cloud-init cleanpara 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-initutilizando la configuración actualizada decloud-init.Vuelva a ejecutar
cloud-inito reinicie la máquina virtual.cloud-initvuelve 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 Copiar enlaceEnlace copiado en el portapapeles!
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.fileque 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-initutilizando su configuración actualizada decloud-init.Vuelva a ejecutar
cloud-inito 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 Copiar enlaceEnlace copiado en el portapapeles!
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.logy/var/log/cloud-init-output.logpara 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 comandogreppararesizefs.# grep resizefs /var/log/cloud-init.logNotagrowpartno 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-initsólo con los módulos init./usr/bin/cloud-init -d initVuelva a ejecutar
cloud-initcon todos los módulos de su configuración./usr/bin/cloud-init -d módulosBorrar la caché de
cloud-inity forzar la ejecución decloud-inittras el arranque.rm -rf /var/lib/cloud/* && /usr/bin/cloud-init -d initEjecute 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/* rebootEjecute los siguientes comandos para volver a ejecutar
cloud-init.cloud-init init --local cloud-init init
Recursos adicionales