Configuración de Cloud-Init
Escenarios
Es necesario configurar Cloud-Init después de que esté instalado.
Prerrequisitos
- Se ha instalado Cloud-Init.
- Una EIP ha estado vinculada a la ECS.
- Usted ha iniciado sesión en el ECS.
- El modo de obtención de la dirección IP ECS es DHCP.
Procedimiento
Se requieren las siguientes operaciones:
- Configurar Cloud-Init.
Para más detalles, consulte Configurar Cloud-Init.
- Revise si se configuró correctamente Cloud-Init.
Para más detalles, consulte Comprobar la configuración de Cloud-Init.
Configurar Cloud-Init
- Configure los permisos de usuario para iniciar sesión en el ECS. Si selecciona usuario root, habilite los permisos SSH del usuario root y habilite el inicio de sesión remoto en el ECS mediante una contraseña.
- Si introduce una contraseña, utilícela para iniciar sesión en el ECS de forma remota mediante SSH o noVNC.
- Si introduce una clave privada, utilícela para iniciar sesión en el ECS de forma remota mediante SSH.
Ejecute el siguiente comando para abrir el archivo /etc/cloud/cloud.cfg usando el editor vi:
vi /etc/cloud/cloud.cfg
- (Opcional) En /etc/cloud/cloud.cfg, establezca apply_network_config en apply_network_config.
Este paso es solo para Cloud-Init 18.3 o posterior.
Figura 1 Ejemplo de configuración
- Habilite el inicio de sesión remoto usando la contraseña del usuario root y habilite los permisos SSH del usuario root. Tome CentOS 6.7 como ejemplo. Si el valor de disable_root en el archivo de configuración es 1, los permisos están deshabilitados. Si el valor es 0, los permisos están habilitados. (En algunos sistemas operativos, el valor true indica que los permisos están deshabilitados y false indica que los permisos están habilitados). Establezca disable_root en 0, ssh_pwauth en 1, y lock_passwd en false (lo que indica que las contraseñas de usuario no están bloqueadas).
users: - name: root lock_passwd: False disable_root: 0 ssh_pwauth: 1
- Habilite la actualización del nombre de host. No comente ni elimine la instrucción -update_hostname.
cloud_init_modules: - migrator - bootcmd - write-files - growpart - resizefs - set_hostname - update_hostname - update_etc_hosts - rsyslog - users-groups - ssh
- Ejecute el siguiente comando para abrir el archivo /etc/ssh/sshd_config usando el editor vi:
vi /etc/ssh/sshd_config
- Cambie el valor de PasswordAuthentication en el archivo sshd_config a yes.
Para SUSE y openSUSE, cambie los valores de los siguientes parámetros en el archivo sshd_config a yes:
- PasswordAuthentication
- ChallengeResponseAuthentication
- Eliminar el usuario linux y el directorio /home/linux de la plantilla de imagen.
userdel linux
rm -fr /home/linux
- Habilite al agente para acceder al origen de datos OpenStack de IaaS.
Añada la siguiente información a la última línea de /etc/cloud/cloud.cfg:
datasource_list: [ OpenStack ] datasource: OpenStack: metadata_urls: ['http://169.254.169.254'] max_wait: 120 timeout: 5
- Puede decidir si desea establecer max_wait y timeout. Los valores de max_wait y timeout en la salida del comando anterior son solo de referencia.
- Si la versión del sistema operativo es anterior a Debian 8 o CentOS 5, no puede habilitar al agente para acceder a la fuente de datos OpenStack de IaaS.
- La ruta ceroconf predeterminada debe estar deshabilitada para los ECS de CentOS y EulerOS para un acceso preciso al origen de datos OpenStack de IaaS.
- Evite que Cloud-Init se haga cargo de la red en /etc/cloud/cloud.cfg.
Si la versión de Cloud-Init es 0.7.9 o posterior, agregue el siguiente contenido a /etc/cloud/cloud.cfg:
network: config: disabled
El contenido agregado debe estar en formato YAML.
Figura 2 Impedir que Cloud-Init se haga cargo de la red
- Añada el siguiente contenido a /etc/cloud/cloud.cfg:
manage_etc_hosts: localhost
Esto evita que el sistema permanezca en el estado Waiting for cloudResetPwdAgent durante mucho tiempo durante ECSel inicio.
Figura 3 Adición de manage_etc_hosts: localhost
- Modifique el archivo de configuración cloud_init_modules.
Mueva ssh de abajo a arriba para acelerar el inicio de sesión de SSH.
Figura 4 Acelerar el inicio de sesión SSH en el ECS
- Modifique la configuración para que el nombre de host del ECS creado a partir de la imagen no contenga el sufijo.novalocal y pueda contener un punto (.).
- Ejecute el siguiente comando para modificar el archivo __init__.py:
vi /usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py
Pulse i para entrar en el modo de edición. Busque toks. Se muestra la siguiente información:
if toks: toks = str(toks).split('.') else: toks = ["ip-%s" % lhost.replace(".", "-")] else: toks = lhost.split(".novalocal") if len(toks) > 1: hostname = toks[0] #domain = '.'.join(toks[1:]) else: hostname = toks[0] if fqdn and domain != defdomain: return "%s.%s" % (hostname, domain) else: return hostname
Una vez completada la modificación, pulse Esc para salir del modo de edición e introduzca :wq! para guardar la configuración y salir.
Figura 5 Modificación del archivo __init__.py
- Ejecute el siguiente comando para cambiar a la carpeta cloudinit/sources:
cd /usr/lib/python2.7/site-packages/cloudinit/sources/
- Ejecute los siguientes comandos para eliminar el archivo __init__.pyc y el archivo __init__.pyo optimizado:
rm -rf __init__.pyc
rm -rf __init__.pyo
- Ejecute los siguientes comandos para borrar los registros:
rm -rf /var/log/cloud-init*
- Ejecute el siguiente comando para modificar el archivo __init__.py:
- Ejecute el siguiente comando para editar el archivo /etc/cloud/cloud.cfg.d/05_logging.cfg para usar cloudLogHandler para procesar registros:
vim /etc/cloud/cloud.cfg.d/05_logging.cfg
Figura 6 Establecer el valor del parámetro en cloudLogHandler
Comprobar la configuración de Cloud-Init
Ejecute el siguiente comando para comprobar si Cloud-Init se ha configurado correctamente:
cloud-init init --local
(Opcional) Ejecute el siguiente comando para establecer el período de validez de la contraseña al máximo:
chage -M 99999 $user_name
user_name es un usuario del sistema, como usuario root.
Se recomienda establecer el período de validez de la contraseña en 99999.