Använda version 2 av Azures tillägg för anpassat skript med virtuella Linux-datorer

Varning

Den här artikeln refererar till CentOS, en Linux-distribution som närmar sig EOL-status (End Of Life). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.

Det anpassade skripttillägget version 2 laddar ned och kör skript på virtuella Azure-datorer (VM). Använd det här tillägget för konfiguration efter distribution, programvaruinstallation eller någon annan konfigurations- eller hanteringsuppgift. Du kan ladda ned skript från Azure Storage eller en annan tillgänglig internetplats, eller så kan du ange dem för tilläggskörningen.

Tillägget för anpassade skript integreras med Azure Resource Manager-mallar. Du kan också köra den med hjälp av Azure CLI, Azure PowerShell eller REST-API:et för virtuella Azure-datorer.

Den här artikeln beskriver hur du använder tillägget för anpassat skript från Azure CLI och hur du kör tillägget med hjälp av en Azure Resource Manager-mall. Den här artikeln innehåller även felsökningssteg för Linux-system.

Det finns två versioner av tillägget för anpassat skript:

  • Version 1: Microsoft.OSTCExtensions.CustomScriptForLinux
  • Version 2: Microsoft.Azure.Extensions.CustomScript

Använd version 2 för nya och befintliga distributioner. Den nya versionen är en drop-in ersättning. Migreringen är lika enkel som att ändra namn och version. Du behöver inte ändra tilläggskonfigurationen.

Förutsättningar

Linux-distributioner som stöds

Distribution x64 ARM64
Alma Linux 9.x+ 9.x+
CentOS 7.x+, 8.x+ 7.x+
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ Stöds inte
Oracle Linux 6.4+, 7.x+, 8.x+ Stöds inte
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+, 9.x+ 8.6+, 9.x+
Rocky Linux 9.x+ 9.x+
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Skriptplats

Du kan konfigurera tillägget så att det använder dina Azure Blob Storage-inloggningsuppgifter för att få tillgång till Azure Blob Storage. Skriptplatsen kan vara var som helst, förutsatt att den virtuella datorn kan dirigera trafik till den slutpunkten, till exempel GitHub eller en intern filserver.

Internet-anslutning

Om du vill ladda ned ett skript externt, till exempel från GitHub eller Azure Storage, måste du öppna andra portar i brandväggen eller i nätverkssäkerhetsgruppen (NSG). Om skriptet till exempel finns i Azure Storage kan du tillåta åtkomst med hjälp av Azure NSG tjänsttaggar för Storage.

Om skriptet finns på en lokal server kan du fortfarande behöva öppna andra brandväggar eller NSG-portar.

Tips

  • Den högsta felfrekvensen för det här tillägget beror på syntaxfel i skriptet. Kontrollera att skriptet körs utan fel. Lägg till mer loggning i skriptet för att underlätta identifiering av fel.
  • Skriv idempotenta skript, så att att det inte orsakar förändringar i systemet om du kör dem flera gånger oavsiktligt.
  • Se till att skripten inte kräver indata från användaren när de körs.
  • Skriptet kan köras i 90 minuter. Sedan misslyckas etableringen av tillägget.
  • Placera inte omstarter i skriptet. Omstart orsakar problem med andra tillägg som installeras och tillägget fortsätter inte efter omstarten.
  • Om du har ett skript som orsakar en omstart innan du installerar program och kör skript schemalägger du omstarten med hjälp av ett cron-jobb eller med verktyg som DSC-, Chef- eller Puppet-tillägg.
  • Kör inte ett skript som orsakar ett stopp eller en uppdatering av Azure Linux Agent. Det kan lämna tillägget i ett övergångstillstånd och leda till en timeout.
  • Tillägget kör bara ett skript en gång. Om du vill köra ett skript vid varje start kan du använda en cloud-init-avbildning och en Skript per start-modul . Du kan även använda skriptet för att skapa en systemd-tjänstenhet.
  • Du kan bara ha en version av ett tillägg som tillämpas på den virtuella datorn. Om du vill köra ett andra anpassat skript uppdaterar du det befintliga tillägget med en ny konfiguration. Alternativt kan du ta bort tillägget för anpassat skript och återanvända det med det uppdaterade skriptet.
  • Om du vill schemalägga när ett skript körs använder du tillägget för att skapa ett cron-jobb.
  • När skriptet körs visas endast tilläggsstatusen övergång i Azure-portalen eller i CLI. Om du behöver mer frekventa statusuppdateringar för ett skript som körs skapar du en egen lösning.
  • Tillägget för anpassat skript har inte inbyggt stöd för proxyservrar. Du kan dock använda ett filöverföringsverktyg, t.ex. Curl, som stöder proxyservrar i skriptet.
  • Kontrollera om dina skript eller kommandon använder andra katalogplatser än standardplatserna. I så fall måste du ha logik som hanterar detta.

Tilläggsschema

Konfigurationen för anpassat skripttillägg anger saker som skriptplats och kommandot som ska köras. Du kan lagra den här informationen i konfigurationsfiler, ange den på kommandoraden eller ange den i en Azure Resource Manager-mall.

Du kan lagra känsliga data i en skyddad konfiguration, som är krypterad och endast dekrypterad på den virtuella måldatorn. Den skyddade konfigurationen är användbar när körningskommandot innehåller hemligheter som ett lösenord. Här är ett exempel:

{
  "name": "config-app",
  "type": "Extensions",
  "location": "[resourceGroup().location]",
  "apiVersion": "2019-03-01",
  "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": {
      "skipDos2Unix":false,
      "timestamp":123456789
    },
    "protectedSettings": {
       "commandToExecute": "<command-to-execute>",
       "script": "<base64-script-to-execute>",
       "storageAccountName": "<storage-account-name>",
       "storageAccountKey": "<storage-account-key>",
       "fileUris": ["https://.."],
       "managedIdentity" : "<managed-identity-identifier>"
    }
  }
}

Kommentar

Egenskapen managedIdentityfår inte användas tillsammans med storageAccountName egenskapen eller storageAccountKey .

Egenskapsvärden

Name Värde eller exempel Datatyp
apiVersion 2019-03-01 datum
Publisher Microsoft.Azure.Extensions sträng
type CustomScript sträng
typeHandlerVersion 2.1 heltal
fileUris https://github.com/MyProject/Archive/MyPythonScript.py matris
commandToExecute python MyPythonScript.py \<my-param1> sträng
-skriptet IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo= sträng
skipDos2Unix false boolean
timestamp 123456789 32-bitars heltal
storageAccountName examplestorageacct sträng
storageAccountKey TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== sträng
managedIdentity { }eller { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" }{ "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" } JSON-objekt

Information om egenskapsvärde

Property Valfritt eller obligatoriskt Details
apiVersion Inte tillämpligt Du hittar den senaste API-versionen med hjälp av Resource Explorer eller med hjälp av kommandot az provider list -o json i Azure CLI.
fileUris Valfritt URL:er för filer som ska laddas ned.
commandToExecute Krävs om script inte har angetts Startpunktsskriptet som ska köras. Använd den här egenskapen i stället för script om kommandot innehåller hemligheter som lösenord.
-skriptet Krävs om commandToExecute inte har angetts Ett Base64-kodat och eventuellt gzip'ed-skript som körs av /bin/sh.
skipDos2Unix Valfritt Ange det här värdet till false om du vill hoppa över dos2unix-konvertering av skriptbaserade fil-URL:er eller skript.
timestamp Valfritt Ändra endast det här värdet för att utlösa en omkörning av skriptet. Ett heltalsvärde är acceptabelt, så länge det skiljer sig från det tidigare värdet.
storageAccountName Valfritt Namnet på lagringskontot. Om du anger autentiseringsuppgifter för lagring måste alla fileUris värden vara URL:er för Azure-blobar.
storageAccountKey Valfritt Åtkomstnyckeln för lagringskontot.
managedIdentity Valfritt Den hanterade identiteten för nedladdning av filer. Värden är clientId (valfritt, sträng), vilket är klient-ID för den hanterade identiteten och objectId (valfri sträng), vilket är objekt-ID för den hanterade identiteten.

Offentliga inställningar skickas i klartext till den virtuella dator där skriptet körs. Skyddade inställningar krypteras via en nyckel som endast är känd för Azure och den virtuella datorn. Inställningarna sparas på den virtuella datorn när de skickades. Om inställningarna krypterades sparas de alltså krypterade på den virtuella datorn. Certifikatet som används för att dekryptera de krypterade värdena lagras på den virtuella datorn. Certifikatet används också för att dekryptera inställningar vid behov vid körning.

Det kan vara användbart att använda offentliga inställningar för felsökning, men vi rekommenderar starkt att du använder skyddade inställningar.

Du kan ange följande värden i offentliga eller skyddade inställningar. Tillägget avvisar alla konfigurationer där dessa värden anges i både offentliga och skyddade inställningar.

  • commandToExecute
  • script
  • fileUris

Egenskap: skipDos2Unix

Den tidigare versionen av tillägget för anpassat skript, Microsoft.OSTCExtensions.CustomScriptForLinux, konverterar automatiskt DOS-filer till UNIX-filer genom att \r\n översätta till \n. Översättningen finns fortfarande och är aktiverad som standard. Den här konverteringen tillämpas på alla filer som laddas ned från fileUris eller skriptinställningen baserat på något av följande kriterier:

  • Tillägget är .sh, .txt, .py eller .pl. Skriptinställningen matchar alltid det här kriteriet eftersom det antas vara en skriptkörning med /bin/sh. Skriptinställningen sparas som script.sh på den virtuella datorn.
  • Filen börjar med #!.

Standardvärdet är false, vilket innebär att dos2unix-konverteringkörs. Du kan hoppa över dos2unix-konverteringen genom att ange skipDos2Unix till true:

{
  "fileUris": ["<url>"],
  "commandToExecute": "<command-to-execute>",
  "skipDos2Unix": true
}

Egenskap: skript

Tillägget för anpassat skript stöder körning av ett användardefinierat skript. Skriptinställningarna kombineras commandToExecute och fileUris in i en enda inställning. I stället för att behöva konfigurera en fil för nedladdning från Azure Storage eller ett GitHub-gist kan du koda skriptet som en inställning. Du kan använda skriptet för att ersätta commandToExecute och fileUris.

Här följer några krav:

  • Skriptet måste vara Base64-kodat.
  • Skriptet kan eventuellt gzip'ed.
  • Du kan använda skriptinställningen i offentliga eller skyddade inställningar.
  • Den maximala storleken på skriptparameterns data är 256 KB. Om skriptet överskrider den här storleken körs det inte.

Följande skript sparas till exempel i filen /script.sh/:

#!/bin/sh
echo "Creating directories ..."
mkdir /data
chown user:user /data
mkdir /appdata
chown user:user /appdata

Du skapar rätt skriptinställning för anpassat skripttillägg genom att ta utdata från följande kommando:

cat script.sh | base64 -w0
{
  "script": "IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo="
}

I de flesta fall kan skriptet eventuellt gzip'ed för att ytterligare minska storleken. Tillägget för anpassat skript identifierar automatiskt användningen av gzip-komprimering.

cat script | gzip -9 | base64 -w 0

Tillägget för anpassat skript använder följande algoritm för att köra ett skript:

  1. Bekräfta att längden på skriptets värde inte överskrider 256 KB.
  2. Base64 avkodar skriptets värde.
  3. Försök att gunzip det Base64-avkodade värdet.
  4. Skriv det avkodade och eventuellt dekomprimerade värdet till disk: /var/lib/waagent/custom-script/#/script.sh.
  5. Kör skriptet med hjälp _/bin/sh -c /var/lib/waagent/custom-script/#/script.shav .

Egenskap: managedIdentity

Kommentar

Den här egenskapen måste endast anges i skyddade inställningar.

Tillägget för anpassat skript, version 2.1 och senare, stöder hanterade identiteter för nedladdning av filer från URL:er som anges i inställningen fileUris . Med den här metoden kan det anpassade skripttillägget komma åt privata Azure Storage-blobbar eller containrar utan att användaren behöver skicka hemligheter som SAS-token (signatur för delad åtkomst) eller lagringskontonycklar.

Om du vill använda den här funktionen lägger du till en systemtilldelad eller användartilldelad identitet till den virtuella datorn eller vm-skalningsuppsättningen där det anpassade skripttillägget förväntas köras. Bevilja sedan den hanterade identiteten åtkomst till Azure Storage-containern eller bloben.

Om du vill använda den systemtilldelade identiteten på den virtuella måldatorn eller VM-skalningsuppsättningen anger du managedidentity till ett tomt JSON-objekt.

{
  "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
  "commandToExecute": "sh script1.sh",
  "managedIdentity" : {}
}

Om du vill använda den användartilldelade identiteten på den virtuella måldatorn eller VM-skalningsuppsättningen konfigurerar managedidentity du med klient-ID:t eller objekt-ID:t för den hanterade identiteten.

{
  "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
  "commandToExecute": "sh script1.sh",
  "managedIdentity" : { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" }
}
{
  "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
  "commandToExecute": "sh script1.sh",
  "managedIdentity" : { "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" }
}

Kommentar

Egenskapen managedIdentityfår inte användas tillsammans med storageAccountName egenskapen eller storageAccountKey .

Malldistribution

Du kan distribuera Azure VM-tillägg med hjälp av Azure Resource Manager-mallar. JSON-schemat som beskrivs i föregående avsnitt kan användas i en Azure Resource Manager-mall för att köra tillägget för anpassat skript under mallens distribution. Du hittar en exempelmall som innehåller tillägget för anpassat skript på GitHub.

{
  "name": "config-app",
  "type": "extensions",
  "location": "[resourceGroup().location]",
  "apiVersion": "2019-03-01",
  "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": {
      },
    "protectedSettings": {
      "commandToExecute": "sh hello.sh <param2>",
      "fileUris": ["https://github.com/MyProject/Archive/hello.sh"
      ]
    }
  }
}

Kommentar

Dessa egenskapsnamn är skiftlägeskänsliga. Undvik distributionsproblem genom att använda namnen som visas här.

Azure CLI

När du använder Azure CLI för att köra tillägget för anpassat skript skapar du en konfigurationsfil eller filer. Konfigurationsfilen måste minst innehålla commandToExecute. Kommandot az vm extension set refererar till konfigurationsfilen:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --protected-settings ./script-config.json

Du kan också ange inställningarna i kommandot som en JSON-formaterad sträng. Med den här metoden kan konfigurationen anges under körningen och utan en separat konfigurationsfil.

az vm extension set \
  --resource-group exttest \
  --vm-name exttest \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --protected-settings '{"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],"commandToExecute": "./config-music.sh"}'

Exempel: Offentlig konfiguration med skriptfil

I det här exemplet används följande skriptfil med namnet script-config.json:

{
  "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],
  "commandToExecute": "./config-music.sh"
}
  1. Skapa skriptfilen med valfri textredigerare eller med hjälp av följande CLI-kommando:

    cat <<EOF > script-config.json
    {
      "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],
      "commandToExecute": "./config-music.sh"
    }
    EOF
    
  2. Kör följande kommando:

    az vm extension set \
      --resource-group myResourceGroup \
      --vm-name myVM --name customScript \
      --publisher Microsoft.Azure.Extensions \
      --settings ./script-config.json
    

Exempel: Offentlig konfiguration utan skriptfil

I det här exemplet används följande JSON-formaterade innehåll:

{
  "commandToExecute": "apt-get -y update && apt-get install -y apache2"
}

Kör följande kommando:

az vm extension set \
  --resource-group tim0329vmRG \
  --vm-name tim0329vm --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"commandToExecute": "apt-get -y update && apt-get install -y apache2"}'

Exempel: Offentliga och skyddade konfigurationsfiler

Använd en offentlig konfigurationsfil för att ange skriptfilens URI:

{
  "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"]
}

Använd en skyddad konfigurationsfil för att ange vilket kommando som ska köras:

{
  "commandToExecute": "./config-music.sh"
}
  1. Skapa den offentliga konfigurationsfilen med valfri textredigerare eller med hjälp av följande CLI-kommando:

    cat <<EOF > script-config.json
    {
      "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"]
    }
    EOF
    
  2. Skapa den skyddade konfigurationsfilen med valfri textredigerare eller med hjälp av följande CLI-kommando:

    cat <<EOF > protected-config.json
    {
      "commandToExecute": "./config-music.sh"
    }
    EOF
    
  3. Kör följande kommando:

    az vm extension set \
      --resource-group myResourceGroup \
      --vm-name myVM \
      --name customScript \
      --publisher Microsoft.Azure.Extensions \
      --settings ./script-config.json \
      --protected-settings ./protected-config.json
    

Virtual Machine Scale Sets

Om du distribuerar tillägget för anpassat skript från Azure-portalen har du inte kontroll över förfallodatumet för SAS-token för att få åtkomst till skriptet i ditt lagringskonto. Den inledande distributionen fungerar, men när lagringskontots SAS-token upphör att gälla misslyckas alla efterföljande skalningsåtgärder eftersom det anpassade skripttillägget inte längre kan komma åt lagringskontot.

Vi rekommenderar att du använder PowerShell, Azure CLI eller en Azure Resource Manager-mall när du distribuerar tillägget för anpassade skript på en VM-skalningsuppsättning. På så sätt kan du välja att använda en hanterad identitet eller ha direkt kontroll över förfallodatumet för SAS-token för åtkomst till skriptet i ditt lagringskonto så länge du behöver.

Felsökning

När tillägget för anpassat skript körs skapas eller laddas skriptet ned till en katalog som liknar följande exempel. Kommandoutdata sparas också i den här katalogen i stdout och stderr filer.

sudo ls -l /var/lib/waagent/custom-script/download/0/

Om du vill felsöka kontrollerar du först Linux-agentloggen och kontrollerar att tillägget kördes:

sudo cat /var/log/waagent.log

Leta efter tilläggskörningen. Det ser ut ungefär så här:

2018/04/26 17:47:22.110231 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] [Enable] current handler state is: notinstalled
2018/04/26 17:47:22.306407 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Download, message=Download succeeded, duration=167
2018/04/26 17:47:22.339958 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Initialize extension directory
2018/04/26 17:47:22.368293 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Update settings file: 0.settings
2018/04/26 17:47:22.394482 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Install extension [bin/custom-script-shim install]
2018/04/26 17:47:23.432774 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Install, message=Launch command succeeded: bin/custom-script-shim install, duration=1007
2018/04/26 17:47:23.476151 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Enable extension [bin/custom-script-shim enable]
2018/04/26 17:47:24.516444 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Enable, message=Launch command succeeded: bin/custom-sc

I föregående utdata:

  • Enable är när kommandot börjar köras.
  • Download relaterar till nedladdningen av paketet för anpassat skripttillägg från Azure, inte skriptfilerna som anges i fileUris.

Azure Script Extension skapar en logg som du hittar här:

sudo cat /var/log/azure/custom-script/handler.log

Leta efter den enskilda körningen. Det ser ut ungefär så här:

time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=start
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=pre-check
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="comparing seqnum" path=mrseq
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="seqnum saved" path=mrseq
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="reading configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="read configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validating json schema"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="json schema valid"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="parsing configuration json"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="parsed configuration json"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validating configuration logically"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validated configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="creating output directory" path=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="created output directory"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 files=1
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 file=0 event="download start"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 file=0 event="download complete" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executing command" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executing protected commandToExecute" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executed command" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=enabled
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=end

Här kan du se:

  • Kommandot enable som startar den här loggen.
  • Inställningarna som skickas till tillägget.
  • Tillägget som laddar ned filen och resultatet av den åtgärden.
  • Kommandot som körs och resultatet.

Du kan också hämta körningstillståndet för tillägget för anpassat skript, inklusive de faktiska argument som skickas som commandToExecute, med hjälp av Azure CLI:

az vm extension list -g myResourceGroup --vm-name myVM

Utdata ser ut som följande text:

[
  {
    "autoUpgradeMinorVersion": true,
    "forceUpdateTag": null,
    "id": "/subscriptions/subscriptionid/resourceGroups/rgname/providers/Microsoft.Compute/virtualMachines/vmname/extensions/customscript",
    "resourceGroup": "rgname",
    "settings": {
      "commandToExecute": "sh script.sh > ",
      "fileUris": [
        "https://catalogartifact.azureedge.net/publicartifacts/scripts/script.sh",
        "https://catalogartifact.azureedge.net/publicartifacts/scripts/script.sh"
      ]
    },
    "tags": null,
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "typeHandlerVersion": "2.0",
    "virtualMachineExtensionType": "CustomScript"
  },
  {
    "autoUpgradeMinorVersion": true,
    "forceUpdateTag": null,
    "id": "/subscriptions/subscriptionid/resourceGroups/rgname/providers/Microsoft.Compute/virtualMachines/vmname/extensions/OmsAgentForLinux",
    "instanceView": null,
    "location": "eastus",
    "name": "OmsAgentForLinux",
    "protectedSettings": null,
    "provisioningState": "Succeeded",
    "publisher": "Microsoft.EnterpriseCloud.Monitoring",
    "resourceGroup": "rgname",
    "settings": {
      "workspaceId": "workspaceid"
    },
    "tags": null,
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "typeHandlerVersion": "1.0",
    "virtualMachineExtensionType": "OmsAgentForLinux"
  }
]

Problem med Azure CLI-syntax

Azure CLI kan köras i flera gränssnittsmiljöer, men med små formatvariationer. Om du har oväntade resultat med Azure CLI-kommandon kan du läsa Så här använder du Azure CLI.

Nästa steg

Mer information om koden, aktuella problem och versioner finns i custom-script-extension-linux.