Az Azure Custom Script Extension 2. verziójának használata Linux rendszerű virtuális gépekkel

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Fontolja meg a használatát, és ennek megfelelően tervezze meg. További információ: CentOS End Of Life útmutató.

Az Egyéni szkriptbővítmény 2. verziója letölti és futtatja a szkripteket az Azure-beli virtuális gépeken. Ezt a bővítményt az üzembe helyezés utáni konfigurációhoz, a szoftvertelepítéshez vagy bármely más konfigurációs vagy felügyeleti feladathoz használhatja. Letöltheti a szkripteket az Azure Storage-ból vagy más elérhető internetes helyről, vagy megadhatja őket a bővítmény futtatókörnyezetének.

Az egyéni szkriptbővítmény integrálható az Azure Resource Manager-sablonokkal. Futtathatja az Azure CLI, az Azure PowerShell vagy az Azure Virtual Machines REST API használatával is.

Ez a cikk bemutatja, hogyan használhatja az Egyéni szkriptbővítményt az Azure CLI-ből, és hogyan futtathatja a bővítményt egy Azure Resource Manager-sablonnal. Ez a cikk a Linux-rendszerek hibaelhárítási lépéseit is ismerteti.

Az egyéni szkriptbővítménynek két verziója van:

  • 1. verzió: Microsoft.OSTCExtensions.CustomScriptForLinux
  • 2. verzió: Microsoft.Azure.Extensions.CustomScript

Használja a 2- es verziót új és meglévő üzemelő példányokhoz. Az új verzió egy legördülő lista. A migrálás ugyanolyan egyszerű, mint a név és a verzió módosítása. Nem kell módosítania a bővítménykonfigurációt.

Előfeltételek

Támogatott Linux-disztribúciók

Disztribúció 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+ Nem támogatott
Oracle Linux 6.4+, 7.x+, 8.x+ Nem támogatott
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+, 9.x+ 8,6+, 9,x+
Sziklás Linux 9.x+ 9.x+
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Szkript helye

Beállíthatja, hogy a bővítmény az Azure Blob Storage hitelesítő adatait használja, hogy hozzáférhessen az Azure Blob Storage-hoz. A szkript helye bárhol lehet, amíg a virtuális gép erre a végpontra tud irányítani, például a GitHubra vagy egy belső fájlkiszolgálóra.

Internetkapcsolat

Ha külsőleg szeretne letölteni egy szkriptet, például a GitHubról vagy az Azure Storage-ból, meg kell nyitnia más tűzfal- vagy hálózati biztonsági csoport (NSG) portokat. Ha például a szkript az Azure Storage-ban található, engedélyezheti a hozzáférést a Storage Azure NSG-szolgáltatáscímkék használatával.

Ha a szkript helyi kiszolgálón található, előfordulhat, hogy más tűzfal- vagy NSG-portokat is meg kell nyitnia.

Tippek

  • A bővítmény meghibásodásai legnagyobb arányban a szkriptben található szintaktikai hibák miatt jelentkeznek. Ellenőrizze, hogy a szkript hiba nélkül fut-e. A hibák keresésének megkönnyítése érdekében további naplózást végezhet a szkriptbe.
  • Írjon olyan szkripteket, amelyek nem okoznak változásokat a rendszerben, hogy többszöri futtatásuk véletlenül se okozzon rendszerváltozást.
  • Gondoskodjon arról, hogy a szkriptek futtatásához ne legyen szükség felhasználói beavatkozásra.
  • A szkript 90 percig futhat. Ha egy szkript ennél tovább fut, az a bővítmény üzembe helyezésének a meghiúsulását eredményezi.
  • A szkript ne váltson ki újraindításokat. Az újraindítás művelet problémákat okoz más telepített bővítményekkel kapcsolatban, és a bővítmény nem folytatódik az újraindítás után.
  • Ha egy szkript újraindítást vált ki az alkalmazások telepítése és a szkriptek futtatása előtt, ütemezze az újraindítást egy cron-feladattal, vagy olyan eszközökkel, mint a DSC, a Chef vagy a Puppet bővítmény.
  • Ne futtasson olyan szkriptet, amely az Azure Linux-ügynök leállítását vagy frissítését okozza. Előfordulhat, hogy a bővítmény átmeneti állapotban marad, és időtúllépéshez vezet.
  • A bővítmény egy szkriptet csak egyszer futtat. Ha minden indításkor szkriptet szeretne futtatni, használhat egy cloud-init rendszerképet, és használhatja a Rendszerindítónkénti szkriptek modult. Másik lehetőségként a szkripttel létrehozhat egy rendszerezett szolgáltatási egységet.
  • A bővítmények csak egy verzióját alkalmazhatja a virtuális gépre. Egy második egyéni szkript futtatásához frissítheti a meglévő bővítményt egy új konfigurációval. Másik lehetőségként eltávolíthatja az egyéni szkriptbővítményt, és újra alkalmazhatja a frissített szkripttel.
  • Ha ütemezni szeretné, hogy mikor fusson egy szkript, hozzon létre egy cron-feladatot a bővítménnyel.
  • Amikor a szkript fut, az Azure Portalon vagy a CLI-n a bővítmény átmeneti állapotát fogja látni. Ha gyakoribb állapotfrissítést szeretne egy futó szkripthez, hozza létre a saját megoldását.
  • Az egyéni szkriptek futtatására szolgáló bővítmény nem biztosít natív támogatást a proxykiszolgálókhoz. Használhat azonban olyan fájlátviteli eszközt, például Curl, amely támogatja a proxykiszolgálókat a szkriptben.
  • Vegye figyelembe, hogy vannak olyan nem alapértelmezett könyvtárhelyek, amelyekre a szkriptjei és a parancsai támaszkodhatnak. Alakítsa ki a helyzet kezeléséhez szükséges logikát.

Bővítményséma

Az egyéni szkriptbővítmény konfigurációja olyan dolgokat határoz meg, mint a szkript helye és a futtatandó parancs. Ezeket az információkat konfigurációs fájlokban tárolhatja, megadhatja a parancssorban, vagy megadhatja egy Azure Resource Manager-sablonban.

Bizalmas adatokat védett konfigurációban tárolhat, amely titkosítva van, és csak a cél virtuális gépen van visszafejtve. A védett konfiguráció akkor hasznos, ha a végrehajtási parancs titkos kulcsokat, például jelszót tartalmaz. Példa:

{
  "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>"
    }
  }
}

Feljegyzés

A managedIdentity tulajdonság nem használható a storageAccountNamestorageAccountKey tulajdonsággal együtt.

Tulajdonságértékek

Név Érték vagy példa Adattípus
apiVersion 2019-03-01 dátum:
Publisher Microsoft.Azure.Extensions húr
típus CustomScript húr
typeHandlerVersion 2.1 egész
fileUris https://github.com/MyProject/Archive/MyPythonScript.py array
commandToExecute python MyPythonScript.py \<my-param1> húr
szkriptet. IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo= húr
skipDos2Unix false Logikai
időbélyeg 123456789 32 bites egész szám
storageAccountName examplestorageacct húr
storageAccountKey TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== húr
managedIdentity { }vagy { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" }{ "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" } JSON-objektum

Tulajdonságérték részletei

Tulajdonság Nem kötelező vagy kötelező Részletek
apiVersion Nem alkalmazható A legfrissebb API-verziót a Resource Explorer vagy az Azure CLI parancsával az provider list -o json találja meg.
fileUris Választható A letöltendő fájlok URL-címei.
commandToExecute Kötelező, ha script nincs beállítva A futtatandó belépési pont szkriptje. Használja ezt a tulajdonságot ahelyett script , hogy a parancs titkos kódokat, például jelszavakat tartalmaz.
szkriptet. Kötelező, ha commandToExecute nincs beállítva Base64 kódolású és opcionálisan gzip által futtatott /bin/shszkript.
skipDos2Unix Választható Állítsa ezt az értéket arra az false esetre, ha kihagyja a szkriptalapú fájl URL-címeinek vagy szkriptjeinek dos2unix-konvertálását.
időbélyeg Választható Ezt az értéket csak úgy módosíthatja, hogy elindítsa a szkript újrafuttatását. Minden egész szám elfogadható, ha eltér az előző értéktől.
storageAccountName Választható A tárfiók neve. Ha tárolási hitelesítő adatokat ad meg, az összes fileUris értéknek URL-címnek kell lennie az Azure-blobokhoz.
storageAccountKey Választható A tárfiók hozzáférési kulcsa.
managedIdentity Választható A fájlok letöltéséhez használt felügyelt identitás . clientId Az értékek (nem kötelező, sztring), amely a felügyelt identitás ügyfélazonosítója, és objectId (nem kötelező, sztring), amely a felügyelt identitás objektumazonosítója.

A nyilvános beállításokat a rendszer világos szövegben küldi el annak a virtuális gépnek, ahol a szkript fut. A védett beállítások titkosítva vannak egy olyan kulccsal, amely csak az Azure és a virtuális gép számára ismert. A rendszer az elküldött beállításokat a virtuális gépre menti. Vagyis ha a beállítások titkosítva lettek, a rendszer titkosítva menti őket a virtuális gépen. A titkosított értékek visszafejtéséhez használt tanúsítvány a virtuális gépen van tárolva. A tanúsítvány a beállítások futásidőben történő visszafejtésére is használható, ha szükséges.

A nyilvános beállítások használata hasznos lehet a hibakereséshez, de határozottan javasoljuk, hogy használjon védett beállításokat.

A következő értékeket nyilvános vagy védett beállításokban állíthatja be. A bővítmény elutasít minden olyan konfigurációt, amelyben ezek az értékek nyilvános és védett beállításokban is be vannak állítva.

  • commandToExecute
  • script
  • fileUris

Tulajdonság: skipDos2Unix

Az egyéni szkriptbővítmény Microsoft.OSTCExtensions.CustomScriptForLinuxelőző verziója automatikusan UNIX-fájlokká alakítja a DOS-fájlokat \r\n\n. Ez a fordítás továbbra is létezik, és alapértelmezés szerint be van kapcsolva. Ez az átalakítás az összes letöltött fileUris fájlra vagy a szkriptbeállításra vonatkozik az alábbi feltételek valamelyike alapján:

  • A bővítmény .sh, .txt, .py vagy .pl. A szkriptbeállítás mindig megfelel ennek a feltételnek, mert feltételezzük, hogy egy /bin/sh parancsprogrammal futtatott szkript. A szkriptbeállítás script.sh ként lesz mentve a virtuális gépen.
  • A fájl a következővel #!kezdődik: .

Az alapértelmezett érték a falsedos2unix konverzió végrehajtása. A dos2unix konvertálást kihagyhatja a következő beállítással skipDos2Unixtrue:

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

Tulajdonság: szkript

Az egyéni szkriptbővítmény támogatja a felhasználó által definiált szkriptek végrehajtását. A szkriptbeállítások egyetlen beállításba egyesíthetők commandToExecutefileUris . Ahelyett, hogy egy fájlt kellene beállítania az Azure Storage-ból vagy egy GitHub-gistből való letöltéshez, a szkriptet beállításként kódolhatja. A szkripttel lecserélheti és fileUrislecserélheti commandToExecute a parancsprogramot.

Íme néhány követelmény:

  • A szkriptnek Base64 kódolásúnak kell lennie.
  • A szkript opcionálisan gzip'ed lehet.
  • A szkriptbeállítást nyilvános vagy védett beállításokban is használhatja.
  • A szkriptparaméter adatainak maximális mérete 256 KB. Ha a szkript túllépi ezt a méretet, nem fut.

A rendszer például a következő szkriptet menti a /script.sh/ fájlba:

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

A megfelelő Egyéni szkriptbővítmény szkriptbeállítást az alábbi parancs kimenetének használatával hozhatja létre:

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

A legtöbb esetben a szkript igény szerint gzip-ként is használható a méret további csökkentése érdekében. Az egyéni szkriptbővítmény automatikusan észleli a gzip-tömörítés használatát.

cat script | gzip -9 | base64 -w 0

Az egyéni szkriptbővítmény a következő algoritmust használja egy szkript futtatásához:

  1. Adja meg, hogy a szkript értékének hossza nem haladja meg a 256 KB-ot.
  2. A Base64 dekódolja a szkript értékét.
  3. Próbálja meg belőni a Base64-dekódolt értéket.
  4. Írja a dekódolt és opcionálisan tömörített értéket a lemezre: /var/lib/waagent/custom-script/#/script.sh.
  5. Futtassa a szkriptet a következő használatával _/bin/sh -c /var/lib/waagent/custom-script/#/script.sh: .

Tulajdonság: managedIdentity

Feljegyzés

Ezt a tulajdonságot csak védett beállításokban kell megadni.

A 2.1-es és újabb verziójú egyéni szkriptbővítmény támogatja a felügyelt identitásokat a fájloknak a fileUris beállításban megadott URL-címekről való letöltéséhez. Ez a módszer lehetővé teszi, hogy az egyéni szkriptbővítmény hozzáférjen az Azure Storage privát blobjaihoz vagy tárolóihoz anélkül, hogy a felhasználónak titkos kulcsokat, például közös hozzáférésű jogosultságkódokat vagy tárfiókkulcsokat kellene átadnia.

A funkció használatához adjon hozzá egy rendszer által hozzárendelt vagy felhasználó által hozzárendelt identitást ahhoz a virtuális géphez vagy virtuálisgép-méretezési csoporthoz, ahol az egyéni szkriptbővítmény várhatóan fut. Ezután adjon hozzáférést a felügyelt identitásnak az Azure Storage-tárolóhoz vagy -blobhoz.

Ha a cél virtuális gépen vagy virtuálisgép-méretezési csoportban a rendszer által hozzárendelt identitást szeretné használni, állítson be managedidentity egy üres JSON-objektumot.

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

Ha a felhasználó által hozzárendelt identitást szeretné használni a cél virtuális gépen vagy virtuálisgép-méretezési csoportban, konfigurálja managedidentity a felügyelt identitás ügyfél-azonosítójával vagy objektumazonosítójával.

{
  "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" }
}

Feljegyzés

A managedIdentity tulajdonság nem használható a storageAccountNamestorageAccountKey tulajdonsággal együtt.

Sablonalapú telepítés

Azure-beli virtuálisgép-bővítményeket Azure Resource Manager-sablonokkal helyezhet üzembe. Az előző szakaszban részletezett JSON-séma egy Azure Resource Manager-sablonban használható az egyéni szkriptbővítmény futtatásához a sablon üzembe helyezése során. A GitHubon található egyéni szkriptbővítményt tartalmazó mintasablon.

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

Feljegyzés

Ezek a tulajdonságnevek megkülönböztetik a kis- és nagybetűket. Az üzembe helyezési problémák elkerülése érdekében használja az itt látható neveket.

Azure CLI

Ha az Azure CLI használatával futtatja az egyéni szkriptbővítményt, hozzon létre egy konfigurációs fájlt vagy fájlokat. Legalább a konfigurációs fájlnak tartalmaznia kell.commandToExecute A az vm extension set parancs a konfigurációs fájlra hivatkozik:

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

A parancs beállításait JSON-formátumú sztringként is megadhatja. Ez a módszer lehetővé teszi a konfiguráció megadását a végrehajtás során, külön konfigurációs fájl nélkül.

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"}'

Példa: Nyilvános konfiguráció szkriptfájllal

Ez a példa a következő script-config.json nevű szkriptfájlt használja:

{
  "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],
  "commandToExecute": "./config-music.sh"
}
  1. Hozza létre a szkriptfájlt a választott szövegszerkesztővel vagy a következő CLI-paranccsal:

    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. Futtassa az alábbi parancsot:

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

Példa: Nyilvános konfiguráció szkriptfájl nélkül

Ez a példa a következő JSON-formátumú tartalmat használja:

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

Futtassa az alábbi parancsot:

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"}'

Példa: Nyilvános és védett konfigurációs fájlok

Nyilvános konfigurációs fájl használatával adja meg a szkriptfájl URI-ját:

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

A futtatandó parancs megadásához használjon védett konfigurációs fájlt:

{
  "commandToExecute": "./config-music.sh"
}
  1. Hozza létre a nyilvános konfigurációs fájlt a választott szövegszerkesztővel vagy a következő CLI-paranccsal:

    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. Hozza létre a védett konfigurációs fájlt a választott szövegszerkesztővel vagy a következő CLI-paranccsal:

    cat <<EOF > protected-config.json
    {
      "commandToExecute": "./config-music.sh"
    }
    EOF
    
  3. Futtassa az alábbi parancsot:

    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

Ha az Egyéni szkriptbővítményt az Azure Portalon helyezi üzembe, nem tudja szabályozni az SAS-jogkivonat lejáratát a tárfiókban lévő szkript eléréséhez. A kezdeti üzembe helyezés működik, de amikor a tárfiók SAS-jogkivonata lejár, minden további skálázási művelet meghiúsul, mert az egyéni szkriptbővítmény már nem fér hozzá a tárfiókhoz.

Javasoljuk, hogy a PowerShellt, az Azure CLI-t vagy egy Azure Resource Manager-sablonthasználjon az egyéni szkriptbővítmény virtuálisgép-méretezési csoporton való üzembe helyezésekor. Így dönthet úgy, hogy felügyelt identitást használ, vagy a tárfiókban lévő szkript eléréséhez közvetlenül szabályozhatja az SAS-jogkivonat lejáratát, amíg szüksége van rá.

Hibaelhárítás

Az egyéni szkriptbővítmény futtatásakor a szkript az alábbi példához hasonló könyvtárba jön létre vagy tölthető le. A parancs kimenete ebbe a könyvtárba és stderr fájlokba stdout is mentve lesz.

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

A hibaelhárításhoz először ellenőrizze a Linux-ügynök naplóját, és győződjön meg arról, hogy a bővítmény futott:

sudo cat /var/log/waagent.log

Keresse meg a bővítmény végrehajtását. A következőképpen néz ki:

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

Az előző kimenetben:

  • Enable ekkor indul el a parancs.
  • Download Az egyéni szkriptbővítménycsomag Azure-ból való letöltéséhez kapcsolódik, nem a megadott fileUrisszkriptfájlokhoz.

Az Azure Script Extension létrehoz egy naplót, amelyet itt talál:

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

Keresse meg az egyéni végrehajtást. A következőképpen néz ki:

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

Itt látható:

  • A enable naplót elindító parancs.
  • A bővítménynek átadott beállítások.
  • A fájlt letöltő bővítmény és a művelet eredménye.
  • A futtatott parancs és az eredmény.

Az Egyéni szkriptbővítmény végrehajtási állapotát is lekérheti, beleértve az átadott commandToExecutetényleges argumentumokat is az Azure CLI használatával:

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

A kimenet a következő szöveghez hasonlóan néz ki:

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

Az Azure CLI szintaxissal kapcsolatos problémái

Az Azure CLI több rendszerhéj-környezetben is futtatható, de kisebb formátumváltozatokkal. Ha az Azure CLI-parancsokkal nem várt eredményeket kap, olvassa el az Azure CLI sikeres használatát ismertető témakört.

Következő lépések

A kód, az aktuális problémák és a verziók megtekintéséhez tekintse meg a custom-script-extension-linux című témakört.