Tutorial: Instalar aplicativos em conjuntos de escala de máquina virtual com o Azure PowerShell
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 antes de começar.
Azure Cloud Shell
O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.
Para iniciar o Azure Cloud Shell:
Opção | Exemplo/Ligação |
---|---|
Selecione Experimentar no canto superior direito de um código ou bloco de comandos. Selecionar Experimentar não copia automaticamente o código ou comando para o Cloud Shell. | |
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. | |
Selecione o botão Cloud Shell na barra de menus, na parte direita 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 comando.
Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e Linux ou selecionando Cmd+Shift+V no macOS.
Selecione Enter para executar o código ou comando.
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 Script Personalizado integra-se com modelos do Azure Resource Manager. Ele também pode ser usado 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 ver a Extensão de Script Personalizado em ação, crie um conjunto de dimensionamento que instala o servidor Web IIS e dá como resultado o nome de anfitrião da instância de VM do conjunto de dimensionamento. A 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.
Criar um conjunto de dimensionamento
Crie um grupo de recursos com New-AzResourceGroup. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização E.U.A Leste:
New-AzResourceGroup -Name myResourceGroup -Location "East US"
Agora crie um conjunto de escala de máquina virtual com New-AzVmss. Para distribuir o tráfego pelas instâncias de VM individuais, é também criado um balanceador de carga. O balanceador de carga inclui regras para distribuir o tráfego na porta TCP 80. Ele também permite o tráfego da área de trabalho remota na porta TCP 3389 e a comunicação remota do PowerShell na porta TCP 5985. Quando solicitado, você pode definir suas próprias credenciais administrativas para as instâncias de VM no conjunto de escala:
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-OrchestrationMode "Flexible" `
-Location "EastUS" `
-UpgradePolicyMode "Manual" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer"
A criação e configuração de todas as VMs e recursos do conjunto de dimensionamento demora alguns minutos.
Criar a definição da Extensão de Script Personalizado
O Azure PowerShell utiliza uma tabela hash para armazenar o ficheiro a transferir e o comando a executar. No exemplo seguinte, é utilizado um script de exemplo do GitHub. Em primeiro lugar, crie este objeto de configuração da seguinte forma:
$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 é transmitido para a extensão. Atualize a extensão nas instâncias de perfil do conjunto de escala 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 do conjunto de escala existente
Execute uma atualização manual para aplicar a extensão atualizada a todas as instâncias de conjunto de escala existentes. 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 transfere e executa o script do GitHub. Num exemplo mais complexo, podem ser instalados vários ficheiros e componentes de aplicações. Se o conjunto de dimensionamento for aumentado verticalmente, as novas instâncias de VM aplicam automaticamente a mesma definição da Extensão de Script Personalizado e instalam a aplicação necessária.
Permitir o tráfego para a aplicação
Para permitir o acesso ao aplicativo Web básico, crie um grupo de segurança de rede com New-AzNetworkSecurityRuleConfig e New-AzNetworkSecurityGroup. Para obter mais informações, consulte Rede para conjuntos de escala de máquina virtual 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 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 Get-AzPublicIpAddress. O exemplo a seguir exibe o endereço IP criado no grupo de recursos myResourceGroup :
Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress
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:
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.
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Update-Azvmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-UpgradePolicyMode "Automatic" `
-VirtualMachineScaleSet $vmss
Atualizar a implementação da aplicação
Ao longo do ciclo de vida de um conjunto de dimensionamento, poderá precisar de implementar uma versão atualizada da sua aplicação. Com a Extensão de Script Personalizado, pode referenciar um script de implementação atualizado e, em seguida, voltar a aplicar a extensão ao seu conjunto de dimensionamento.
Crie uma nova definição de configuração com o nome customConfigv2. Esta definição executa uma versão v2 atualizada do script de instalação de aplicações:
$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 da Extensão de Script Personalizada para as instâncias de VM em seu conjunto de escala. A definição customConfigv2 é usada para aplicar a versão atualizada do aplicativo ao conjunto de escalas:
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
$vmss.VirtualMachineProfile.ExtensionProfile[0].Extensions[0].Settings = $customConfigv2
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
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. Para ver a versão atualizada, atualize o site no seu browser:
Clean up resources (Limpar recursos)
Para remover o conjunto de escalas e os recursos adicionais, exclua o grupo de recursos e todos os seus recursos com Remove-AzResourceGroup. O parâmetro -Force
confirma que pretende eliminar os recursos sem uma linha de comandos adicional para fazê-lo. O parâmetro -AsJob
devolve o controlo à linha de comandos, sem aguardar a conclusão da operação.
Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob
Próximos passos
Neste tutorial, aprendeu a instalar e atualizar automaticamente aplicações no seu conjunto de dimensionamento com o Azure PowerShell:
- 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.