Tutorial: Instalar aplicativos em conjuntos de dimensionamento de máquina virtual com a CLI do Azure

Para executar aplicações em instâncias de máquina virtual (VM) num conjunto de dimensionamento, primeiro tem de instalar os componentes da aplicação e os ficheiros necessários. Num tutorial anterior, aprendeu a criar e utilizar uma imagem de VM personalizada para implementar as suas instâncias de VM. Esta imagem personalizada inclui configurações e instalações de aplicações manuais. Pode também automatizar a instalação de aplicações num conjunto de dimensionamento após cada instância de VM ser implementada ou atualizar uma aplicação que já é executada num conjunto de dimensionamento. Neste tutorial, ficará a saber como:

  • Instalar automaticamente aplicações no seu conjunto de dimensionamento
  • Utilizar a Extensão de Script Personalizado do Azure
  • Atualizar uma aplicação em execução num conjunto de dimensionamento

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

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Este artigo requer a versão 2.0.29 ou posterior da CLI do Azure. Se estiver 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 transfere e executa scripts em VMs do Azure. Esta extensão é útil para a configuração pós-implementação, instalação de software ou qualquer outra tarefa de gestão/configuração. Os scripts podem ser transferidos a partir do armazenamento do Azure ou do GitHub, ou fornecidos para o portal do Azure no runtime da extensão.

A extensão de Script Personalizado é integrada em modelos do Azure Resource Manager e pode também ser utilizada com a CLI do Azure, o Azure PowerShell, o portal do Azure ou a API REST. Para obter mais informações, veja a Descrição geral da Extensão de Script Personalizado.

Para utilizar a Extensão de Script Personalizado com a CLI do Azure, crie um ficheiro JSON que defina que ficheiros obter e comandos executar. Estas definições de JSON podem ser reutilizadas em implementações de conjuntos de dimensionamento para aplicar instalações de aplicações consistentes.

Criar a definição da 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 dá como resultado o nome de anfitrião da instância de VM do conjunto de dimensionamento. A seguinte definição da Extensão de Script Personalizado transfere um script de exemplo do GitHub, instala os pacotes necessários e escreve o nome de anfitrião da instância de VM numa página HTML simples.

Na shell atual, crie um ficheiro com o nome customConfig.json e cole a seguinte configuração. Por exemplo, crie o ficheiro no Cloud Shell, não no seu computador local. Pode utilizar qualquer editor que desejar. Neste tutorial, usaremos o Vi. Entrevi 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'
}

Nota

Talvez seja necessário inverter o uso das aspas simples (') e duplas (") dentro do bloco JSON se decidir fazer referência ao JSON diretamente (em vez de fazer referência ao arquivo customConfig.json ) no parâmetro --settings abaixo.

Criar um conjunto de dimensionamento

Importante

A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure assumirão como padrão o Modo de Orquestração Flexível se nenhum modo de orquestração for especificado. Para obter mais informações sobre essa alteração e quais ações você deve tomar, vá para Breaking Change for VMSS PowerShell/CLI Customers - Microsoft Community Hub

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

az group create --name myResourceGroup --location eastus

Agora crie um conjunto de escala de máquina virtual com az vmss create. O exemplo seguinte cria um conjunto nomeado de dimensionamento myScaleSet e gera chaves SSH, caso não existam:

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

A criação e configuração de todas as VMs e recursos do conjunto de dimensionamento demora alguns minutos.

Aplicar a Extensão de Script Personalizado

Aplique a configuração de Extensão de Script Personalizado às instâncias de VM no seu conjunto de dimensionamento com az vmss extension set. O exemplo seguinte aplica a configuração customConfig.json às instâncias de VM myScaleSet no grupo de recursos com o nome myResourceGroup:

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

Atenção

Os nomes de arquivo diferenciam 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 do conjunto de escala existente

Atualize 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 através do 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 

Testar o seu conjunto de dimensionamento

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

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

Introduza o endereço IP público do balanceador de carga num browser. O balanceador de carga distribui o tráfego para uma das suas instâncias de VM, conforme mostra o exemplo seguinte:

Página Web básica no Nginx

Deixe o seu browser aberto para que possa ver uma versão atualizada no próximo passo.

Alterar a política de atualização

Na seção anterior, para aplicar o aplicativo atualizado a todas as instâncias do conjunto de escalas, era necessária uma atualização manual. Para permitir que as atualizações sejam aplicadas automaticamente a todas as instâncias de conjuntos de escala existentes, atualize a política de atualização de manual para automática. Para obter mais informações sobre 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 implementação da aplicação

Na shell atual, crie um ficheiro com o nome customConfigv2.json e cole a seguinte configuração. Esta definição executa uma versão v2 atualizada do script de instalação de aplicações:

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

Aplique a configuração da Extensão de Script Personalizada ao conjunto de escala novamente com o conjunto de extensões az vmss. O customConfigv2.json é utilizado para aplicar a versão atualizada da aplicação:

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

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

Página Web atualizada no Nginx

Clean up resources (Limpar recursos)

Para remover o seu conjunto de dimensionamento e recursos adicionais, elimine o grupo de recursos e todos os respetivos recursos com az group delete. O parâmetro --no-wait devolve o controlo à linha de comandos, sem aguardar a conclusão da operação. O parâmetro --yes confirma que pretende eliminar os recursos sem uma linha de comandos adicional para fazê-lo.

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

Próximos passos

Neste tutorial, aprendeu a instalar e atualizar automaticamente aplicações no seu conjunto de dimensionamento com a CLI do Azure:

  • Instalar automaticamente aplicações no seu conjunto de dimensionamento
  • Utilizar a Extensão de Script Personalizado do Azure
  • Atualizar uma aplicação em execução num conjunto de dimensionamento

Prossiga para o próximo tutorial para saber como dimensionar automaticamente o seu conjunto de dimensionamento.