Extensies en functies van virtuele machines voor Windows

Extensies van virtuele Azure-machines (VM's) zijn kleine toepassingen die configuratie na de implementatie en automatiseringstaken voor Azure-VM's bieden. Als een virtuele machine bijvoorbeeld software-installatie, antivirusbeveiliging of de mogelijkheid om een script erin uit te voeren vereist, kunt u een VM-extensie gebruiken.

U kunt Azure VM-extensies uitvoeren met behulp van de Azure CLI, PowerShell, Azure Resource Manager-sjablonen (ARM-sjablonen) en Azure Portal. U kunt extensies bundelen met een nieuwe VM-implementatie of deze uitvoeren op elk bestaand systeem.

Dit artikel bevat een overzicht van Azure VM-extensies, vereisten voor het gebruik ervan en richtlijnen voor het detecteren, beheren en verwijderen ervan. Dit artikel bevat algemene informatie omdat er veel VM-extensies beschikbaar zijn. Elk heeft een mogelijk unieke configuratie en een eigen documentatie.

Use cases en voorbeelden

Elke Azure VM-extensie heeft een specifieke use-case. Enkele voorbeelden:

Naast processpecifieke extensies is er een aangepaste scriptextensie beschikbaar voor virtuele Windows- en Linux-machines. Met de aangepaste scriptextensie voor Windows kan elk PowerShell-script worden uitgevoerd op een VIRTUELE machine. Aangepaste scripts zijn handig voor het ontwerpen van Azure-implementaties waarvoor configuratie is vereist, buiten wat systeemeigen Azure-hulpprogramma's kunnen bieden.

Vereisten

Azure VM-agent

Als u de extensie op de VIRTUELE machine wilt afhandelen, moet de Azure VM-agent voor Windows (ook wel de Windows-gastagent genoemd) zijn geïnstalleerd. Sommige afzonderlijke extensies hebben vereisten, zoals toegang tot resources of afhankelijkheden.

De Azure VM-agent beheert interacties tussen een Azure-VM en de Azure-infrastructuurcontroller. De agent is verantwoordelijk voor veel functionele aspecten van het implementeren en beheren van Virtuele Azure-machines, waaronder het uitvoeren van VM-extensies.

De Azure VM-agent is vooraf geïnstalleerd op Azure Marketplace-installatiekopieën. Het kan ook handmatig worden geïnstalleerd op ondersteunde besturingssystemen.

De agent wordt uitgevoerd op meerdere besturingssystemen. Het uitbreidingsframework heeft echter een limiet voor de besturingssystemen die extensies gebruiken. Sommige extensies worden niet ondersteund in alle besturingssystemen en verzenden mogelijk foutcode 51 ('Niet-ondersteund besturingssysteem'). Raadpleeg de afzonderlijke extensiedocumentatie voor ondersteuning.

Netwerktoegang

Extensiepakketten worden gedownload uit de Opslagplaats van de Azure Storage-extensie. Uploads van extensiestatussen worden geplaatst in Azure Storage.

Als u een ondersteunde versie van de Azure VM-agent gebruikt, hoeft u geen toegang tot Azure Storage in de VM-regio toe te staan. U kunt de agent gebruiken om de communicatie om te leiden naar de Azure-infrastructuurcontroller voor agentcommunicatie (HostGAPlugin-functie via het bevoegde kanaal op privé-IP 168.63.129.16). Als u een niet-ondersteunde versie van de agent gebruikt, moet u uitgaande toegang tot Azure Storage in die regio vanuit de VM toestaan.

Belangrijk

Als u de toegang tot 168.63.129.16 hebt geblokkeerd met behulp van de gastfirewall of met behulp van een proxy, mislukken extensies, zelfs als u een ondersteunde versie van de agent gebruikt of als u uitgaande toegang hebt geconfigureerd. Poorten 80, 443 en 32526 zijn vereist.

Agents kunnen alleen worden gebruikt om extensiepakketten en rapportagestatus te downloaden. Als een extensie-installatie bijvoorbeeld een script moet downloaden van GitHub (aangepaste scriptextensie) of toegang nodig heeft tot Azure Storage (Azure Backup), moet u extra firewall- of netwerkbeveiligingsgroeppoorten (NSG) openen. Verschillende extensies hebben verschillende vereisten, omdat ze zelf toepassingen zijn. Voor extensies waarvoor toegang tot Azure Storage of Azure Active Directory is vereist, kunt u toegang toestaan met behulp van Azure NSG-servicetags.

De Azure VM-agent biedt geen ondersteuning voor proxyservers voor het omleiden van aanvragen voor agentverkeer via. Dit betekent dat de Azure VM-agent afhankelijk is van uw aangepaste proxy (als u er een hebt) voor toegang tot resources op internet of op de host via IP 168.63.129.16.

VM-extensies detecteren

Veel VM-extensies zijn beschikbaar voor gebruik met Azure-VM's. Gebruik Get-AzVMExtensionImage om een volledige lijst weer te geven. In het volgende voorbeeld ziet u alle beschikbare extensies op de locatie WestUS :

Get-AzVmImagePublisher -Location "WestUS" |
Get-AzVMExtensionImageType |
Get-AzVMExtensionImage | Select Type, Version

VM-extensies uitvoeren

Azure VM-extensies worden uitgevoerd op bestaande VM's. Dit is handig wanneer u configuratiewijzigingen moet aanbrengen of de verbinding wilt herstellen op een reeds geïmplementeerde VM. VM-extensies kunnen ook worden gebundeld met ARM-sjabloonimplementaties. Met behulp van extensies met ARM-sjablonen kunt u Virtuele Azure-machines implementeren en configureren zonder tussenkomst na de implementatie.

U kunt de volgende methoden gebruiken om een extensie uit te voeren op een bestaande VM.

PowerShell

Er bestaan verschillende PowerShell-opdrachten voor het uitvoeren van afzonderlijke extensies. Als u een lijst wilt zien, gebruikt u Get-Command en filtert u op Extensie:

Get-Command Set-Az*Extension* -Module Az.Compute

Deze opdracht biedt uitvoer die vergelijkbaar is met de volgende:

CommandType     Name                                          Version    Source
-----------     ----                                          -------    ------
Cmdlet          Set-AzVMAccessExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMADDomainExtension                     4.5.0      Az.Compute
Cmdlet          Set-AzVMAEMExtension                          4.5.0      Az.Compute
Cmdlet          Set-AzVMBackupExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMBginfoExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMChefExtension                         4.5.0      Az.Compute
Cmdlet          Set-AzVMCustomScriptExtension                 4.5.0      Az.Compute
Cmdlet          Set-AzVMDiagnosticsExtension                  4.5.0      Az.Compute
Cmdlet          Set-AzVMDiskEncryptionExtension               4.5.0      Az.Compute
Cmdlet          Set-AzVMDscExtension                          4.5.0      Az.Compute
Cmdlet          Set-AzVMExtension                             4.5.0      Az.Compute
Cmdlet          Set-AzVMSqlServerExtension                    4.5.0      Az.Compute
Cmdlet          Set-AzVmssDiskEncryptionExtension             4.5.0      Az.Compute

In het volgende voorbeeld wordt de extensie Aangepast script gebruikt om een script uit een GitHub-opslagplaats te downloaden naar de doel-VM en vervolgens het script uit te voeren:

Set-AzVMCustomScriptExtension -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" -Name "myCustomScript" `
    -FileUri "https://raw.githubusercontent.com/neilpeterson/nepeters-azure-templates/master/windows-custom-script-simple/support-scripts/Create-File.ps1" `
    -Run "Create-File.ps1" -Location "West US"

In het volgende voorbeeld wordt de VMAccess-extensie gebruikt om het beheerderswachtwoord van een Virtuele Windows-machine opnieuw in te stellen op een tijdelijk wachtwoord. Nadat u deze code hebt uitgevoerd, moet u het wachtwoord opnieuw instellen bij de eerste aanmelding.

$cred=Get-Credential

Set-AzVMAccessExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myVMAccess" `
    -Location WestUS -UserName $cred.GetNetworkCredential().Username `
    -Password $cred.GetNetworkCredential().Password -typeHandlerVersion "2.0"

U kunt de opdracht Set-AzVMExtension gebruiken om elke VM-extensie te starten.

Azure Portal

U kunt VM-extensies toepassen op een bestaande VM via Azure Portal. Selecteer de VIRTUELE machine in de portal, selecteer Extensies en selecteer vervolgens Toevoegen. Kies de gewenste extensie in de lijst met beschikbare extensies en volg de instructies in de wizard.

In het volgende voorbeeld ziet u de installatie van de Microsoft Antimalware-extensie vanuit Azure Portal:

Screenshot of the dialog for installing the Microsoft Antimalware extension.

Azure Resource Manager-sjablonen

U kunt VM-extensies toevoegen aan een ARM-sjabloon en deze uitvoeren met de implementatie van de sjabloon. Wanneer u een extensie implementeert met een sjabloon, kunt u volledig geconfigureerde Azure-implementaties maken.

De volgende JSON wordt bijvoorbeeld opgehaald uit een volledige ARM-sjabloon waarmee een set vm's met gelijke taakverdeling en een Azure SQL-database wordt geïmplementeerd en vervolgens een .NET Core-toepassing op elke VM wordt geïnstalleerd. De VM-extensie zorgt voor de software-installatie.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Zie Virtuele machines in een Azure Resource Manager-sjabloon voor meer informatie over het maken van ARM-sjablonen.

Help bij het beveiligen van VM-extensiegegevens

Wanneer u een VM-extensie uitvoert, moet u mogelijk gevoelige informatie opnemen, zoals referenties, namen van opslagaccounts en toegangssleutels. Veel VM-extensies bevatten een beveiligde configuratie waarmee gegevens worden versleuteld en alleen worden ontsleuteld binnen de doel-VM. Elke extensie heeft een specifiek beveiligd configuratieschema en elk is gedetailleerd in extensiespecifieke documentatie.

In het volgende voorbeeld ziet u een exemplaar van de extensie Aangepast script voor Windows. De opdracht die moet worden uitgevoerd, bevat een set referenties. In dit voorbeeld wordt de opdracht die moet worden uitgevoerd, niet versleuteld.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ],
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Als u de commandToExecute eigenschap naar de protected configuratie verplaatst, kunt u de uitvoeringsreeks beveiligen, zoals wordt weergegeven in het volgende voorbeeld:

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Op een IaaS-VM (Infrastructure as a Service) van Azure die gebruikmaakt van extensies, ziet u in de certificatenconsole mogelijk certificaten met het onderwerp Windows Azure CRP Certificate Generator. Op een klassieke RDFE-VM (RedDog Front End) hebben deze certificaten de onderwerpnaam Windows Azure Service Management for Extensions.

Deze certificaten beveiligen de communicatie tussen de VIRTUELE machine en de host tijdens de overdracht van beveiligde instellingen (wachtwoord en andere referenties) die extensies gebruiken. De certificaten worden gebouwd door de Azure-infrastructuurcontroller en doorgegeven aan de Azure VM-agent. Als u de VM elke dag stopt en start, kan de infrastructuurcontroller een nieuw certificaat maken. Het certificaat wordt opgeslagen in het persoonlijke certificaatarchief van de computer. Deze certificaten kunnen worden verwijderd. De Azure VM-agent maakt zo nodig certificaten opnieuw.

Hoe agents en extensies worden bijgewerkt

Agents en extensies delen hetzelfde mechanisme voor automatische updates.

Wanneer een update beschikbaar is en automatische updates zijn ingeschakeld, wordt de update pas op de VM geïnstalleerd nadat er een wijziging is aangebracht in een extensie of nadat andere VM-modelwijzigingen zijn gewijzigd, zoals:

  • Gegevensschijven
  • Extensies
  • Extensietags
  • Diagnostische opstartcontainer
  • Geheimen van gastbesturingssystemen
  • VM-grootte
  • Netwerkprofiel

Uitgevers maken op verschillende momenten updates beschikbaar voor regio's, dus het is mogelijk dat u VM's in verschillende regio's op verschillende versies kunt hebben.

Notitie

Voor sommige updates zijn mogelijk extra firewallregels vereist. Zie Netwerktoegang.

Extensies weergeven die zijn geïmplementeerd op een VM

$vm = Get-AzVM -ResourceGroupName "myResourceGroup" -VMName "myVM"
$vm.Extensions | select Publisher, VirtualMachineExtensionType, TypeHandlerVersion
Publisher             VirtualMachineExtensionType          TypeHandlerVersion
---------             ---------------------------          ------------------
Microsoft.Compute     CustomScriptExtension                1.9

Agentupdates

De Azure VM-agent bevat alleen extensieafhandelingscode. De Windows-inrichtingscode is gescheiden. U kunt de Azure VM-agent verwijderen. U kunt de automatische update van de Azure VM-agent niet uitschakelen.

De extensieafhandelingscode is verantwoordelijk voor:

  • Communiceren met de Azure-infrastructuur.
  • Het verwerken van de VM-extensiebewerkingen, zoals installaties, rapportagestatus, het bijwerken van de afzonderlijke extensies en het verwijderen van extensies. Updates bevatten beveiligingsoplossingen, bugfixes en verbeteringen in de extensieafhandelingscode.

Zie De VM-agent detecteren om te controleren welke versie u gebruikt.

Extensie-updates

Wanneer een extensie-update beschikbaar is en automatische updates zijn ingeschakeld, wordt de extensie gedownload en bijgewerkt nadat een wijziging in het VM-model plaatsvindt.

Automatische extensie-updates zijn secundair of hotfix. U kunt zich aanmelden of afmelden voor secundaire updates wanneer u de extensie inricht. In het volgende voorbeeld ziet u hoe u secundaire versies in een ARM-sjabloon automatisch kunt upgraden met behulp van "autoUpgradeMinorVersion": true,:

    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },

Om de meest recente oplossingen voor kleine releasefouten te krijgen, raden we u ten zeerste aan om altijd automatische updates te selecteren in uw extensie-implementaties. U kunt zich niet afmelden voor hotfix-updates die oplossingen voor beveiligings- of sleutelfouten bevatten.

Als u automatische updates uitschakelt of een primaire versie moet bijwerken, gebruikt u Set-AzVMExtension en geeft u de doelversie op.

Extensie-updates identificeren

Bepalen of de extensie is ingesteld met autoUpgradeMinorVersion op een VM

U kunt vanuit het VM-model zien of de extensie is ingericht met autoUpgradeMinorVersion. Als u dit wilt controleren, gebruikt u Get-AzVm en geeft u de resourcegroep en vm-naam als volgt op:

 $vm = Get-AzVm -ResourceGroupName "myResourceGroup" -VMName "myVM"
 $vm.Extensions

In de volgende voorbeelduitvoer ziet u dat autoUpgradeMinorVersion deze is ingesteld op true:

ForceUpdateTag              :
Publisher                   : Microsoft.Compute
VirtualMachineExtensionType : CustomScriptExtension
TypeHandlerVersion          : 1.9
AutoUpgradeMinorVersion     : True

Identificeren wanneer er een autoUpgradeMinorVersion-gebeurtenis is opgetreden

Als u wilt zien wanneer er een update van de extensie is opgetreden, controleert u de agentlogboeken op de VM op C:\WindowsAzure\Logs\WaAppAgent.log.

In het volgende voorbeeld is Microsoft.Compute.CustomScriptExtension de versie van de VIRTUELE machine 1.8 geïnstalleerd. Er was een hotfix beschikbaar voor versie 1.9.

[INFO]  Getting plugin locations for plugin 'Microsoft.Compute.CustomScriptExtension'. Current Version: '1.8', Requested Version: '1.9'
[INFO]  Auto-Upgrade mode. Highest public version for plugin 'Microsoft.Compute.CustomScriptExtension' with requested version: '1.9', is: '1.9'

Agentmachtigingen

Voor het uitvoeren van de taken moet de agent worden uitgevoerd als lokaal systeem.

Problemen met VM-extensies oplossen

Elke VM-extensie kan specifieke stappen voor probleemoplossing hebben. Wanneer u bijvoorbeeld de extensie Aangepast script gebruikt, kunt u de details van de uitvoering van scripts lokaal vinden op de VM waarop de extensie is uitgevoerd.

De volgende probleemoplossingsacties zijn van toepassing op alle VM-extensies:

  • Als u het logboek van de Azure VM-agent wilt controleren, bekijkt u de activiteit toen uw extensie werd ingericht in C:\WindowsAzure\Logs\WaAppAgent.log.

  • Raadpleeg de extensielogboeken voor meer informatie in C:\WindowsAzure\Logs\Plugins<extensionName>.

  • Raadpleeg secties voor probleemoplossing in extensiespecifieke documentatie voor foutcodes, bekende problemen en andere extensiespecifieke informatie.

  • Bekijk de systeemlogboeken. Controleer op andere bewerkingen die de extensie mogelijk hebben beïnvloed, zoals een langdurige installatie van een andere toepassing waarvoor exclusieve toegang tot pakketbeheer is vereist.

  • Als er in een VM een bestaande extensie met een mislukte inrichtingsstatus is, kan elke andere nieuwe extensie niet worden geïnstalleerd.

Veelvoorkomende redenen voor uitbreidingsfouten

  • Extensies hebben 20 minuten om te worden uitgevoerd. (Uitzonderingen zijn aangepast script, chef en DSC, die 90 minuten hebben.) Als uw implementatie deze keer wordt overschreden, wordt deze gemarkeerd als een time-out. De oorzaak hiervan kunnen VM's met weinig resources zijn, of andere VM-configuraties of opstarttaken verbruiken grote hoeveelheden resources terwijl de extensie probeert in te richten.

  • Aan de minimumvereisten wordt niet voldaan. Sommige extensies hebben afhankelijkheden van VM-SKU's, zoals HPC-installatiekopieën. Extensies hebben mogelijk bepaalde netwerktoegangsvereisten, zoals communicatie met Azure Storage of openbare services. Andere voorbeelden zijn mogelijk toegang tot pakketopslagplaatsen, onvoldoende schijfruimte of beveiligingsbeperkingen.

  • Package Manager-toegang is exclusief. In sommige gevallen kan een langlopende VM-configuratie en extensie-installatie conflicteren omdat ze beide exclusieve toegang nodig hebben tot pakketbeheer.

Extensiestatus weergeven

Nadat een VM-extensie is uitgevoerd op een VM, gebruikt u Get-AzVM om de extensiestatus te retourneren. Substatuses[0] geeft aan dat de inrichting van de extensie is geslaagd, wat betekent dat deze is geïmplementeerd op de VIRTUELE machine. Maar Substatuses[1] laat zien dat de uitvoering van de extensie in de VM is mislukt.

Get-AzVM -ResourceGroupName "myResourceGroup" -VMName "myVM" -Status

De uitvoer lijkt op die in het volgende voorbeeld:

Extensions[0]           :
  Name                  : CustomScriptExtension
  Type                  : Microsoft.Compute.CustomScriptExtension
  TypeHandlerVersion    : 1.9
  Substatuses[0]        :
    Code                : ComponentStatus/StdOut/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : Windows PowerShell \nCopyright (C) Microsoft Corporation. All rights reserved.\n
  Substatuses[1]        :
    Code                : ComponentStatus/StdErr/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : The argument 'cseTest%20Scriptparam1.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the

-File parameter.
  Statuses[0]           :
    Code                : ProvisioningState/failed/-196608
    Level               : Error
    DisplayStatus       : Provisioning failed
    Message             : Finished executing command

U kunt ook de uitvoeringsstatus van de extensie vinden in Azure Portal. Selecteer de VIRTUELE machine, selecteer Extensies en selecteer vervolgens de gewenste extensie.

Een VM-extensie opnieuw uitvoeren

Er kunnen gevallen zijn waarin een VM-extensie opnieuw moet worden uitgevoerd. U kunt een extensie opnieuw uitvoeren door deze te verwijderen en vervolgens de extensie opnieuw uit te voeren met een uitvoeringsmethode van uw keuze. Als u een extensie wilt verwijderen, gebruikt u Remove-AzVMExtension als volgt:

Remove-AzVMExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myExtensionName"

U kunt ook een extensie verwijderen in Azure Portal:

  1. Selecteer een virtuele machine.
  2. Selecteer Extensies.
  3. Selecteer de extensie.
  4. Selecteer Verwijderen.

Naslaginformatie over algemene VM-extensies

Extensienaam Description
Aangepaste scriptextensie voor Windows Scripts uitvoeren op een virtuele Azure-machine.
DSC-extensie voor Windows Pas De gewenste statusconfiguraties van PowerShell toe op een virtuele machine.
Azure Diagnostics-extensie Azure Diagnostics beheren.
VMAccess-extensie Gebruikers en referenties beheren.

Volgende stappen

Zie extensies en functies van virtuele Azure-machines voor meer informatie over VM-extensies.