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 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, krav 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:

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 för 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 ge.

Förutsättningar

Azure Linux-agent

Om du vill hantera tillägget på den virtuella datorn måste Azure Linux-agenten vara installerad. Vissa enskilda tillägg har krav, till exempel åtkomst till resurser eller beroenden.

Azure Linux-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 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äggen använder. Vissa tillägg stöds inte i alla operativsystem och kan generera felkod 51 ("operativsystemet stöds inte"). Läs dokumentationen om enskilda tillägg för support.

Nätverksåtkomst

Tilläggspaket laddas ned från lagringsplatsen för Azure Storage-tillägg. Tilläggstatusuppladdningar publiceras till Azure Storage.

Om du använder en version av Azure Linux-agentensom 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. 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äggen ä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 rapportera status. 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 portar för brandvägg eller nätverkssäkerhetsgrupp (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 kan du tillåta åtkomst med hjälp av Azure NSG-tjänsttaggar .

Azure Linux-agenten har stöd för proxyserver för att omdirigera begäranden om agenttrafik. Det här proxyserverstödet gäller 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 USA, västra:

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 det anpassade skripttillägget mot en virtuell dator med namnet myVM i en resursgrupp med namnet myResourceGroup. Ersätt exempelresursgruppens namn, namnet på den virtuella datorn och skriptet som ska köras ( 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 Portal

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äggoch 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 för anpassat skript för Linux från Azure Portal:

Skärmbild av dialogrutan för att installera tillägget för anpassat skript för 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 kommer till exempel från en fullständig ARM-mall som distribuerar en uppsättning belastningsutjämnade virtuella datorer och en Azure SQL-databas och installerar sedan 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.0",
    "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 data för VM-tillägg

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 schema för skyddad konfiguration, och vart och ett beskrivs i tilläggsspecifik dokumentation.

I följande exempel visas en instans av tillägget för 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.0",
    "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 commandToExecute flytta egenskapen till konfigurationen kan du skydda protected 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.0",
    "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 har aktiverats installeras uppdateringen på den virtuella datorn först efter att ett tillägg eller andra VM-modelländringar har ändrats, till exempel:

  • Datadiskar
  • Tillägg
  • Startdiagnostikcontainer
  • Hemligheter för gästoperativsystem
  • 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 på olika versioner.

Anteckning

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

Agentuppdateringar

Den virtuella Linux-datoragenten innehåller etableringsagentens kod och tilläggshanteringskod 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 koden för etableringsagenten. Etableringsagentens kod körs en gång.

Tilläggshanteringskoden ansvarar för:

  • Kommunicera med Azure-infrastrukturerna.
  • Hantering av vm-tilläggsåtgärder, 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 överordnade 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 problem med uppdateringen återställs den överordnade processen till den tidigare underordnade versionen.

Den överordnade processen kan inte uppdateras automatiskt. Den överordnade kan bara uppdateras av en uppdatering av distributionspaket.

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.17 running on ubuntu 16.04
Python: 3.6.0
Goal state agent: 2.2.18

I föregående exempelutdata är den överordnade versionen (eller den paket distribuerade WALinuxAgent-2.2.17 versionen). Värdet Goal state agent är versionen för automatisk uppdatering.

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 aktiveras, laddar Azure Linux-agenten ned och uppgraderar tillägget efter att en ändring av VM-modellen har inträffat.

Automatiska tilläggsuppdateringar är antingen mindre uppdateringar eller snabbkorrigeringar. Du kan välja bort 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 "autoUpgradeMinorVersion": true, :

    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "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 i mindre versioner rekommenderar vi starkt att du alltid väljer automatisk uppdatering i dina tilläggsdistributioner. Du kan inte välja bort snabbkorrigeringsuppdateringar som innehåller säkerhets- eller nyckelfelkorrigeringar.

Om du inaktiverar automatiska uppdateringar eller om du behöver uppgradera en huvudversion använder du az vm extension set 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 . Du kan kontrollera detta genom att använda az vm show och ange resursgruppen och namnet på den virtuella datorn på följande sätt:

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/CustomScriptExtension",

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å /var/log/waagent.log.

I följande exempel hade den virtuella datorn Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025 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 utföra sina uppgifter måste agenten köras som roten.

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 skriptkörningsinformation lokalt på den virtuella dator där tillägget har körts.

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 /var/log/azure/ extensionName i tilläggsloggarna. >

  • Läs felsökningsavsnitten i tilläggsspecifik dokumentation för 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ägg har 20 minuter att köra. (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 detta kan vara virtuella datorer med låg resurs, andra VM-konfigurationer eller startaktiviteter förbrukar stora mängder resurser medan tillägget försöker etablera.

  • Minimikraven är inte uppfyllda. Vissa tillägg har beroenden på VM SKU:er, till exempel HPC-avbildningar. Tillägg kan ha vissa nätverkskrav, till exempel kommunikation med Azure Storage eller offentliga tjänster. Andra exempel kan vara åtkomst till paketdatabaser, diskutrymmet tar slut 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 enligt följande:

az vm get-instance-view \
    --resource-group rgName \
    --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.0.6"
  }

Du kan också hitta status för körning av tillägg i Azure Portal. Välj den virtuella datorn, väljTillägg och välj sedan önskat tillägg.

Köra 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 Portal:

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

Referens för gemensamt VM-tillägg

Tilläggsnamn Beskrivning
Anpassat skripttillägg för Linux Kör skript mot en virtuell Azure-dator.
VMAccess-tillägg Återfå åtkomst 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.