Tutorial: instalar aplicativos em Conjuntos de Dimensionamento de Máquinas Virtuais com o Azure PowerShell
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
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Azure Cloud Shell
O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.
Para iniciar o Azure Cloud Shell:
Opção | Exemplo/Link |
---|---|
Selecione Experimentar no canto superior direito de um bloco de código ou de comando. Selecionar Experimentar não copia automaticamente o código nem o comando para o Cloud Shell. | |
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. | |
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. |
Para usar o Azure Cloud Shell:
Inicie o Cloud Shell.
Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.
Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e no Linux, ou selecionando Cmd+Shift+V no macOS.
Pressione Enter para executar o código ou o comando.
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 se integra com os modelos do Azure Resource Manager. Ele também pode ser usado com a CLI do Azure, o Azure PowerShell, o portal do Azure ou com a API REST. Para obter mais informações, consulte a Visão geral da 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 IIS e gera o nome do host da instância de VM do conjunto de dimensionamento. A definição de Extensão de Script Personalizado baixa 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.
Criar um conjunto de escala
Crie um grupo de recursos com New-AzResourceGroup. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização Leste dos EUA:
New-AzResourceGroup -Name myResourceGroup -Location "East US"
Agora crie um conjunto de dimensionamento de máquinas virtuais com New-AzVmss. Para distribuir o tráfego para as instâncias de VM individuais, um balanceador de carga também é criado. O balanceador de carga inclui regras para distribuir o tráfego na porta TCP 80. Ele também permite o tráfego de área de trabalho remota na porta TCP 3389 e comunicação remota do PowerShell na porta TCP 5985. Quando solicitado, você poderá fornecer suas próprias credenciais administrativas para as instâncias de VM no conjunto de dimensionamento:
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-OrchestrationMode "Flexible" `
-Location "EastUS" `
-UpgradePolicyMode "Manual" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer"
Leva alguns minutos para criar e configurar todos os recursos e as VMs do conjunto de dimensionamento.
Criar definição de Extensão de Script Personalizado
O Azure PowerShell usa uma tabela de hash para armazenar o arquivo a baixar e o comando a executar. No exemplo a seguir, é usado um script de exemplo do GitHub. Primeiro, crie esse objeto de configuração da seguinte maneira:
$customConfig = @{
"fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}
Agora, aplique a extensão de Script Personalizado com Add-AzVmssExtension. O objeto de configuração definido anteriormente é passado para a extensão. Atualize a extensão nas instâncias de perfil do conjunto de dimensionamento com Update-AzVmss.
# Get information about the scale set
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
# Add the Custom Script Extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
-VirtualMachineScaleSet $vmss `
-Name "customScript" `
-Publisher "Microsoft.Compute" `
-Type "CustomScriptExtension" `
-TypeHandlerVersion 1.9 `
-Setting $customConfig
# Update the scale set
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
Adicionar a extensão às instâncias existentes do conjunto de dimensionamento
Execute uma atualização manual para aplicar a extensão atualizada a todas as instâncias existentes do conjunto de dimensionamento. A atualização pode levar alguns minutos para ser concluída.
Update-AzVmssInstance -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "*"
Cada instância de VM no conjunto de dimensionamento baixa e executa o script do GitHub. Em um exemplo mais complexo, vários componentes de aplicativos e arquivos poderiam ser instalados. Se o conjunto de dimensionamento estiver escalado verticalmente, as novas instâncias de VM serão aplicadas automaticamente à mesma definição de Extensão de Script Personalizado e instalarão o aplicativo necessário.
Permitir o tráfego para o aplicativo
Para permitir o acesso ao aplicativo Web básico, crie um grupo de segurança de rede com New-AzNetworkSecurityRuleConfig e New-AzNetworkSecurityGroup. Para saber mais, confira Rede para os Conjuntos de Dimensionamento de Máquinas Virtuais do Azure.
#Create a rule to allow traffic over port 80
$nsgFrontendRule = New-AzNetworkSecurityRuleConfig `
-Name myFrontendNSGRule `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80 `
-Access Allow
#Create a network security group and associate it with the rule
$nsgFrontend = New-AzNetworkSecurityGroup `
-ResourceGroupName "myResourceGroup" `
-Location EastUS `
-Name myFrontendNSG `
-SecurityRules $nsgFrontendRule
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName "myResourceGroup" `
-Name myVnet
$frontendSubnet = $vnet.Subnets[0]
$frontendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name mySubnet `
-AddressPrefix $frontendSubnet.AddressPrefix `
-NetworkSecurityGroup $nsgFrontend
Set-AzVirtualNetwork -VirtualNetwork $vnet
Testar seu conjunto de dimensionamento
Para ver seu servidor Web em ação, obtenha o endereço IP público do balanceador de carga com Get-AzPublicIpAddress. O exemplo a seguir exibe o endereço IP criado no grupo de recursos myResourceGroup:
Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress
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:
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.
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Update-Azvmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-UpgradePolicyMode "Automatic" `
-VirtualMachineScaleSet $vmss
Atualizar a implantação do aplicativo
Em todo o ciclo de vida de um conjunto de dimensionamento, talvez seja necessário implantar uma versão atualizada de seu aplicativo. Com a Extensão de Script Personalizado, você pode fazer referência a um script de implantação atualizado e, em seguida, aplicar novamente a extensão ao seu conjunto de dimensionamento.
Crie uma nova definição de configuração denominada customConfigv2. Essa definição executa uma versão v2 atualizada do script de instalação do aplicativo:
$customConfigv2 = @{
"fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis-v2.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis-v2.ps1"
}
Atualize a Configuração de Extensão de Script personalizado às instâncias de VM no conjunto de dimensionamento. A definição customConfigv2.json é usada para aplicar a versão atualizada do aplicativo ao conjunto de dimensionamento:
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
$vmss.VirtualMachineProfile.ExtensionProfile[0].Extensions[0].Settings = $customConfigv2
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
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. Para ver a versão atualizada, atualize o site em seu navegador:
Limpar os recursos
Para remover o conjunto de dimensionamento e os recursos adicionais, exclua o grupo de recursos e todos os seus recursos com Remove-AzResourceGroup. O parâmetro -Force
confirma que você deseja excluir os recursos sem um prompt adicional para fazer isso. O parâmetro -AsJob
retorna o controle ao prompt sem aguardar a conclusão da operação.
Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob
Próximas etapas
Neste tutorial você aprendeu a instalar e atualizar aplicativos automaticamente em seu conjunto de dimensionamento com o Azure PowerShell:
- 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.