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:

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.

  1. No Visual Studio Code, escolha Arquivo>Abrir Arquivo.

  2. 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
    
  3. Para abrir o arquivo, selecione Abrir. O modelo define cinco recursos:

  4. 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.

  1. Encontre securityRules no modelo.

  2. 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:

Captura de tela da página de boas-vindas dos Serviços de Informações da Internet.

Limpar os recursos

Quando você não precisa mais dos recursos do Azure que implantou, limpe-os exclui o grupo de recursos.

  1. No portal do Azure, no painel esquerdo, selecione Grupo de recursos.
  2. Na caixa Filtrar por nome, insira o nome do grupo de recursos.
  3. Selecione o nome do grupo de recursos. Seis recursos serão exibidos no grupo de recursos.
  4. 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: