o profundizar en un conocimiento profundo de los lenguajes de automatización. La tecnología cloud-config en cloud-init proporciona un buen grado de automatización de la implementación sin exigir varias tecnologías nuevas. Está en uso en algunos de los proveedores de nube más importantes, aunque es posible que no se dé cuenta.
Cloud-init es un paquete de scripts y utilidades que maneja la inicialización temprana de una instancia en la nube. Cloud-config es una implementación impulsada por un archivo de configuración. Con cloud-config para cloud-init, el administrador puede inyectar la configuración y configurar las acciones que se realizarán en la implementación inicial del sistema operativo, personalizándola para que se ajuste a requisitos específicos.
Escriba el archivo de configuración para, por ejemplo, agregar usuarios; instalar paquetes adicionales; crear, modificar y configurar archivos; o llame a scripts externos. El archivo de configuración está formateado en YAML.
Cloud-config es compatible con la mayoría de los principales sistemas operativos Linux. La mayoría de los principales proveedores de nube, incluidos DigitalOcean, Rackspace, AWS y Microsoft Azure, lo admiten. Este tutorial utiliza DigitalOcean para demostrar la configuración de cloud-config.
Consejos de configuración de la nube
Este tutorial guía a un administrador a través de cómo crear e insertar manualmente un archivo de configuración de configuración de nube, pero también es posible usar una API. El resultado es una máquina virtual configurada para un servidor que tiene un usuario secundario no root con capacidad de inicio de sesión Secure Socket Shell (SSH) instalado con un servidor Apache.
Inicie sesión en la interfaz de DigitalOcean y seleccione la opción para crear una nueva gota, que es el lenguaje del proveedor para VM. Ampliar la Seleccionar opciones adicionales pestaña y seleccione Datos del usuario (ver figura). Colocaremos los comandos / archivo de configuración de la nube aquí.
La primera línea del archivo de configuración identifica la información como un archivo de configuración de nube: Ingrese # cloud-config. Los comentarios se incluyen en el archivo con # al comienzo de cada línea de comentario.
Cree la configuración de la nube que se adapte a sus necesidades y péguela en esta ventana. Cuando el proveedor de la nube crea el servidor, ingiere los datos de configuración de la nube.
Como ocurre con todos los archivos YAML, las pestañas del archivo interrumpirán la configuración. El formato es de suma importancia.
Este es un punto de partida para la configuración de la nube y ayudará a un administrador nuevo en la tecnología a crear un script con el tiempo. Este enfoque requiere que elimine y vuelva a crear la máquina virtual, pero no costará mucho, siempre que recuerde eliminar las gotas una vez que haya terminado.
Genere el código una línea a la vez. Si algo se rompe, puede volver a una secuencia de comandos en funcionamiento simplemente eliminando o comentando la última línea o comando que se editó.
Cloud-config en acción
Es hora de comenzar a codificar un archivo de configuración para cloud-init.
1. Agregue un usuario.
# cloud-config
usuarios:
– nombre: stuart
claves-autorizadas-ssh:
– ssh-rsa
sudo: [‘ALL=(ALL) NOPASSWD:ALL’]
grupos: sudo
shell: / bin / bash
Esto crea un usuario y utiliza claves SSH creadas previamente. Los otros elementos establecen el shell deseado, bash, en este caso, y utilizan el sudo comando para realizar tareas de gestión sin necesidad de especificar la contraseña de usuario.
Es posible especificar una contraseña hash para iniciar sesión. Esto ya no se considera seguro y, por lo tanto, definitivamente no debe usarse. En su lugar, utilice el método de clave SSH.
2. Sin embargo, en el momento de la publicación, aún puede iniciar sesión mediante contraseña, e incluso el usuario root puede iniciar sesión de forma predeterminada en la mayoría de las configuraciones de nube. Esto no es ideal y debería desactivarse. Un administrador puede configurarlos en el sshd_config archivo con el sed (sed = editor de flujo) comando, en combinación con el runcmd opción. Dentro de / etc / sshd / sshd_config archivo, hay líneas específicas que deben modificarse.
El runcmd también puede ejecutar comandos igualmente arbitrarios o ejecutar scripts. Para habilitar lo anterior, use las siguientes entradas en runcmd:
– sed -i -e ‘/^PermitRootLogin/s/^.*$/PermitRootLogin no /’ / etc / ssh / sshd_config
– sed -i ‘s |[#]* PasswordAuthentication sí | PasswordAuthentication no | g ‘/ etc / ssh / sshd_config
Agregar paquetes es igualmente fácil, nuevamente, usando los elementos de configuración paquetes:. Para instalar un servidor web, por ejemplo, puede ser tan simple como lo siguiente:
paquetes:
– apache2
Especifique varios paquetes y grupos si lo desea.
3. Para actualizar el servidor, asegúrese de que estén instaladas todas las actualizaciones más recientes. Una vez que todos los paquetes estén actualizados, actualice la base de datos de paquetes y realice actualizaciones de paquetes. Esto es tan simple como:
package_upgrade: verdadero
4. Una vez que se completen las actualizaciones, reinicie su máquina para asegurarse de que todos los cambios se hayan bloqueado. Agregue la siguiente entrada al final de la configuración. Este código se toma directamente de los ejemplos de configuración de la nube:
power_state:
tiempo de espera: 120
retraso: «+5»
mensaje: reiniciando en cinco minutos. Guarde su trabajo.
modo: reiniciar
Hay registros disponibles para depurar la salida almacenada en / var / log /, que se llamará cloud-init.log y cloud-init-output.log. Este es un glosario incompleto de posibles comandos. Los comandos adicionales se encuentran en el manual. Utilice un sistema de control de versiones para gestionar todos los cambios, crear el archivo de configuración a lo largo del tiempo y garantizar la precisión en cada paso del proceso.
El código de ejemplo completo se muestra a continuación. Recuerde usar espacios, no pestañas:
# cloud-config
usuarios:
– nombre: stuart
claves-autorizadas-ssh:
– ssh-rsa
sudo: [‘ALL=(ALL) NOPASSWD:ALL’]
grupos: sudo
shell: / bin / bash
paquetes:
– apache2
runcmd:
– sed -i -e ‘/^PermitRootLogin/s/^.*$/PermitRootLogin no /’ / etc / ssh / sshd_config
– sed -i ‘s |[#]* PasswordAuthentication sí | PasswordAuthentication no | g ‘/ etc / ssh / sshd_config
Suponiendo que todas las claves SSH estén configuradas correctamente en su estación de trabajo local, debería poder iniciar sesión y verificar que se hayan realizado los cambios.
La documentación de cloud-init ofrece algunos ejemplos prácticos útiles. Puede llevar algo de tiempo y retoques lograr la configuración exacta deseada, pero el punto de entrada es mucho más bajo, lo que lo hace atractivo como una solución rápida y fácil para configuraciones estandarizadas simples.