Compartir a través de


Uso de cloud-init para ejecutar un script de Bash en una máquina virtual Linux en Azure

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: