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
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- 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:
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.
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.