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

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. Az Azure CLI, az Azure PowerShell vagy az Azure Virtual Machines REST API használatával is futtathatja.

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ő telepítésekhez. Az új verzió egy cserélhető helyettesítés. 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.

Megjegyzés

Próbálja ki a virtuálisgép-segédet a gyorsabb diagnosztika érdekében. Javasoljuk, hogy futtassa a VM assist for Windows vagy a VM assist for Linux programot. Ezek a szkriptalapú diagnosztikai eszközök segítenek azonosítani az Azure-beli virtuálisgép-vendégügynököt és a virtuális gép általános állapotát érintő gyakori problémákat.

Ha teljesítményproblémák lépnek fel a virtuális gépekkel kapcsolatban, mielőtt kapcsolatba lép az ügyfélszolgálattal, futtassa ezeket az eszközöket.

Előfeltételek

Támogatott Linux-disztribúciók

Kiadó Disztribúció x64 ARM64
Alma Linux-közösség Alma Linux 8.x+, 9.x+ 8.x+, 9.x+
Credativ Debian 10+ 11.x+
Kinvolk Flatcar Linux 3374.2.x+ 3374.2.x+
Microsoft Azure Linux 2.x 2.x
openSUSE Project openSUSE 12.3+ Nem támogatott
Oracle Oracle Linux 6.4+, 7.x+, 8.x+ Nem támogatott
Piros kalap Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ 8.6+, 9.0+, 10.x+
CIQ Sziklás Linux 9.x+ 9.x+
SUSE SLES 12.x+, 15.x+ 15.x SP4+
Canonical Ubuntu (LTS-kiadások) 18.04+, 20.04+, 22.04+, 24.04+ 20.04+, 22.04+, 24.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 idempotens szkripteket, hogy a véletlen többszöri futtatásuk se okozzon változásokat a rendszerben.
  • 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.
  • Ne helyezzen újraindításokat a szkriptbe. 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 helyzetben marad, és időtúllépést okozhat.
  • 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. Íme egy 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>"
    }
  }
}

Megjegyzé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
kiadó Microsoft.Azure.Extensions karakterlánc
típus CustomScript karakterlánc
típuskezelőVerzió 2.1 Int
fileUris https://github.com/MyProject/Archive/MyPythonScript.py tömb
commandToExecute python MyPythonScript.py \<my-param1> karakterlánc
parancsfájl IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo= karakterlánc
skipDos2Unix false Boolean
timestamp 123456789 32 bites egész szám
tárfiókNeve examplestorageacct karakterlánc
tárolóFiókKulcs TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== karakterlánc
managedIdentity { }, { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444" } vagy { "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } JSON-objektum

Tulajdonságérték részletei

Ingatlan Opcionális 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 Opcionális A letöltendő fájlok URL-címei.
commandToExecute Kötelező, ha script nincs beállítva A belépési pont szkriptje, amelyet futtatni kell. Használja ezt a tulajdonságot script helyett, ha a parancs titkos adatokat, például jelszavakat tartalmaz.
parancsfájl Kötelező, ha commandToExecute nincs beállítva Base64 kódolású és opcionálisan gzip által futtatott /bin/shszkript.
skipDos2Unix Opcionális Állítsa be ezt az értéket false-re, ha ki szeretné hagyni a szkriptalapú fájl URL-címeinek vagy szkriptjeinek dos2unix-konvertálását.
timestamp Opcionális 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.
tárfiókNeve Opcionális 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.
tárolóFiókKulcs Opcionális A tárfiók hozzáférési kulcsa.
managedIdentity Opcionális A fájlok letöltéséhez használt felügyelt identitás . Az értékek clientId (nem kötelező, sztring), a felügyelt identitás ügyfélazonosítója, és objectId (nem kötelező, sztring), 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.CustomScriptForLinux előző verziója automatikusan UNIX-fájlokká alakítja a DOS-fájlokat úgy, hogy a \r\n-t \n-vé alakítja. 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 false, ami azt jelenti, hogy a dos2unix konverzió végre van hajtva. 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 helyettesítheti a commandToExecute és fileUris címkéket.

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

  • A szkriptnek Base64 kódolásúnak kell lennie.
  • A szkript opcionálisan tömörítve lehet gzip-pel.
  • 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 kitömöríteni 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 _/bin/sh -c /var/lib/waagent/custom-script/#/script.sh használatával.

Tulajdonság: managedIdentity

Megjegyzé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ális gép-méretezési csoportban a rendszer által hozzárendelt identitást szeretné használni, managedidentity értékét állítsa be egy üres JSON-objektumra.

{
  "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ális gép méretezési készletben, 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": "00001111-aaaa-2222-bbbb-3333cccc4444" }
}
{
  "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
  "commandToExecute": "sh script1.sh",
  "managedIdentity" : { "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }
}

Megjegyzés

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

Template deployment

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

Megjegyzés

A tulajdonságnevek kis- és nagybetűérzékenyek. Az üzembe helyezési problémák elkerülése érdekében használja az itt látható neveket.

Azure parancssori felület (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 a következő 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 a következő 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 a következő 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 is mentve van, a stdout és a stderr fájlokban.

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