Tutorial: instalar aplicativos em Conjuntos de Dimensionamento de Máquinas Virtuais com a CLI do Azure

Para executar aplicações nas instâncias de máquina virtual (VM) de um conjunto de dimensionamento, primeiro é necessário instalar os componentes da aplicação e os arquivos necessários. Em um tutorial anterior, você aprendeu a criar e usar uma imagem de VM personalizada para implantar suas instâncias de VM. Essa imagem personalizada incluía instalações manuais de aplicativos e configurações. Você também pode automatizar a instalação de aplicativos para um conjunto de dimensionamento após a implantação de cada instância de VM ou atualizar um aplicativo que já é executado em um conjunto de dimensionamento. Neste tutorial, você aprenderá a:

  • Instalar automaticamente aplicações em seu conjunto de dimensionamento
  • Use a Extensão de Script Personalizado do Azure
  • Atualizar um aplicativo em execução em um conjunto de escala

Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

  • Este artigo exige a versão 2.0.29 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.

O que é a Extensão de Script Personalizado do Azure?

A extensão de script personalizado baixa e executa scripts em VMs do Azure. Essa extensão é útil para configuração pós-implantação, instalação de software ou qualquer outra tarefa de configuração ou gerenciamento. Os scripts podem ser baixados do armazenamento do Azure ou do GitHub, ou fornecidos ao Portal do Azure no tempo de execução da extensão.

A extensão de script personalizado integra-se aos modelos do Azure Resource Manager e também pode ser usada com a CLI do Azure, o Azure PowerShell, o portal do Azure ou a API REST. Para obter mais informações, consulte a Visão geral da Extensão de Script Personalizado.

Para usar a Extensão de Script Personalizado com a CLI do Azure, você deve criar um arquivo JSON que define quais arquivos para obter e os comandos a serem executados. Essas definições JSON podem ser reutilizadas em implantações de conjuntos de dimensionamento para aplicar instalações consistentes de aplicativos.

Criar definição de Extensão de Script Personalizado

Para ver a Extensão de Script Personalizado em ação, vamos criar um conjunto de dimensionamento que instala o servidor web NGINX e retorna o nome do host da instância de VM no conjunto de dimensionamento. A definição de Extensão de Script Personalizado a seguir faz o download de um script de exemplo do GitHub, instala os pacotes necessários e grava o nome de host da instância de VM em uma página HTML básica.

No shell atual, crie um arquivo chamado customConfig.json e cole a configuração a seguir. Por exemplo, crie o arquivo no Cloud Shell e não em seu computador local. Você pode usar qualquer editor que queira. Neste tutorial usaremos Vi. Digitevi no Cloud Shell. Cole o JSON abaixo no editor e digite :w customConfig.json.

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

Observação

Talvez seja necessário inverter o uso das aspas simples (') e duplas (") no bloco JSON caso você queira referenciar o JSON diretamente (em vez de referenciar o arquivo customConfig.json) no parâmetro --settings abaixo.

Criar um conjunto de escala

Importante

A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure terão o Modo de Orquestração Flexível como padrão se nenhum modo de orquestração for especificado. Para obter mais informações sobre essa alteração e as ações que você deve tomar, acesse Alteração significativa para clientes do PowerShell/CLI do VMSS - Microsoft Community Hub

Crie um grupo de recursos com az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização eastus:

az group create --name myResourceGroup --location eastus

Agora, crie um Conjunto de Dimensionamento de Máquinas Virtuais com az vmss create. O exemplo a seguir criará um conjunto de dimensionamento chamado myScaleSet e gerará chaves SSH se elas não existirem:

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

Leva alguns minutos para criar e configurar todos os recursos e as VMs do conjunto de dimensionamento.

Aplicar a Extensão de Script Personalizado

Aplique a configuração da extensão de script personalizado às instâncias de VM no conjunto de escala com az vmss extension set. O exemplo a seguir aplica a configuração customConfig.json às instâncias de VM de myScaleSet no 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

Cuidado

Os nomes de arquivos diferenciam letras maiúsculas de minúsculas. Use o nome exato do arquivo indicado nestas instruções para evitar falhas.

Aplicar a extensão às instâncias existentes do conjunto de dimensionamento

Atualizar todas as instâncias para aplicar o script personalizado. A atualização pode levar alguns minutos.

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

Permitir tráfego para a porta 80

Para permitir que o tráfego flua pelo balanceador de carga para as máquinas virtuais, o grupo de segurança de rede padrão precisa ser atualizado.

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

Teste seu conjunto de escalabilidade

Para ver seu servidor Web em ação, obtenha o endereço IP público de seu balanceador de carga com az network public-ip show. O seguinte exemplo obtém o endereço IP de myScaleSetLBPublicIP, criado como parte do conjunto de dimensionamento:

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

Insira o endereço IP público do balanceador de carga em um navegador da Web. O balanceador de carga distribui o tráfego para uma de suas instâncias de VM, conforme mostrado no exemplo a seguir:

Página da Web básica em Nginx

Deixe o navegador da Web aberto para que você possa ver uma versão atualizada na próxima etapa.

Alterar a política de atualização

Na seção anterior, para aplicar a aplicação atualizada a todas as instâncias do conjunto de dimensionamento, foi necessário fazer uma atualização manual. Para permitir que as atualizações sejam aplicadas automaticamente a todas as instâncias existentes do conjunto de dimensionamento, atualize a política de atualização de manual para automática. Para obter mais informações sobre as políticas de atualização, consulte Políticas de atualização para Conjuntos de Dimensionamento de Máquinas Virtuais.

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

Atualizar a implantação do aplicativo

No shell atual, crie um arquivo chamado customConfigv2.json e cole a configuração a seguir. Essa definição executa uma versão v2 atualizada do script de instalação do aplicativo:

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

Aplique novamente a configuração da Extensão de Script Personalizado no seu conjunto de dimensionamento com az vmss extension set. O customConfigv2.json é usado para aplicar a versão atualizada do aplicativo:

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

Como agora o conjunto de dimensionamento está usando uma política de atualização automática, o aplicativo atualizado será aplicado automaticamente às instâncias do conjunto de dimensionamento existentes. Atualize o navegador da Web para exibir o aplicativo atualizado.

Página da Web atualizada em Nginx

Limpar os recursos

Para remover o conjunto de dimensionamento e os recursos adicionais, exclua o grupo de recursos e todos os seus recursos com az group delete. O parâmetro --no-wait retorna o controle ao prompt sem aguardar a conclusão da operação. O parâmetro --yes confirma que você deseja excluir os recursos sem um prompt adicional para fazer isso.

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

Próximas etapas

Neste tutorial, você aprendeu a instalar e atualizar aplicativos automaticamente no seu conjunto de dimensionamento com a CLI do Azure:

  • Instalar automaticamente aplicativos no seu conjunto de dimensionamento
  • Use a Extensão de Script Personalizado do Azure
  • Atualizar um aplicativo em execução em um conjunto de escala

Prossiga para o próximo tutorial para aprender a escalar automaticamente seu conjunto de escala.