Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles
En este artículo se muestra el uso de cloud-init para ejecutar un script ya existente de Bash en una máquina virtual Linux (VM) o en conjuntos de escalado de máquinas virtuales (VMSS) en el momento del aprovisionamiento en Azure. Estos scripts de cloud-init se ejecutan durante el primer arranque una vez que Azure ha aprovisionado los recursos. Para obtener más información acerca del funcionamiento nativo de cloud-init en Azure y las distribuciones de Linux compatibles, consulte la introducción a cloud-init.
Ejecución de un script de Bash con cloud-init
Con cloud-init no es necesario convertir los scripts existentes en un archivo cloud-config; cloud-init acepta varios tipos de entrada, uno de los cuales es los scripts de Bash.
Si se ha estado utilizando la extensión de Azure de script personalizado de Linux para ejecutar los scripts, puede migrarlos para que usen cloud-init. De todas formas, las extensiones de Azure han integrado la creación de informes para alertar sobre los errores de script, una implementación de una imagen de cloud-init NO fallará si valla el script.
Para ver esta funcionalidad en acción, cree un script de bash simple para realizar pruebas. Al igual que el archivo cloud-init #cloud-config, este script tiene que ser local en relación a la ubicación en la que se ejecutan los comandos AzureCLI para aprovisionar la máquina virtual. Para este ejemplo, cree el archivo en Cloud Shell, no en la máquina local. Puede utilizar el editor que prefiera. Asegúrese de que todo el archivo cloud-init se copia correctamente, especialmente la primera línea.
#!/bin/sh
echo "this has been written via cloud-init" + $(date) >> /tmp/myScript.txt
Antes de implementar esta imagen, debe crear un grupo de recursos con el comando az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.
az group create --name myResourceGroup --location eastus
Ahora, cree una máquina virtual con az vm create y especifique el archivo de script bash con --custom-data simple_bash.sh como se indica a continuación:
az vm create \
--resource-group myResourceGroup \
--name vmName \
--image imageCIURN \
--custom-data simple_bash.sh \
--generate-ssh-keys
Nota
Reemplace los valores myResourceGroup, vmName e imageCIURN según corresponda. Asegúrese de que se elige una imagen con Cloud-init.
Compruebe que se ha ejecutado el script de bash
SSH a la dirección IP pública de la máquina virtual que se muestra en la salida del comando anterior. Escriba su propio user y publicIpAddress, como se indica a continuación:
ssh <user>@<publicIpAddress>
Compruebe que el archivo /tmp/myScript.txt existe y que contiene el texto adecuado.
sudo cat /tmp/myScript
Si no es así, puede comprobar /var/log/cloud-init.log para más detalles. Busque la siguiente entrada:
sudo cat /var/log/cloud-init.log
Running config-scripts-user using lock Running command ['/var/lib/cloud/instance/scripts/part-001']
Pasos siguientes
Para ejemplos de cloud-init de cambios de configuración adicionales, vea lo siguiente:
- Incorporación de otro usuario de Linux a una máquina virtual
- Ejecución de un administrador de paquetes para actualizar los existentes durante el primer arranque
- Cambio del nombre de host de la máquina virtual local
- Instalación de un paquete de aplicación, actualización de los archivos de configuración e inserción de claves