Partilhar via


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áquinas virtuais (VM) num conjunto de escalonamento, primeiro é necessário instalar os componentes da aplicação e os arquivos necessários. Em um tutorial anterior, você aprendeu como criar e usar uma imagem de VM personalizada para implantar suas instâncias de VM. Esta imagem personalizada incluía instalações e configurações manuais de aplicativos. Você também pode automatizar a instalação de aplicativos em um conjunto de escala depois que cada instância de VM é implantada ou atualizar um aplicativo que já é executado em um conjunto de escala. Neste tutorial você aprenderá a:

  • Instale automaticamente aplicações no seu conjunto de escalas
  • Usar a Extensão de Script Personalizado do Azure
  • Atualizar um aplicativo em execução em um conjunto de escala

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

Pré-requisitos

  • 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 Personalizada baixa e executa scripts em VMs do Azure. Esta extensão é útil para configuração pós-implantação, instalação de software ou qualquer outra tarefa de configuração / gerenciamento. Os scripts podem ser baixados do armazenamento do Azure ou do GitHub, ou fornecidos ao portal do Azure em tempo de execução de extensão.

A extensão de Script Personalizado integra-se com 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 personalizada.

Para usar a Extensão de Script Personalizada com a CLI do Azure, crie um arquivo JSON que define quais arquivos obter e comandos executar. Essas definições JSON podem ser reutilizadas em implantações de conjunto de escala para aplicar instalações consistentes de aplicativos.

Criar definição de extensão de script personalizada

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

No shell atual, crie um arquivo chamado customConfig.json e cole a seguinte configuração. Por exemplo, crie o arquivo no Cloud Shell e não em sua máquina local. Você pode usar 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'
}

Observação

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 escalas

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 a seguir cria um conjunto de escala chamado myScaleSet e gera 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

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

Aplicar a extensão de script personalizada

Aplique a configuração de Extensão de Script Personalizada às instâncias de VM em seu conjunto de dimensionamento com o conjunto de extensões az vmss. O exemplo a seguir aplica a configuração customConfig.json às instâncias de VM myScaleSet no grupo de recursos chamado 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 são sensíveis a maiúsculas e 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 

Teste o seu conjunto de escalas

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 a seguir obtém o endereço IP para myScaleSetLBPublicIP criado como parte do conjunto de escalas:

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 web básica no 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 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 implantação do aplicativo

No shell atual, crie um arquivo chamado customConfigv2.json e cole a seguinte configuração. Esta 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 da Extensão de Script Personalizada novamente ao seu conjunto de escalas 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 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

Limpeza de recursos

Para remover o seu conjunto de escala e recursos adicionais, elimine o grupo de recursos e todos os seus 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 --yes parâmetro confirma que você deseja excluir os recursos sem um prompt adicional para fazê-lo.

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

Próximos passos

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

  • Instale automaticamente aplicações no seu conjunto de escalas
  • Usar a Extensão de Script Personalizado do Azure
  • Atualizar um aplicativo em execução em um conjunto de escala

Avance para o próximo tutorial para saber como dimensionar automaticamente seu conjunto de escalas.