Zelfstudie: Extensies voor virtuele machines implementeren met ARM-sjablonen

Meer informatie over het gebruik van extensies voor virtuele Azure-machines voor het uitvoeren van configuratie- en automatiseringstaken na de implementatie op virtuele Azure-machines. Er zijn veel verschillende VM-extensies beschikbaar voor gebruik met Azure-VM's. In deze zelfstudie implementeert u een aangepaste scriptextensie van een ARM-sjabloon (Azure Resource Manager) om een PowerShell-script uit te voeren op een Windows-VM. Met het script wordt een webserver op de virtuele machine geïnstalleerd.

Deze zelfstudie bestaat uit de volgende taken:

  • Een PowerShell-script voorbereiden
  • Een snelstartsjabloon openen
  • De sjabloon bewerken
  • De sjabloon implementeren

Als u geen abonnement op Azure hebt, maakt u een gratis account voordat u begint.

Vereisten

Als u dit artikel wilt voltooien, hebt u het volgende nodig:

Een PowerShell-script voorbereiden

U kunt een inline PowerShell-script of een scriptbestand gebruiken. In deze zelfstudie ziet u hoe u een scriptbestand gebruikt. Een PowerShell-script met de volgende inhoud wordt gedeeld vanuit GitHub:

Install-WindowsFeature -name Web-Server -IncludeManagementTools

Als u ervoor kiest het bestand naar uw eigen locatie te publiceren, moet u het element fileUri in de sjabloon later in de zelfstudie bijwerken.

Een snelstartsjabloon openen

Snelstartsjablonen voor Azure is een opslagplaats voor ARM-sjablonen. In plaats van een sjabloon helemaal vanaf de basis te maken, kunt u een voorbeeldsjabloon zoeken en aanpassen. De sjabloon die in deze zelfstudie wordt gebruikt, heet Deploy a simple Windows VM (Een eenvoudige Windows-VM implementeren).

  1. Selecteer in Visual Studio Code File > Open File.

  2. Plak de volgende URL in het vak File name:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Selecteer Open om het bestand te openen. In de sjabloon zijn vijf resources gedefinieerd:

  4. Selecteer File > Save As om een kopie van het bestand op uw lokale computer op te slaan als azuredeploy.json.

De sjabloon bewerken

Voeg een VM-extensieresource toe aan de bestaande sjabloon met de volgende inhoud:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "apiVersion": "2020-12-01",
  "name": "[concat(variables('vmName'),'/', 'InstallWebServer')]",
  "location": "[parameters('location')]",
  "dependsOn": [
      "[concat('Microsoft.Compute/virtualMachines/',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"
      }
  }
}

Zie de extensieverwijzing voor meer informatie over deze resourcedefinitie. Hier volgen enkele belangrijke elementen:

  • name: omdat de extensiebron een onderliggende resource van het virtuele-machineobject is, moet de naam het voorvoegsel van de naam van de virtuele machine hebben. Zie Setnaam en -type voor onderliggende resources.
  • dependsOn: de extensiebron maken nadat u de virtuele machine hebt gemaakt.
  • fileUris: dit zijn de locaties waar de scriptbestanden worden opgeslagen. Als u ervoor kiest om de meegeleverde locaties niet te gebruiken, moet u de waarden bijwerken.
  • commandToExecute: met deze opdracht wordt het script aangeroepen.

Als u een inline script wilt gebruiken, verwijdert u fileUris en werkt u commandToExecute bij naar:

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)

Met dit inline script wordt ook de inhoud van iisstart.html bijgewerkt.

U moet ook de HTTP-poort openen zodat u toegang hebt tot de webserver.

  1. Zoek securityRules in de sjabloon.

  2. Voeg de volgende regel toe naast default-allow-3389.

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

De sjabloon implementeren

Informatie over de implementatieprocedure vindt u in de sectie De sjabloon implementeren van Zelfstudie: ARM-sjablonen met afhankelijke resources maken. Het wordt aanbevolen een gegenereerd wachtwoord te gebruiken voor het beheerdersaccount van de virtuele machine. Zie de sectie Vereisten van dit artikel voor meer informatie.

Voer de volgende opdracht uit vanuit Cloud Shell om het openbare IP-adres van de VM op te halen:

(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress

Plak het IP-adres in een webbrowser. De gebruikelijke welkomstpagina van Internet Information Services (IIS) wordt geopend:

De welkomstpagina van Internet Information Services

Resources opschonen

Wanneer u de geïmplementeerd Azure-resources niet meer nodig hebt, kunt u deze opschonen door de resourcegroep te verwijderen.

  1. Selecteer Resourcegroepen in het linkerdeelvenster van de Azure-portal.
  2. Typ de naam van de resourcegroep in het vak Filteren op naam.
  3. Selecteer de naam van de resourcegroep. De resourcegroep bevat zes resources.
  4. Selecteer Resourcegroep verwijderen in het bovenste menu.

Volgende stappen

In deze zelfstudie gebruikt u een virtuele machine en een VM-extensie. Door de extensie is de IIS-webserver op de virtuele machine geïnstalleerd. Zie dit artikel voor meer informatie over het gebruik van de Azure SQL Database-extensie om een BACPAC-bestand te importeren: