Compartir por


Tutorial: Instalación de aplicaciones en conjuntos de escalado de máquinas virtuales con la CLI de Azure

Para ejecutar aplicaciones en las instancias de máquinas virtuales (VM) de un conjunto de escalado, primero debe instalar los componentes de la aplicación y los archivos necesarios. En un tutorial anterior, aprendió a crear y usar una imagen de máquina virtual personalizada para implementar las instancias de máquina virtual. Esta imagen personalizada incluía instalaciones y configuraciones manuales de aplicaciones. También puede automatizar la instalación de aplicaciones en un conjunto de escalado después de implementar cada instancia de máquina virtual, o actualizar una aplicación que ya se ejecuta en un conjunto de escalado. En este tutorial, aprenderá a:

  • Instalar automáticamente aplicaciones en un conjunto de escalado
  • Usar la extensión de script personalizado de Azure
  • Actualizar una aplicación en ejecución en un conjunto de escalado

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Requisitos previos

  • En este artículo se necesita la versión 2.0.29 o posterior de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

¿Qué es la extensión de script personalizado de Azure?

La extensión de script personalizado descarga y ejecuta scripts en máquinas virtuales de Azure. Esta extensión es útil para la configuración posterior a la implementación, la instalación de software o cualquier otra tarea de configuración o administración. Los scripts se pueden descargar desde Azure Storage o GitHub, o se pueden proporcionar a Azure Portal en el tiempo de ejecución de la extensión.

La extensión de script personalizado se integra con las plantillas de Azure Resource Manager y también se puede usar con la CLI de Azure, Azure PowerShell, Azure Portal o la API REST. Para obtener más información, consulte Información general de la extensión de script personalizado.

Para usar la extensión de script personalizado con la CLI de Azure, puede crear un archivo JSON que defina qué archivos se van a obtener y qué comandos se van a ejecutar. Estas definiciones JSON se pueden volver a usar en implementaciones del conjunto de escalado para aplicar instalaciones de la aplicación coherentes.

Creación de una definición de extensión de script personalizado

Para ver la extensión de script personalizado en acción, vamos a crear un conjunto de escalado que instala el servidor web de NGINX y genera el nombre de host de la instancia de máquina virtual del conjunto de escalado. La siguiente definición de extensión de script personalizado descarga un script de ejemplo de GitHub, instala los paquetes necesarios y, luego, escribe el nombre de host de la instancia de máquina virtual en una página HTML básica.

En el shell actual, cree un archivo denominado customConfig.json y pegue la siguiente configuración. Por ejemplo, cree el archivo en Cloud Shell, no en la máquina local. Puede utilizar el editor que prefiera. Para este tutorial, se utilizará Vi. Escriba vi en Cloud Shell. Pegue el código JSON siguiente en el editor y escriba :w customConfig.json.

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh"],
  "commandToExecute": './automate_nginx.sh'
}

Nota

Es posible que tenga que invertir el uso de las comillas simples (') y dobles (") dentro del bloque JSON si decide hacer referencia al JSON directamente (en lugar de al archivo customConfig.json) en el parámetro --settings a continuación.

Creación de un conjunto de escalado

Importante

A partir de noviembre de 2023, los conjuntos de escalado de máquinas virtuales creados con PowerShell y la CLI de Azure tendrán como valor predeterminado el modo de orquestación flexible si no se especifica ningún modo de orquestación. Para más información acerca de este cambio y las acciones que debe realizar, vaya a Cambio importante para clientes de PowerShell o la CLI de VMSS: Centro de comunidad de Microsoft

Cree un grupo de recursos con az group create. 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 un conjunto de escalado de máquinas virtuales con az vmss create. En el ejemplo siguiente se crea un conjunto de escalado denominado myScaleSet y se generan claves SSH si estas no existen aún:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image Ubuntu2204 \
  --orchestration-mode Flexible \
  --admin-username azureuser \
  --generate-ssh-keys

Se tardan unos minutos en crear y configurar todos los recursos de conjunto de escalado y máquinas virtuales.

Aplicación de la extensión de script personalizado

Aplique la configuración de la extensión de script personalizado a las instancias de máquinas virtuales del conjunto de escalado con az vmss extension set. En el siguiente ejemplo se aplica la configuración customConfig.json a las instancias de máquina virtual myScaleSet del grupo de recursos denominado myResourceGroup:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings customConfig.json

Precaución

Los nombres de archivos distinguen entre mayúsculas y minúsculas. Use el nombre de archivo exacto indicado en estas instrucciones para evitar errores.

Aplicación de la extensión a las instancias existentes del conjunto de escalado

Actualice todas las instancias para aplicar el script personalizado. El proceso de actualización tardará un par de minutos.

az vmss update-instances --resource-group myResourceGroup --name myScaleSet --instance-ids "*"

Permitir el tráfico hacia el puerto 80

Para permitir que el tráfico fluya a través del equilibrador de carga a las máquinas virtuales, es necesario actualizar el grupo de seguridad de red predeterminado.

az network nsg rule create --name AllowHTTP --resource-group myResourceGroup --nsg-name myScaleSetNSG --access Allow --priority 1010 --destination-port-ranges 80 

Prueba del conjunto de escalado

Para ver el servidor web en acción, obtenga la dirección IP pública del equilibrador de carga con az network public-ip show. En el ejemplo siguiente se obtiene la dirección IP de myLoadBalancerRuleWeb que se ha creado como parte del conjunto de escalado:

az network public-ip show \
  --resource-group myResourceGroup \
  --name myScaleSetLBPublicIP \
  --query [ipAddress] \
  --output tsv

Escriba la dirección IP pública del equilibrador de carga en un explorador web. El equilibrador de carga distribuye el tráfico a una de las instancias de VM, como se muestra en el ejemplo siguiente:

Página web básica de NGINX

Deje el explorador web abierto para que pueda ver una versión actualizada en el paso siguiente.

Cambio de la directiva de actualización

En la sección anterior, para aplicar la aplicación actualizada a todas las instancias del conjunto de escalado, se necesitaba una actualización manual. Para permitir que las actualizaciones se apliquen automáticamente a todas las instancias de conjunto de escalado existentes, actualiza la directiva de actualización de manual a automática. Para obtener más información sobre las directivas de actualización, consulta Directivas de actualización de Virtual Machine Scale Sets.

az vmss update \
    --name myScaleSet \
    --resource-group myResourceGroup \
    --set upgradePolicy.mode=automatic

Actualización de la implementación de aplicaciones

En el shell actual, cree un archivo denominado customConfig2.json y pegue la siguiente configuración. Esta definición ejecuta una versión v2 actualizada del script de instalación de la aplicación:

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx_v2.sh"],
  "commandToExecute": "./automate_nginx_v2.sh"
}

Aplique de nuevo la configuración de la extensión de script personalizado al conjunto de escalado con el conjunto de extensión de VMSS de az. customConfigv2.json se usa para aplicar la versión actualizada de la aplicación:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings @customConfigv2.json

Dado que el conjunto de escalado ahora usa una directiva de actualización automática, la aplicación actualizada se aplicará automáticamente a las instancias existentes del conjunto de escalado. Actualice el explorador web para ver la aplicación actualizada.

Página web actualizada de NGINX

Limpieza de recursos

Para quitar el conjunto de escalado y los recursos adicionales, elimine el grupo de recursos y todos sus recursos con az group delete. El parámetro --no-wait devuelve el control a la petición de confirmación sin esperar a que finalice la operación. El parámetro --yes confirma que desea eliminar los recursos sin pedir confirmación adicional.

az group delete --name myResourceGroup --no-wait --yes

Pasos siguientes

En este tutorial, aprendió a instalar y actualizar automáticamente aplicaciones en un conjunto de escalado con la CLI de Azure:

  • Instalar automáticamente aplicaciones en un conjunto de escalado
  • Usar la extensión de script personalizado de Azure
  • Actualizar una aplicación en ejecución en un conjunto de escalado

Vaya al siguiente tutorial para aprender cómo se escala automáticamente el conjunto de escalado.