Usar Uso de cloud-init para instalar paquetes en una máquina virtual Linux en Azure

Precaución

En este artículo se hace referencia a CentOS, una distribución de Linux que está cerca de su estado Final de ciclo vida (EOL). Tenga en cuenta su uso y planifique en consecuencia. Para obtener más información, consulte la guía de fin de vida de CentOS.

Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles

En este artículo se muestra el uso de cloud-init para actualizar paquetes en una máquina virtual Linux (VM) o en conjuntos de escalado de máquinas virtuales 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.

Actualización de una máquina virtual con cloud-init

Por motivos de seguridad, es posible que desee configurar una máquina virtual para aplicar las actualizaciones más recientes en el primer arranque. Como cloud-init funciona en distintas distribuciones de Linux, no es necesario especificar apt, zypper ni yum para el administrador de paquetes. En lugar de eso, se define package_upgrade para permitir que el proceso cloud-init determine el mecanismo adecuado para la distribución en uso.

En este ejemplo, usaremos Azure Cloud Shell. Para ver en acción del proceso de actualización, cree un archivo denominado cloud_init_upgrade.txt y pegue la configuración siguiente. Puede utilizar el editor que prefiera. Asegúrese de que todo el archivo cloud-init se copia correctamente, especialmente la primera línea.

Copie el texto siguiente y péguelo en el archivo cloud_init_upgrade.txt. Asegúrese de que todo el archivo cloud-init se copia correctamente, especialmente la primera línea.

#cloud-config
package_upgrade: true
packages:
- httpd

Antes de realizar la implementación, 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 cloud-init con el parámetro --custom-data como se indica a continuación:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_upgrade.txt \
  --admin-username azureuser \
  --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.

SSH a la dirección IP pública de la máquina virtual que se muestra en la salida del comando anterior. Escriba su propiousuario y publicIpAddress, como se indica a continuación:

ssh <user>@<publicIpAddress>

Ejecute la herramienta de administración de paquetes y compruebe si hay actualizaciones:

  • Ejecute el siguiente comando para confirmar que no hay actualizaciones pendientes
sudo yum check-update

Como cloud-init comprobó e instaló las actualizaciones en el arranque, no debería haber ninguna actualización que aplicar.

  • Puede ver el proceso de actualización, el número de paquetes modificados, así como la instalación de httpd al ejecutar el siguiente comando y revisar la salida.
sudo yum history
ID     | Command line                                | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------------------------
     3 | -y install httpd                            | 2022-02-18 18:30 | Install        |    7
     2 | -y upgrade                                  | 2022-02-18 18:23 | I, O, U        |  321 EE
     1 |                                             | 2021-02-04 19:20 | Install        |  496 EE

Pasos siguientes

Para ejemplos de cloud-init de cambios de configuración adicionales, vea lo siguiente: