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 inuti den virtuella datorn kan du använda ett VM-tillägg.
Du kan köra Azure VM-tillägg med hjälp av mallarna Azure CLI, PowerShell, Azure Resource Manager (ARM) och Azure-portalen. 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, inklusive krav och vägledning om hur du identifierar, hanterar och tar bort tillägg. Den här artikeln innehåller generaliserad information eftersom många VM-tillägg är tillgängliga. Varje tillägg har en potentiellt unik konfiguration och en egen dokumentation.
Användningsfall och exempel
Varje Azure VM-tillägg har ett specifikt användningsfall. Nedan följer några exempel:
Använd PowerShell-önskade tillståndskonfigurationer (DSCs) på en virtuell dator med hjälp av DSC-tillägget för Windows.
Konfigurera övervakning av en virtuell dator med hjälp av Azure Monitor-agenten och VM-insikter.
Konfigurera en virtuell Azure-dator med hjälp av Chef.
Konfigurera övervakning av Din Azure-infrastruktur med hjälp av Datadog-tillägget.
Förutom processspecifika tillägg är ett anpassat skripttillägg tillgängligt för både virtuella Windows- och Linux-datorer. Med tillägget för 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.
Förutsättningar
Granska följande förutsättningar för att arbeta med Azure VM-tillägg.
Azure VM-agent
För att hantera tillägg på den virtuella datorn behöver du Azure Virtual Machine Agent för Windows installerat. Den här agenten kallas även för Azure VM-agenten eller Windows-gästagenten. När du förbereder dig för att installera tillägg bör du tänka på att vissa tillägg har individuella krav, till exempel åtkomst till resurser eller beroenden.
Azure VM-agenten hanterar interaktioner mellan en virtuell Azure-dator och Azure Fabric-kontrollanten. Agenten ansvarar för många funktionella aspekter av distribution och hantering av virtuella Azure-datorer, inklusive att köra VM-tillägg.
Azure VM-agenten är förinstallerad på Azure Marketplace-avbildningar. Agenten 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 hämtas från lagringsplatsen för Azure Storage-tillägget. Tilläggsstatusuppladdningar publiceras i Azure Storage.
Om du använder en version som stöds av Azure VM-agenten behöver du inte tillåta åtkomst till Azure Storage i vm-regionen. Du kan använda VM-agenten för att omdirigera kommunikationen till Azure Fabric-kontrollanten för agentkommunikation (via HostGAPlugin
funktionen via den privilegierade kanalen på den privata IP-adressen 168.63.129.16). Om du har en version av VM-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 blockerar åtkomsten till IP-adressen 168.63.129.16 med hjälp av gästbrandväggen eller via en proxyserver misslyckas tilläggen. Fel inträffar även om du använder en version av VM-agenten som stöds eller om du konfigurerar utgående åtkomst. Portarna 80 och 32526 krävs.
Agenter kan bara användas för att ladda ned tilläggspaket och rapportstatus. Om en tilläggsinstallation till exempel behöver ladda ned ett skript från GitHub (anpassat skripttillägg) eller kräver åtkomst till Azure Storage (Azure Backup) måste du öppna andra brandväggs- eller nätverkssäkerhetsgruppsportar (NSG). Olika tillägg har olika krav eftersom de är program i sig själva. För tillägg som kräver åtkomst till Azure Storage eller Microsoft Entra-ID kan du tillåta åtkomst med hjälp av Azure NSG-tjänsttaggar.
Azure VM-agenten tillhandahåller inte stöd för proxyservern för att aktivera omdirigering av agenttrafikbegäranden. VM-agenten förlitar sig på din anpassade proxy (om du har en) för att komma åt resurser på Internet eller på värden via IP-adressen 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 PowerShell-cmdleten Get-AzVMExtensionImage
.
Följande kommando visar alla tillgängliga VM-tillägg i regionen USA, västra:
Get-AzVmImagePublisher -Location "West US" |
Get-AzVMExtensionImageType |
Get-AzVMExtensionImage | Select Type, Version
Det här kommandot ger utdata som liknar följande exempel:
Type Version
---- -------
AcronisBackup 1.0.33
AcronisBackup 1.0.51
AcronisBackupLinux 1.0.33
AlertLogicLM 1.3.0.1
AlertLogicLM 1.3.0.0
AlertLogicLM 1.4.0.1
Köra VM-tillägg
Azure VM-tillägg körs på befintliga virtuella datorer, vilket ä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.
Kommentar
Några av följande exempel använder "<placeholder>"
parametervärden i kommandona. Innan du kör varje kommando måste du ersätta alla "<placeholder>"
värden med specifika värden för konfigurationen.
PowerShell
Det finns flera PowerShell-kommandon för att köra enskilda tillägg. Om du vill se en lista använder du kommandot Get-Command och filtrerar på Tillägget:
Get-Command Set-Az*Extension* -Module Az.Compute
Det här kommandot ger utdata som liknar följande exempel:
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 för 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 "<myVMregion>"
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 "myVMregion" -UserName $cred.GetNetworkCredential().Username `
-Password $cred.GetNetworkCredential().Password -typeHandlerVersion "2.0"
Du kan använda kommandot Set-AzVMExtension för att starta alla VM-tillägg.
Azure Portal
Du kan använda VM-tillägg på en befintlig virtuell dator via Azure-portalen. Välj den virtuella datorn i portalen, välj Tillägg + program 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-portalen:
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-exempel kommer från en ARM-mall som distribuerar en uppsättning belastningsbelastade virtuella datorer och en Azure SQL-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 ARM-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 som 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 varje schema beskrivs i tilläggsspecifik dokumentation.
I följande JSON-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')]"
}
}
}
Genom att flytta egenskapen commandToExecute
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 i certifikatkonsolen se certifikat som har ämnet Windows Azure CRP Certificate Generator. På en klassisk virtuell Dator med RedDog Front End (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. Azure Fabric-kontrollanten skapar certifikaten och skickar dem 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 eller en annan VM-modell har ändrats. Ändringarna kan vara:
- 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. Det är möjligt att du kan ha virtuella datorer i olika regioner i olika versioner.
Kommentar
Vissa uppdateringar kan kräva ytterligare brandväggsregler. Mer information finns i Nätverksåtkomst.
Lista tillägg som distribuerats till en virtuell dator
Du kan använda följande kommando för att visa de tillägg som distribuerats till en virtuell dator:
$vm = Get-AzVM -ResourceGroupName "<myResourceGroup>" -VMName "<myVM>"
$vm.Extensions | select Publisher, VirtualMachineExtensionType, TypeHandlerVersion
Det här kommandot genererar utdata som liknar följande exempel:
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 följande uppgifter:
- Kommunicera med Azure Fabric.
- 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 Azure 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 om en VM-modell ändras.
Automatiska tilläggsuppdateringar är antingen mindre eller snabbkorrigeringar. Du kan anmäla dig för eller avregistrera dig från mindre uppdateringar när du etablerar tillägget. I följande exempel visas hur du automatiskt uppgraderar mindre versioner i en ARM-mall med hjälp av parametern "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"
]
},
För att få de senaste felkorrigeringarna för mindre versioner rekommenderar vi starkt att du alltid väljer automatisk uppdatering i tilläggsdistributionerna. Du kan inte avanmäla dig från snabbkorrigeringar som utför säkerhets- eller nyckelfelkorrigeringar.
Om du inaktiverar automatiska uppdateringar eller om du behöver uppgradera en huvudversion använder du kommandot Set-AzVMExtension och anger målversionen.
Så här identifierar du tilläggsuppdateringar
Det finns några sätt att identifiera uppdateringar för ett tillägg.
Identifiera om tillägget har angetts med autoUpgradeMinorVersion på en virtuell dator
Du kan visa VM-modellen för att avgöra om tillägget har etablerats med parametern autoUpgradeMinorVersion
. Om du vill kontrollera VM-modellen använder du kommandot Get-AzVm och anger resursgruppen och namnet på den virtuella datorn på följande sätt:
$vm = Get-AzVm -ResourceGroupName "myResourceGroup" -VMName "myVM"
$vm.Extensions
Följande exempelutdata visar att parametern autoUpgradeMinorVersion
är inställd på true
:
ForceUpdateTag :
Publisher : Microsoft.Compute
VirtualMachineExtensionType : CustomScriptExtension
TypeHandlerVersion : 1.9
AutoUpgradeMinorVersion : True
Identifiera när en autoUpgradeMinorVersion-händelse inträffar
Om du vill se när en uppdatering av tillägget inträffade kan du granska agentloggarna på den virtuella datorn på C:\WindowsAzure\Logs\WaAppAgent.log.
I följande exempel visas den virtuella datorn med Microsoft.Compute.CustomScriptExtension
versionen 1.8
installerad och en snabbkorrigering som är 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
För att kunna utföra sina uppgifter måste Azure VM-agenten köras som lokalt system.
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örs.
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
Här är några vanliga orsaker till att ett tillägg kan misslyckas:
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 till det här problemet kan vara virtuella datorer med låg resursanvändning, eller att andra VM-konfigurationer eller startuppgifter 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 krav på nätverksåtkomst, till exempel kommunikation med Azure Storage eller offentliga tjänster. Andra exempel kan vara åtkomst till paketlagringsplatser, slut på diskutrymme eller säkerhetsbegränsningar.
Pakethanterarens å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 kommandot Get-AzVM för att returnera tilläggsstatus. Resultatet Substatuses[0]
visar att tilläggsetablering lyckades, vilket innebär att det har distribuerats till den virtuella datorn. Om du ser resultatet Substatuses[1]
misslyckades körningen av tillägget i den virtuella datorn.
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 status för tilläggskörning i Azure-portalen. Välj den virtuella datorn, välj Tillägg och välj sedan önskat tillägg.
Kör ett VM-tillägg igen
I vissa fall kan du behöva köra ett VM-tillägg igen. Du kan köra ett tillägg igen genom att ta bort tillägget och sedan köra tillägget igen med valfri körningsmetod. Om du vill ta bort ett tillägg använder du kommandot 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-portalen. Välj en virtuell dator, välj Tillägg och välj sedan önskat tillägg. Välj Avinstallera.
Referens för vanliga VM-tillägg
Följande tabell innehåller några vanliga referenser för VM-tillägg.
Namn på tillägg | beskrivning |
---|---|
Tillägg för anpassat skript för Windows | Kör skript mot en virtuell Azure-dator. |
DSC-tillägg för Windows | Använd ö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.