Tutorial: Implantar extensões de máquina virtual com modelos do ARM
Saiba como usar extensões de máquina virtual do Azure para executar tarefas de configuração e automação pós-implantação em VMs do Azure. Muitas extensões de VM diferentes estão disponíveis para uso com as VMs do Azure. Neste tutorial, você implantará uma extensão de script personalizado com base em um modelo do ARM (modelo do Azure Resource Manager) para executar um script do PowerShell em uma VM do Windows. O script instala o servidor Web na VM.
Este tutorial cobre as seguintes tarefas:
- Preparar um script do PowerShell
- Abrir um modelo de início rápido
- Editar o modelo
- Implantar o modelo
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Pré-requisitos
Para concluir este artigo, você precisa do seguinte:
Visual Studio Code com a extensão de Ferramentas do Resource Manager. Confira Início Rápido: Criar modelos do ARM com o Visual Studio Code.
Para aumentar a segurança, use uma senha gerada para a conta de administrador da máquina virtual. Você pode usar Azure Cloud Shell para executar o seguinte comando no PowerShell ou Bash:
openssl rand -base64 32
Para saber mais, execute
man openssl rand
para abrir a página manual.O Azure Key Vault é projetado para proteger chaves de criptografia e outros segredos. Para saber mais, confira Tutorial: Integrar o Azure Key Vault na sua implantação de modelo do ARM. Também recomendamos que você atualize sua senha a cada três meses.
Preparar um script do PowerShell
Você pode usar um script do PowerShell embutido ou um arquivo de script. Este tutorial mostra como usar um arquivo de script. Um script do PowerShell com o seguinte conteúdo é compartilhado no GitHub:
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Se você optar por publicar o arquivo em seu próprio local, atualize o elemento fileUri
no modelo posteriormente no tutorial.
Abrir um modelo de início rápido
Modelos de Início Rápido do Azure é um repositório de modelos do ARM. Em vez de criar um modelo do zero, você pode encontrar um exemplo de modelo e personalizá-lo. O modelo usado neste tutorial é chamado Implantar uma VM Windows simples.
No Visual Studio Code, escolha Arquivo>Abrir Arquivo.
Na caixa Nome do arquivo, cole a seguinte URL:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Para abrir o arquivo, selecione Abrir. O modelo define cinco recursos:
Microsoft.Compute/virtualMachines.
É útil ter algumas noções básicas do modelo antes de personalizá-lo.
Salve uma cópia do arquivo em seu computador local com o nome azuredeploy.json selecionando Arquivo>Salvar como.
Editar o modelo
Adicione um recurso de extensão de máquina virtual ao modelo existente com o seguinte conteúdo:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2021-04-01",
"name": "[format('{0}/{1}', variables('vmName'), 'InstallWebServer')]",
"location": "[parameters('location')]",
"dependsOn": [
"[format('Microsoft.Compute/virtualMachines/{0}',variables('vmName'))]"
],
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.7",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorial-vm-extension/installWebServer.ps1"
],
"commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File installWebServer.ps1"
}
}
}
Para obter mais informações sobre essa definição de recurso, veja referência de extensão. Abaixo estão alguns elementos importantes:
name
: como o recurso de extensão é um recurso filho do objeto de máquina virtual, o nome deve ter o prefixo do nome da máquina virtual. Confira Definir o nome e o tipo de recursos filho.dependsOn
: Crie o recurso de extensão depois de criar a máquina virtual.fileUris
: os locais em que os arquivos de script são armazenados. Se você optar por não usar o local fornecido, precisará atualizar os valores.commandToExecute
: esse comando chama o script.
Para usar um script embutido, remova fileUris
e atualize commandToExecute
para:
powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)
Esse script embutido também atualiza o conteúdo de iisstart.html.
Você também deve abrir a porta HTTP para que possa acessar o servidor Web.
Encontre
securityRules
no modelo.Adicione a regra a seguir ao lado de default-allow-3389.
{ "name": "AllowHTTPInBound", "properties": { "priority": 1010, "access": "Allow", "direction": "Inbound", "destinationPortRange": "80", "protocol": "Tcp", "sourcePortRange": "*", "sourceAddressPrefix": "*", "destinationAddressPrefix": "*" } }
Implantar o modelo
Para o procedimento de implantação, veja a seção Implantar o modelo do Tutorial: Criar modelos do ARM com recursos dependentes. É recomendável usar uma senha gerada para a conta de administrador da máquina virtual. Veja a seção Pré-requisitos deste artigo.
No Cloud Shell, execute o seguinte comando para recuperar o endereço IP público da VM:
(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress
Cole o endereço IP em um navegador da Web. A página de boas-vindas do IIS (Serviços de Informações da Internet) padrão é aberta:
Limpar os recursos
Quando você não precisa mais dos recursos do Azure que implantou, limpe-os exclui o grupo de recursos.
- No portal do Azure, no painel esquerdo, selecione Grupo de recursos.
- Na caixa Filtrar por nome, insira o nome do grupo de recursos.
- Selecione o nome do grupo de recursos. Seis recursos serão exibidos no grupo de recursos.
- No menu do grupo, selecione Excluir grupo de recursos.
Próximas etapas
Neste tutorial, você implantou uma máquina virtual e uma extensão da máquina virtual. A extensão instalou o servidor Web do IIS na máquina virtual. Para saber como usar a extensão do Banco de Dados SQL do Azure para importar um arquivo BACPAC, confira: