Tillägg för virtuell dator och funktioner för Windows

Azure-tillägg för virtuella datorer är små program som ger konfigurations- och automationsuppgifter på virtuella Azure-datorer efter distribution. Om en virtuell dator till exempel kräver programvaruinstallation, antivirusskydd eller möjligheten att köra ett skript i den, kan du använda ett VM-tillägg.

Du kan köra Azure VM-tillägg med hjälp av Azure CLI, PowerShell, Azure Resource Manager-mallar (ARM-mallar) och Azure-Portal. Du kan paketeringstillägg med en ny VM-distribution eller köra dem mot ett befintligt system.

Den här artikeln innehåller en översikt över Azure VM-tillägg, förutsättningar för att använda dem och vägledning om hur du identifierar, hanterar och tar bort dem. Den här artikeln innehåller generaliserad information eftersom många VM-tillägg är tillgängliga. Var och en har en potentiellt unik konfiguration och egen dokumentation.

Användningsfall och exempel

Varje Azure VM-tillägg har ett specifikt användningsfall. Exempel:

Förutom processspecifika tillägg finns ett tillägg för anpassat skript tillgängligt för både virtuella Windows- och Linux-datorer. Med tillägget Anpassat skript för Windows kan alla PowerShell-skript köras på en virtuell dator. Anpassade skript är användbara för att utforma Azure-distributioner som kräver konfiguration utöver vad inbyggda Azure-verktyg kan tillhandahålla.

Krav

Azure VM-agent

För att hantera tillägget på den virtuella datorn behöver du Azure VM-agenten för Windows (kallas även Windows-gästagenten) installerad. Vissa enskilda tillägg har förutsättningar, till exempel åtkomst till resurser eller beroenden.

Azure VM-agenten hanterar interaktioner mellan en virtuell Azure-dator och Azure-infrastrukturkontrollanten. Agenten ansvarar för många funktionella aspekter av distribution och hantering av virtuella Azure-datorer, inklusive körning av VM-tillägg.

Azure VM-agenten är förinstallerad på Azure Marketplace avbildningar. Den kan också installeras manuellt på operativsystem som stöds.

Agenten körs på flera operativsystem. Tilläggsramverket har dock en gräns för de operativsystem som tillägg använder. Vissa tillägg stöds inte i alla operativsystem och kan generera felkod 51 ("Operativsystem som inte stöds"). Mer support finns i dokumentationen för enskilda tillägg.

Nätverksåtkomst

Tilläggspaket laddas ned från lagringsplatsen för Azure Storage-tillägget. Tilläggsstatusuppladdningar publiceras i Azure Storage.

Om du använder en version av Azure VM-agenten som stöds behöver du inte tillåta åtkomst till Azure Storage i VM-regionen. Du kan använda agenten för att omdirigera kommunikationen till Azure-infrastrukturkontrollanten för agentkommunikation (Funktionen HostGAPlugin via den privilegierade kanalen på privat IP 168.63.129.16). Om du har en version av agenten som inte stöds måste du tillåta utgående åtkomst till Azure Storage i den regionen från den virtuella datorn.

Viktigt

Om du har blockerat åtkomsten till 168.63.129.16 med hjälp av gästbrandväggen eller genom att använda en proxyserver misslyckas tillägg även om du använder en version av agenten som stöds eller om du har konfigurerat utgående åtkomst. Portarna 80, 443 och 32526 krävs.

Agenter kan bara användas för att ladda ned tilläggspaket och rapporteringsstatus. Om en tilläggsinstallation till exempel behöver ladda ned ett skript från GitHub (anpassat skripttillägg) eller behöver åtkomst till Azure Storage (Azure Backup) måste du öppna ytterligare brandväggs- eller nätverkssäkerhetsgruppportar (NSG). Olika tillägg har olika krav, eftersom de är program på egen hand. För tillägg som kräver åtkomst till Azure Storage eller Azure Active Directory kan du tillåta åtkomst med hjälp av Azure NSG-tjänsttaggar.

Azure VM-agenten har inte stöd för proxyservern så att du kan omdirigera agentens trafikbegäranden via. Det innebär att Azure VM-agenten förlitar sig på din anpassade proxy (om du har en) för att få åtkomst till resurser på Internet eller på värden via IP 168.63.129.16.

Identifiera VM-tillägg

Många VM-tillägg är tillgängliga för användning med virtuella Azure-datorer. Om du vill se en fullständig lista använder du Get-AzVMExtensionImage. I följande exempel visas alla tillgängliga tillägg på platsen WestUS :

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

Köra VM-tillägg

Azure VM-tillägg körs på befintliga virtuella datorer. Det är användbart när du behöver göra konfigurationsändringar eller återställa anslutningen på en redan distribuerad virtuell dator. VM-tillägg kan också paketeras med ARM-malldistributioner. Genom att använda tillägg med ARM-mallar kan du distribuera och konfigurera virtuella Azure-datorer utan åtgärder efter distributionen.

Du kan använda följande metoder för att köra ett tillägg mot en befintlig virtuell dator.

PowerShell

Det finns flera PowerShell-kommandon för att köra enskilda tillägg. Om du vill se en lista använder du Get-Command och filtrerar på Tillägg:

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

Det här kommandot ger utdata som liknar följande:

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

I följande exempel används tillägget Anpassat skript för att ladda ned ett skript från en GitHub-lagringsplats till den virtuella måldatorn och sedan köra skriptet:

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"

I följande exempel används VMAccess-tillägget för att återställa det administrativa lösenordet för en virtuell Windows-dator till ett tillfälligt lösenord. När du har kört den här koden bör du återställa lösenordet vid första inloggningen.

$cred=Get-Credential

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

Du kan använda kommandot Set-AzVMExtension för att starta valfritt VM-tillägg.

Azure-portalen

Du kan använda VM-tillägg på en befintlig virtuell dator via Azure-Portal. Välj den virtuella datorn i portalen, välj Tillägg och välj sedan Lägg till. Välj det tillägg som du vill använda i listan över tillgängliga tillägg och följ anvisningarna i guiden.

I följande exempel visas installationen av Microsoft Antimalware-tillägget från Azure-Portal:

Skärmbild av dialogrutan för att installera Microsoft Antimalware-tillägget.

Azure Resource Manager-mallar

Du kan lägga till VM-tillägg i en ARM-mall och köra dem med distributionen av mallen. När du distribuerar ett tillägg med en mall kan du skapa fullständigt konfigurerade Azure-distributioner.

Följande JSON hämtas till exempel från en fullständig ARM-mall som distribuerar en uppsättning belastningsutjämning av virtuella datorer och en SQL do Azure databas och sedan installerar ett .NET Core-program på varje virtuell dator. VM-tillägget tar hand om programvaruinstallationen.

{
    "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')]"
    }
    }
}

Mer information om hur du skapar ARM-mallar finns i Virtuella datorer i en Azure Resource Manager-mall.

Skydda vm-tilläggsdata

När du kör ett VM-tillägg kan det vara nödvändigt att inkludera känslig information, till exempel autentiseringsuppgifter, lagringskontonamn och åtkomstnycklar. Många VM-tillägg innehåller en skyddad konfiguration som krypterar data och endast dekrypterar dem i den virtuella måldatorn. Varje tillägg har ett specifikt skyddat konfigurationsschema och var och en beskrivs i tilläggsspecifik dokumentation.

I följande exempel visas en instans av tillägget För anpassat skript för Windows. Kommandot som ska köras innehåller en uppsättning autentiseringsuppgifter. I det här exemplet krypteras inte kommandot som ska köras.

{
    "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')]"
    }
    }
}

commandToExecute Genom att flytta egenskapen till konfigurationen protected kan du skydda körningssträngen, som du ser i följande exempel:

{
    "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')]"
    }
    }
}

På en virtuell IaaS-dator (Infrastruktur som en tjänst) i Azure som använder tillägg kan du se certifikat som har ämnet Windows Azure CRP Certificate Generator i certifikatkonsolen. På en klassisk virtuell RedDog-klientdelsdator (RDFE) har dessa certifikat ämnesnamnet Windows Azure Service Management for Extensions.

Dessa certifikat skyddar kommunikationen mellan den virtuella datorn och dess värd under överföringen av skyddade inställningar (lösenord och andra autentiseringsuppgifter) som tillägg använder. Certifikaten skapas av Azure-infrastrukturkontrollanten och skickas till Azure VM-agenten. Om du stoppar och startar den virtuella datorn varje dag kan infrastrukturkontrollanten skapa ett nytt certifikat. Certifikatet lagras i datorns personliga certifikatarkiv. Dessa certifikat kan tas bort. Azure VM-agenten återskapar certifikat om det behövs.

Så här uppdateras agenter och tillägg

Agenter och tillägg delar samma mekanism för automatisk uppdatering.

När en uppdatering är tillgänglig och automatiska uppdateringar är aktiverade installeras uppdateringen på den virtuella datorn först efter att ett tillägg har ändrats eller efter andra ändringar i VM-modellen, till exempel:

  • Datadiskar
  • Tillägg
  • Tilläggstaggar
  • Container för startdiagnostik
  • Gästoperativsystemhemligheter
  • Storlek på virtuell dator
  • Nätverksprofil

Utgivare gör uppdateringar tillgängliga för regioner vid olika tidpunkter, så det är möjligt att du kan ha virtuella datorer i olika regioner i olika versioner.

Anteckning

Vissa uppdateringar kan kräva ytterligare brandväggsregler. Se Nätverksåtkomst.

Lista tillägg som distribuerats till en virtuell dator

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

Agentuppdateringar

Azure VM-agenten innehåller endast tilläggshanteringskod. Windows-etableringskoden är separat. Du kan avinstallera Azure VM-agenten. Du kan inte inaktivera den automatiska uppdateringen av Azure VM-agenten.

Tilläggshanteringskoden ansvarar för:

  • Kommunicera med Azure-infrastrukturresurserna.
  • Hantera åtgärder för VM-tillägg, till exempel installationer, rapporteringsstatus, uppdatering av enskilda tillägg och borttagning av tillägg. Uppdateringar innehåller säkerhetskorrigeringar, felkorrigeringar och förbättringar av tilläggshanteringskoden.

Information om vilken version du kör finns i Identifiera VM-agenten.

Tilläggsuppdateringar

När en tilläggsuppdatering är tillgänglig och automatiska uppdateringar är aktiverade, laddar Azure VM-agenten ned och uppgraderar tillägget när en ändring av VM-modellen inträffar.

Automatiska tilläggsuppdateringar är antingen mindre eller snabbkorrigeringar. Du kan anmäla dig för eller välja bort mindre uppdateringar när du etablerar tillägget. I följande exempel visas hur du automatiskt uppgraderar delversioner i en ARM-mall med hjälp "autoUpgradeMinorVersion": true,av :

    "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"
        ]
    },

För att få de senaste mindre felkorrigeringarna rekommenderar vi starkt att du alltid väljer automatisk uppdatering i tilläggsdistributionerna. Du kan inte välja bort snabbkorrigeringsuppdateringar som utför säkerhets- eller nyckelfelkorrigeringar.

Om du inaktiverar automatiska uppdateringar eller om du behöver uppgradera en högre version använder du Set-AzVMExtension och anger målversionen.

Så här identifierar du tilläggsuppdateringar

Identifiera om tillägget har angetts med autoUpgradeMinorVersion på en virtuell dator

Du kan se från VM-modellen om tillägget har etablerats med autoUpgradeMinorVersion. Kontrollera genom att använda Get-AzVm och ange resursgruppen och vm-namnet på följande sätt:

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

Följande exempelutdata visar att autoUpgradeMinorVersion är inställt på true:

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

Identifiera när en autoUpgradeMinorVersion-händelse inträffade

Om du vill se när en uppdatering av tillägget inträffade granskar du agentloggarna på den virtuella datorn på C:\WindowsAzure\Logs\WaAppAgent.log.

I följande exempel hade Microsoft.Compute.CustomScriptExtension den virtuella datorn versionen 1.8 installerad. En snabbkorrigering var tillgänglig för version 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'

Agentbehörigheter

Agenten måste köras som lokalt system för att kunna utföra sina uppgifter.

Felsöka VM-tillägg

Varje VM-tillägg kan ha specifika felsökningssteg. När du till exempel använder tillägget För anpassat skript kan du hitta information om skriptkörning lokalt på den virtuella dator där tillägget kördes.

Följande felsökningsåtgärder gäller för alla VM-tillägg:

  • Om du vill kontrollera Azure VM-agentloggen tittar du på aktiviteten när tillägget etablerades i C:\WindowsAzure\Logs\WaAppAgent.log.

  • Mer information finns i tilläggsloggarna i C:\WindowsAzure\Logs\Plugins<extensionName>.

  • I felsökningsavsnitten i tilläggsspecifik dokumentation finns felkoder, kända problem och annan tilläggsspecifik information.

  • Titta på systemloggarna. Sök efter andra åtgärder som kan ha stört tillägget, till exempel en långvarig installation av ett annat program som krävde exklusiv åtkomst till pakethanteraren.

  • Om det finns ett befintligt tillägg med ett misslyckat etableringstillstånd på en virtuell dator går det inte att installera något annat nytt tillägg.

Vanliga orsaker till tilläggsfel

  • Tilläggen har 20 minuter på sig att köras. (Undantag är Anpassat skript, Chef och DSC, som har 90 minuter.) Om distributionen överskrider den här tiden markeras den som en tidsgräns. Orsaken kan vara att virtuella datorer med låg resurs eller andra VM-konfigurationer eller startåtgärder förbrukar stora mängder resurser medan tillägget försöker etablera.

  • Minimikraven uppfylls inte. Vissa tillägg har beroenden på VM-SKU:er, till exempel HPC-avbildningar. Tillägg kan ha vissa åtkomstkrav för nätverk, till exempel kommunikation med Azure Storage eller offentliga tjänster. Andra exempel kan vara åtkomst till paketlagringsplatser, slut på diskutrymme eller säkerhetsbegränsningar.

  • Pakethanteraråtkomst är exklusiv. I vissa fall kan en långvarig vm-konfiguration och tilläggsinstallation vara i konflikt eftersom båda behöver exklusiv åtkomst till pakethanteraren.

Visa tilläggsstatus

När ett VM-tillägg har körts mot en virtuell dator använder du Get-AzVM för att returnera tilläggsstatus. Substatuses[0] visar att tilläggsetablering lyckades, vilket innebär att det har distribuerats till den virtuella datorn. Men Substatuses[1] visar att körningen av tillägget i den virtuella datorn misslyckades.

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

Utdata ser ut ungefär så här:

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

Du kan också hitta körningsstatus för tillägg i Azure-Portal. Välj den virtuella datorn, välj Tillägg och välj sedan önskat tillägg.

Kör ett VM-tillägg igen

Det kan finnas fall där ett VM-tillägg måste köras igen. Du kan köra ett tillägg igen genom att ta bort det och sedan köra tillägget igen med valfri körningsmetod. Om du vill ta bort ett tillägg använder du Remove-AzVMExtension på följande sätt:

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

Du kan också ta bort ett tillägg i Azure-Portal:

  1. Välj en virtuell dator.
  2. Välj Tillägg.
  3. Välj tillägget.
  4. Välj Avinstallera.

Referens för vanliga VM-tillägg

Tilläggsnamn Beskrivning
Tillägg för anpassat skript för Windows Kör skript mot en virtuell Azure-dator.
DSC-tillägg för Windows Tillämpa önskade tillståndskonfigurationer för PowerShell på en virtuell dator.
Azure Diagnostics-tillägg Hantera Azure Diagnostics.
VMAccess-tillägg Hantera användare och autentiseringsuppgifter.

Nästa steg

Mer information om VM-tillägg finns i Tillägg och funktioner för virtuella Azure-datorer.