Crear una máquina virtual es aburrido. Crear cientos lleva mucho tiempo. cloud-init le permite automatizar la creación de máquinas virtuales en Microsoft Azure.

Si alguna vez ha configurado una máquina virtual, sabe cómo funciona. Hace clic aquí y allá, hace clic en su camino un poco más y, al final, tiene un sistema configurado. Pero aún debe instalar el software y configurar la máquina virtual según sus preferencias.

Ahora imagine que desea configurar cientos de máquinas virtuales. Hacer clic en su camino a través de la instalación no es tan efectivo. En cambio, debe automatizar el proceso tanto como sea posible, y ahí es donde entra cloud-init.

Echemos un vistazo a cómo puede automatizar la instalación del sistema operativo y la configuración de la máquina virtual mediante cloud-init en Microsoft Azure.

¿Por qué usar cloud-init para automatizar la creación de máquinas virtuales?

cloud-init es una poderosa herramienta de automatización de implementación que desarrolla Canonical, la compañía detrás de Ubuntu.

instagram viewer

Con cloud-init, puede instalar e implementar sistemas operativos Linux y configurar otros aspectos de una máquina virtual. Por ejemplo, puede usar cloud-init para configurar cuentas de usuario, instalar y configurar software, agregar claves SSH, lo que sea.

En la actualidad, la mayoría de los proveedores de servicios en la nube, como Azure, Linode y Amazon Web Services (AWS), admiten el inicio en la nube.

Aunque cloud-init comenzó en Ubuntu, ahora es compatible con las principales distribuciones de Linux, como openSUSE, Debian, Red Hat Enterprise Linux (RHEL), etc.

Además de implementar software en la nube, también puede usar cloud-init para configurar e instalar software en servidores locales o entornos virtuales como VirtualBox, KVM y VMware.

Usaremos la plataforma en la nube de Microsoft Azure para automatizar la implementación de un servidor Ubuntu usando cloud-init.

Paso 1: Creación de un script de inicialización en la nube

Los scripts cloud-init usan módulos para configurar diferentes aspectos de su sistema. Por ejemplo, usará el usuarios módulo para configurar la información y las cuentas de los usuarios, y el protector de alambre módulo para configurar WireGuard, etc. Hay toneladas de otros módulos que puede usar de inmediato.

Vamos a crear un script de inicio en la nube para automatizar la mayoría de las cosas que configura al configurar una nueva máquina virtual.

Crearemos un usuario llamado "mwiza" y le asignaremos una contraseña. Para simplificar, usemos una contraseña de texto sin formato, pero puede cifrarla si lo desea. Además, agregue la clave SSH del usuario a las claves autorizadas. Esto le permite deshabilitar los inicios de sesión con contraseña SSH más adelante para una mayor seguridad.

Además de crear un nuevo usuario, el script debe hacer lo siguiente:

  • Escribir un archivo: Cree un archivo simple y escriba contenido en él usando el escribir_archivos módulo. El archivo se colocará en el directorio de inicio. Puede usar los mismos conceptos para crear archivos más complejos en el futuro.
  • Comandos en ejecución: Ejecutaremos comandos simples para configurar el firewall UFW, pero podría ser cualquier otro comando de Linux. utilizar el ejecutarcmd módulo para ejecutar cualquier comando de su elección; es similar a ejecutar comandos de Linux por ejecutando scripts Bash.
  • Configuración de locales: Esto establece sus configuraciones regionales preferidas, como la distribución del teclado, el idioma preferido, la zona horaria, etc.
  • Instalar paquetes: Use su administrador de paquetes favorito para instalar paquetes en su sistema. Por ejemplo, en sistemas basados ​​en Debian, puede usar APT.

Estos son solo algunos de los módulos que puede usar desde cloud-init; hay varios otros módulos para automatizar todo tipo de cosas.

Aquí está la secuencia de comandos cloud-init completa para configurar la nueva cuenta de usuario. Recuerde reemplazar la clave SSH con la correcta. Además, no dude en cambiar el nombre de usuario y cualquier otro detalle.

vim: sintaxis=yaml

# Agregar usuarios del sistema aquí
usuarios:
- nombre: mwiza
grupos: usuarios, sudo
shell: /bin/bash
gecos: mwiza
plain_text_passwd: Vivir-reír-amor12345G123
lock_passwd: falso
ssh_autorizadas_claves:
- ssh-ed25519 BSHSDSDS3NzaC1sdfSDGSDSDJ1KSDB: PWELJWEEWeKBrkXWbLJBs; ldfkagfafkC6li71Ra6i+NKkajdfi [email protected]

# Instalar, actualizar y actualizar paquetes
paquete_actualización: verdadero
paquete_actualización: verdadero
paquete_reboot_if_require: verdadero

paquetes:
- trazar ruta
- herramientas de red
- fail2ban

# Establecer configuraciones regionales
configuración regional: en_UK
zona horaria: etc./UTC
teclado:
diseño: nota

escribir_archivos:
- ruta: /etc/salt/minion.d/master_ip_port.conf
contenido: |
maestro: sal
puerto_maestro: 4506
publicar_puerto: 4505
- ruta: /home/mwiza/cloud-init.txt
contenido: |
creado por cloud-init en azure

# Ejecución de comandos Bash para configurar software y servicios
ejecutarcmd:
- habilitar ufw
- ufw permitir ssh
- ufw permite 80
- systemctl habilitar ufw

# Apague la máquina virtual después de finalizar la inicialización
apagado: apagado

La secuencia de comandos cloud-init usa YAML, así que asegúrese de que la sangría sea correcta; de lo contrario, no funcionará como se esperaba.

Paso 2: crear el recurso de la máquina virtual

El siguiente paso es crear el recurso necesario en Azure para la máquina virtual. Inicie sesión en Azure si ya tiene una cuenta o cree una cuenta de prueba gratuita dirigiéndose a azure.microsoft.com.

En la página de inicio de Azure Portal, haga clic en el crear un recurso botón. En la lista de los servicios de Azure más populares, seleccione Máquina virtual.

La siguiente página le brinda información para crear recursos de VM, como disco duro, redes, etc.

Asigne a su máquina virtual un nombre significativo y seleccione la región de implementación. Además, cree un grupo de recursos para su VM o use uno existente.

Bajo la Autenticación tipo, seleccione el Contraseña y proporcione su nombre de usuario y contraseña segura.

Después de completar todos los campos en esta página, sus detalles deben ser similares a los siguientes.

Paso 3: agregar su secuencia de comandos cloud-init

A continuación, haga clic en el Avanzado pestaña para agregar el script cloud-init. Copie y pegue el script de inicio de nube del primer paso en el campo de datos personalizado.

Finalmente, haga clic en el Revisar + crear botón. Si todo está bien, la prueba pasará. De lo contrario, el creador de Azure VM lo guiará sobre las correcciones a realizar.

Paso 4: iniciar sesión en su máquina virtual

Utilice la información general de la máquina virtual para obtener la dirección IP pública de su máquina virtual e inicie sesión a través de SSH. Si usó la clave SSH correcta, el sistema no le pedirá que ingrese la contraseña de usuario.

Una vez que haya iniciado sesión, puede verificar que los archivos que deseaba crear a través del script están allí. También, buscar paquetes instalados con APT y verifique que el firewall se haya configurado correctamente usando el sudo ufw estado dominio.

cloud-init también registra información importante en el /var/log/cloud-init.log archivo. Contiene mensajes detallados de todos los eventos que ocurrieron durante la inicialización de cloud-init. Puede verificar este archivo usando el comando cat de la siguiente manera:

gato /var/log/cloud-init.log

Automatice la creación de máquinas virtuales con cloud-init

cloud-init es una poderosa herramienta que lo ayuda a automatizar la instalación y configuración de Linux. Puede usarlo en la nube y en servidores locales. Ya sea que solo desee automatizar la implementación de su máquina virtual o necesite implementar servidores Linux a gran escala, cloud-init es una excelente opción.

En una nota relacionada, siempre asegure sus inicios de sesión SSH para sus máquinas virtuales basadas en la nube para evitar violaciones de seguridad.