Tutorial: Implementar extensões de máquina virtual com modelos arm

Aprenda a utilizar extensões de máquina virtual do Azure para fazer tarefas de automatização e configuração de pós-implementação em VMs do Azure. Estão disponíveis muitas VMs diferentes para utilização com as VMs do Azure. Neste tutorial, vai implementar uma extensão de Script Personalizado a partir de um modelo do Azure Resource Manager (modelo arm) para executar um script do PowerShell numa VM do Windows. O script instala o Servidor Web na VM.

Este tutorial abrange as seguintes tarefas:

  • Preparar o script do Powershell
  • Abrir um modelo de início rápido
  • Editar o modelo
  • Implementar o modelo

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

Pré-requisitos

Para concluir este artigo, precisa de:

Preparar o script do Powershell

Pode utilizar um script do PowerShell inline ou um ficheiro de script. Este tutorial mostra como utilizar um ficheiro de script. Um script do PowerShell com o seguinte conteúdo é partilhado a partir do GitHub:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Se optar por publicar o ficheiro na sua própria localização, atualize o fileUri elemento no modelo mais tarde no tutorial.

Abrir um modelo de início rápido

Os Modelos de Início Rápido do Azure são um repositório para modelos arm. Em vez de criar um modelo do zero, pode encontrar um modelo de exemplo e personalizá-lo. O modelo utilizado neste tutorial é denominado Implementar uma VM do Windows simples.

  1. No Visual Studio Code, selecione Ficheiro>Abrir Ficheiro.

  2. Na caixa Nome de ficheiro , cole o seguinte URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Para abrir o ficheiro, selecione Abrir. O modelo define cinco recursos:

  4. Guarde uma cópia do ficheiro no seu computador local com o nome azuredeploy.json ao selecionar Ficheiro>Guardar 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 esta definição de recurso, veja a referência da extensão. Seguem alguns elementos importantes:

  • name: uma vez que o recurso de extensão é um recurso subordinado do objeto da máquina virtual, o nome tem de ter o prefixo de nome da máquina virtual. Veja Definir nome e tipo para recursos subordinados.
  • dependsOn: crie o recurso de extensão depois de criar a máquina virtual.
  • fileUris: as localizações onde os ficheiros de script são armazenados. Se optar por não utilizar a localização fornecida, terá de atualizar os valores.
  • commandToExecute: este comando invoca o script.

Para utilizar um script inline, remova fileUrise 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)

Este script inline também atualiza o conteúdoiisstart.html .

Também tem de abrir a porta HTTP para poder aceder ao servidor Web.

  1. Localize securityRules no modelo.

  2. Adicione a seguinte regra junto a default-allow-3389.

    {
      "name": "AllowHTTPInBound",
      "properties": {
        "priority": 1010,
        "access": "Allow",
        "direction": "Inbound",
        "destinationPortRange": "80",
        "protocol": "Tcp",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "*"
      }
    }
    

Implementar o modelo

Para o procedimento de implementação, veja a secção Implementar o modelo do Tutorial: Criar modelos do ARM com recursos dependentes. Recomendamos que utilize uma palavra-passe gerada para a conta de administrador da máquina virtual. Veja a secção Pré-requisitos deste artigo.

Na Cloud Shell, execute o seguinte comando para obter o endereço IP público da VM:

(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress

Cole o endereço IP num browser. É aberta a página de boas-vindas predefinida dos Serviços de Informação Internet (IIS):

Captura de ecrã a mostrar a página de boas-vindas dos Serviços de Informação Internet.

Limpar os recursos

Quando já não precisar dos recursos do Azure que implementou, limpe-os ao eliminar o grupo de recursos.

  1. Na portal do Azure, no painel esquerdo, selecione Grupo de recursos.
  2. Na caixa Filtrar por nome , introduza o nome do grupo de recursos.
  3. Selecione o nome do grupo de recursos. São apresentados seis recursos no grupo de recursos.
  4. No menu superior, selecione Eliminar grupo de recursos.

Passos seguintes

Neste tutorial, implementou uma máquina virtual e uma extensão de máquina virtual. A extensão instalou o servidor web dos IIS na máquina virtual. Para saber como utilizar a extensão da Base de Dados SQL do Azure para importar um ficheiro BACPAC, consulte: