Compartilhar via


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

Para executar aplicativos em instâncias de VM (máquina virtual) em um conjunto de dimensionamento, primeiro é necessário instalar os componentes de aplicativo 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 os aplicativos para o conjunto de dimensionamento
  • Use a Extensão de Script Personalizado do Azure
  • Atualizar um aplicativo em execução em um conjunto de dimensionamento

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure 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 a configuração de implantação de postagem, instalação de software ou qualquer outra configuração/tarefa de 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 conjunto de dimensionamento para aplicar instalações de aplicativo consistentes.

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

Para ver a Extensão de Script Personalizado em ação, crie um conjunto de dimensionamento que instala o servidor Web NGINX e gera o nome do host da instância de VM do 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. Inserirvi 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 serão padrão para 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 executar, acesse Alteração Interruptiva para Clientes PowerShell/CLI de VMSS – Hub de Comunidade da Microsoft

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

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 de Extensão de Script personalizado às instâncias de VM no conjunto de dimensionamento 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 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 

Testar seu conjunto de dimensionamento

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 o aplicativo atualizado a todas as instâncias do conjunto de dimensionamento, era necessária 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 a configuração de Extensão de script personalizado ao conjunto de dimensionamento novamente 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 outros recursos, 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 em seu conjunto de dimensionamento com a CLI do Azure:

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

Avance para o próximo tutorial para aprender a dimensionar automaticamente seu conjunto de dimensionamento.