Tillägg och funktioner för virtuella datorer för Linux

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 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-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, 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 sin egen dokumentation.

Användningsfall och exempel

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

  • Konfigurera övervakning av en virtuell dator med hjälp av tillägget Microsoft Monitoring Agent VM.
  • Konfigurera övervakning av Din Azure-infrastruktur med hjälp av Tillägget Chef eller Datadog .

Förutom processspecifika tillägg är 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 Linux kan alla Bash-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

Azure Linux-agent

För att hantera tillägget på den virtuella datorn behöver du Azure Linux-agenten installerad. Vissa enskilda tillägg har förutsättningar, till exempel åtkomst till resurser eller beroenden.

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

Azure Linux-agenten är förinstallerad på Azure Marketplace-avbildningar. Det 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 Linux-agenten behöver du inte tillåta åtkomst till Azure Storage i den virtuella datorregionen. Du kan använda agenten för att omdirigera kommunikationen till Azure Fabric-kontrollanten för agentkommunikation. 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 den privata IP-adressen 168.63.129.16 med hjälp av gästbrandväggen misslyckas tillägg även om du använder en version av agenten som stöds eller om du har konfigurerat utgående åtkomst.

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 (tillägg för anpassat skript) eller behöver åtkomst till Azure Storage (Azure Backup) måste du öppna ytterligare 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 kan du tillåta åtkomst med hjälp av Azure NSG-tjänsttaggar.

För att omdirigera agenttrafikbegäranden har Azure Linux-agenten stöd för proxyservern. Det här proxyserverstödet tillämpar dock inte tillägg. Du måste konfigurera varje enskilt tillägg så att det fungerar med en proxyserver.

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 az vm extension image list. I följande exempel visas alla tillgängliga tillägg på platsen westus :

az vm extension image list --location westus --output table

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.

Azure CLI

Du kan köra Azure VM-tillägg mot en befintlig virtuell dator med kommandot az vm extension set . I följande exempel körs tillägget Anpassat skript mot en virtuell dator med namnet myVM i en resursgrupp med namnet myResourceGroup. Ersätt exempelresursgruppens namn, VM-namn och skript för att köra (https://raw.githubusercontent.com/me/project/hello.sh) med din egen information.

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"fileUris": ["https://raw.githubusercontent.com/me/project/hello.sh"],"commandToExecute": "./hello.sh"}'

När tillägget körs korrekt liknar utdata följande exempel:

info:    Executing command vm extension set
+ Looking up the VM "myVM"
+ Installing extension "CustomScript", VM: "mvVM"
info:    vm extension set command OK

Azure PowerShell

Du kan köra Azure VM-tillägg mot en befintlig virtuell dator med hjälp av kommandot Set-AzVMExtension . I följande exempel körs tillägget Anpassat skript mot en virtuell dator med namnet myVM i en resursgrupp med namnet myResourceGroup. Ersätt exempelresursgruppens namn, VM-namn och skript för att köra (https://raw.githubusercontent.com/me/project/hello.sh) med din egen information.

$Params = @{
    ResourceGroupName  = 'myResourceGroup'
    VMName             = 'myVM'
    Name               = 'CustomScript'
    Publisher          = 'Microsoft.Azure.Extensions'
    ExtensionType      = 'CustomScript'
    TypeHandlerVersion = '2.1'
    Settings          = @{fileUris = @('https://raw.githubusercontent.com/me/project/hello.sh'); commandToExecute = './hello.sh'}
}
Set-AzVMExtension @Params

När tillägget körs korrekt liknar utdata följande exempel:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK

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 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.

Följande bild visar installationen av tillägget Anpassat skript för Linux från Azure-portalen:

Screenshot of the dialog for installing the Custom Script extension for Linux.

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 tas till exempel från en fullständig ARM-mall som distribuerar en uppsättning belastningsutjämningsbaserade 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/', concat(variables('vmName'),copyindex()))]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
    }
}

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 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 var och en beskrivs i tilläggsspecifik dokumentation.

I följande exempel visas en instans av tillägget Anpassat skript för Linux. 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/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ],
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

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/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ]
    },
    "protectedSettings": {
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

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.

Kommentar

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

Agentuppdateringar

Vm-agenten för Linux innehåller kod för etableringsagent och tilläggshantering i ett paket. De kan inte separeras.

Du kan inaktivera etableringsagenten när du vill etablera i Azure med hjälp av cloud-init.

Versioner av agenterna som stöds kan använda automatiska uppdateringar. Den enda kod som kan uppdateras är tilläggshanteringskoden, inte etableringsagentkoden. Koden för etableringsagenten körs en gång.

Tilläggshanteringskoden ansvarar för:

  • 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.

När agenten har installerats skapas en överordnad daemon. Den här överordnade filen skapar sedan en underordnad process som används för att hantera tillägg. Om en uppdatering är tillgänglig för agenten laddas den ned. Den överordnade stoppar den underordnade processen, uppgraderar den och startar sedan om den. Om det uppstår ett problem med uppdateringen återställs den överordnade processen till den tidigare underordnade versionen.

Den överordnade processen kan inte uppdateras automatiskt. Överordnad kan endast uppdateras av en distributionspaketuppdatering.

Kontrollera vilken version du kör genom att kontrollera waagent följande:

waagent --version

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

WALinuxAgent-2.2.45 running on <Linux Distro>
Python: 3.6.9
Goal state agent: 2.7.1.0

I föregående exempelutdata är WALinuxAgent-2.2.45den överordnade (eller paketdistribuerade versionen) . Värdet Goal state agent är den automatiska uppdateringsversionen.

Vi rekommenderar starkt att du alltid aktiverar automatisk uppdatering för agenten: AutoUpdate.Enabled=y. Om du inte aktiverar automatisk uppdatering måste du fortsätta att uppdatera agenten manuellt och du får inga fel- och säkerhetskorrigeringar.

Tilläggsuppdateringar

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

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 "autoUpgradeMinorVersion": true,av :

    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },

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 az vm extension set eller 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 az vm show och ange resursgruppen och namnet på den virtuella datorn enligt följande:

az vm show --resource-group myResourceGroup --name myVM

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

  "resources": [
    {
      "autoUpgradeMinorVersion": true,
      "forceUpdateTag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/customScript",

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

Om du vill se när en uppdatering av tillägget inträffade läser du agentloggarna på den virtuella datorn på /var/log/waagent.log.

I följande exempel hade Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025 den virtuella datorn installerats. En snabbkorrigering var tillgänglig för Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027.

INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Expected handler state: enabled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Decide which version to use
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Use version: 2.3.9027
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Current handler state is: NotInstalled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Download extension package
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Unpack extension package
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Download, message=Download succeeded
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Initialize extension directory
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update settings file: 0.settings
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Disable extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Launch command:diagnostic.py -disable
...
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Disable, message=Launch command succeeded: diagnostic.py -disable
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Launch command:diagnostic.py -update
2017/08/14 20:21:57 LinuxAzureDiagnostic started to handle.

Agentbehörigheter

För att kunna utföra sina uppgifter måste agenten köras som rot.

Felsöka VM-tillägg

Varje VM-tillägg kan ha specifika felsökningssteg. När du till exempel använder tillägget 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 Linux-agentloggen tittar du på aktiviteten när tillägget etablerades i /var/log/waagent.log.

  • Mer information finns i tilläggsloggarna i /var/log/azure/<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.

Vanliga orsaker till tilläggsfel

  • Tilläggen har 20 minuter på sig att köras. (Undantag är anpassat skript och Chef, som har 90 minuter.) Om distributionen överskrider den här tiden markeras den som en tidsgräns. Orsaken till detta 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 az vm get-instance-view för att returnera tilläggsstatus på följande sätt:

az vm get-instance-view \
    --resource-group myResourceGroup \
    --name myVM \
    --query "instanceView.extensions"

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

  {
    "name": "customScript",
    "statuses": [
      {
        "code": "ProvisioningState/failed/0",
        "displayStatus": "Provisioning failed",
        "level": "Error",
        "message": "Enable failed: failed to execute command: command terminated with exit status=127\n[stdout]\n\n[stderr]\n/bin/sh: 1: ech: not found\n",
        "time": null
      }
    ],
    "substatuses": null,
    "type": "Microsoft.Azure.Extensions.CustomScript",
    "typeHandlerVersion": "2.1.6"
  }

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

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 az vm extension delete på följande sätt:

az vm extension delete \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name customScript

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

  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

Namn på tillägg beskrivning
Tillägg för anpassat skript för Linux Kör skript mot en virtuell Azure-dator.
VMAccess-tillägg Återfå åtkomsten till en virtuell Azure-dator. Du kan också använda den för att hantera användare och autentiseringsuppgifter.
Azure Diagnostics-tillägg Hantera Azure Diagnostics.

Nästa steg

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