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:
Visual Studio Code com extensão Ferramentas do Resource Manager. Veja Início Rápido: Criar modelos do ARM com o Visual Studio Code.
Para aumentar a segurança, utilize uma palavra-passe gerada para a conta de administrador da máquina virtual. Pode utilizar o 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 foi criado para salvaguardar chaves criptográficos e outros segredos. Para obter mais informações, veja Tutorial: Integrar o Azure Key Vault na implementação do modelo do ARM. Também recomendamos que atualize a sua palavra-passe a cada três meses.
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.
No Visual Studio Code, selecione Ficheiro>Abrir Ficheiro.
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
Para abrir o ficheiro, selecione Abrir. O modelo define cinco recursos:
Microsoft.Compute/virtualMachines.
É útil obter uma compreensão básica do modelo antes de o personalizar.
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 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)
Este script inline também atualiza o conteúdoiisstart.html .
Também tem de abrir a porta HTTP para poder aceder ao servidor Web.
Localize
securityRules
no modelo.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):
Limpar os recursos
Quando já não precisar dos recursos do Azure que implementou, limpe-os ao eliminar o grupo de recursos.
- Na portal do Azure, no painel esquerdo, selecione Grupo de recursos.
- Na caixa Filtrar por nome , introduza o nome do grupo de recursos.
- Selecione o nome do grupo de recursos. São apresentados seis recursos no grupo de recursos.
- 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: