Použití rozšíření vlastních skriptů Azure verze 2 s linuxovými virtuálními počítači
Rozšíření vlastních skriptů verze 2 stáhne a spustí skripty na virtuálních počítačích Azure. Toto rozšíření použijte pro konfiguraci po nasazení, instalaci softwaru nebo jakoukoli jinou úlohu konfigurace nebo správy. Skripty si můžete stáhnout ze služby Azure Storage nebo jiného přístupného internetového umístění nebo je můžete poskytnout modulu runtime rozšíření.
Rozšíření vlastních skriptů se integruje se šablonami Azure Resource Manageru. Můžete ho také spustit pomocí Azure CLI, Azure PowerShellu nebo rozhraní REST API služby Azure Virtual Machines.
Tento článek popisuje, jak používat rozšíření vlastních skriptů z Azure CLI a jak rozšíření spustit pomocí šablony Azure Resource Manageru. Tento článek obsahuje také postup řešení potíží pro systémy Linux.
Existují dvě verze rozšíření vlastních skriptů:
- Verze 1: Microsoft.OSTCExtensions.CustomScriptForLinux
- Verze 2: Microsoft.Azure.Extensions.CustomScript
Použijte verzi 2 pro nová a existující nasazení. Nová verze je nahrazením. Migrace je stejně snadná jako změna názvu a verze. Konfiguraci rozšíření nemusíte měnit.
Požadavky
Podporované linuxové distribuce
Distribuce | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | 9.x+ |
Debian | 10+ | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | Nepodporuje se |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Nepodporuje se |
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+ |
Umístění skriptu
Rozšíření můžete nastavit tak, aby používalo vaše přihlašovací údaje do služby Azure Blob Storage, a tak mělo přístup ke službě Azure Blob Storage. Skript může být umístěn kdekoli, pokud může virtuální počítač k tomuto koncovému bodu směrovat, například GitHub nebo interní souborový server.
Připojení k internetu
Chcete-li skript stáhnout zvenčí, například ze služby GitHub nebo Azure Storage, musíte otevřít další porty brány firewall nebo skupiny zabezpečení sítě (NSG). Pokud je váš skript například umístěn na úložišti Azure Storage, můžete povolit přístup pomocí značek služeb Azure NSG pro úložiště.
Pokud je váš skript na místním serveru, možná budete muset otevřít další porty brány firewall nebo NSG.
Tipy
- K selhání tohoto rozšíření nejčastěji dochází kvůli chybám syntaxe ve skriptu. Ověřte, že skript běží bez chyb. Vložte do skriptu více protokolování, aby bylo snazší najít chyby.
- Pište skripty, které jsou idempotentní, aby jejich náhodné spuštění více než jednou nezpůsobilo systémové změny.
- Ujistěte se, že skripty při svém spuštění nevyžadují vstup uživatele.
- Skript má povoleno běžet 90 minut. Cokoli delšího má za následek neúspěšné nasazení rozšíření.
- Nepoužívejte ve skriptu restartování. Restartování způsobuje problémy s dalšími instalovanými rozšířeními a rozšíření po restartu nepokračuje.
- Pokud máte skript, který způsobí restart před instalací aplikací a spuštěním skriptů, naplánujte restart pomocí úlohy cron nebo pomocí nástrojů, jako jsou rozšíření DSC, Chef nebo Puppet.
- Nespouštějte skript, který způsobí zastavení nebo aktualizaci agenta Azure pro Linux. Rozšíření by tak mohlo zůstat ve stavu přechodu a vést k vypršení časového limitu.
- Rozšíření spustí skript pouze jednou. Pokud chcete spustit skript při každém spuštění, můžete použít obraz cloud-init a použít modul Scripts Per Boot. Případně můžete skript použít k vytvoření servisní jednotky systemd.
- Na virtuálním počítači můžete použít pouze jednu verzi rozšíření. Chcete-li spustit druhý vlastní skript, aktualizujte stávající rozšíření pomocí nové konfigurace. Případně můžete rozšíření Custom Script Extension odebrat a znovu ho použít s aktualizovaným skriptem.
- Pokud chcete naplánovat spuštění skriptu, použijte rozšíření k vytvoření úlohy cron.
- Pokud skript běží, vidíte pouze stav přechodu rozšíření z portálu Azure nebo CLI. Pokud chcete častější aktualizace stavu spuštěného skriptu, vytvořte si vlastní řešení.
- Rozšíření Custom Script Extension nativně nepodporuje proxy servery. Můžete však použít nástroj pro přenos souborů, například
Curl
, který podporuje proxy servery ve vašem skriptu. - Pamatujte na nevýchozí umístění adresářů, na která mohou vaše skripty nebo příkazy odkazovat. Zajistěte logiku pro řešení takové situace.
Schéma rozšíření
Konfigurace rozšíření vlastních skriptů určuje například umístění skriptu a příkaz, který se má spustit. Tyto informace můžete uložit do konfiguračních souborů, zadat je na příkazovém řádku nebo je zadat v šabloně Azure Resource Manageru.
Citlivá data můžete ukládat v chráněné konfiguraci, která se šifruje a dešifruje jenom na cílovém virtuálním počítači. Chráněná konfigurace je užitečná, když spouštěcí příkaz obsahuje tajné kódy, jako je heslo. Tady je příklad:
{
"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>"
}
}
}
Poznámka:
Vlastnost managedIdentity
nesmí být použita ve spojení s storageAccountName
vlastností nebo storageAccountKey
vlastností.
Hodnoty vlastností
Název | Hodnota nebo příklad | Datový typ |
---|---|---|
apiVersion | 2019-03-01 |
datum |
vydavatel | Microsoft.Azure.Extensions |
string |
type | CustomScript |
string |
typeHandlerVersion | 2.1 |
int |
identifikátory fileUris | https://github.com/MyProject/Archive/MyPythonScript.py |
pole |
commandToExecute | python MyPythonScript.py \<my-param1> |
string |
. | IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo= |
string |
skipDos2Unix | false |
boolean |
časové razítko | 123456789 |
32bitové celé číslo |
storageAccountName | examplestorageacct |
string |
storageAccountKey | TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== |
string |
managedIdentity | { } nebo { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" } { "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" } |
Objekt JSON |
Podrobnosti o hodnotě vlastnosti
Vlastnost | Volitelné nebo povinné | Detaily |
---|---|---|
apiVersion | Nelze použít | Nejnovější verzi rozhraní API najdete pomocí Průzkumníka prostředků nebo pomocí příkazu az provider list -o json v Azure CLI. |
identifikátory fileUris | Volitelné | Adresy URL souborů, které se mají stáhnout. |
commandToExecute | Vyžaduje se, pokud script není nastavená. |
Skript vstupního bodu, který se má spustit. Tuto vlastnost použijte místo script toho, pokud váš příkaz obsahuje tajné kódy, jako jsou hesla. |
. | Vyžaduje se, pokud commandToExecute není nastavená. |
Kódování Base64 a volitelně gzip'ed skript spuštěný /bin/sh . |
skipDos2Unix | Volitelné | Tuto hodnotu nastavte, false pokud chcete přeskočit dos2unix převod adres URL souborů nebo skriptů založených na skriptech. |
časové razítko | Volitelné | Tuto hodnotu změňte pouze tak, aby se aktivovalo opětovné spuštění skriptu. Jakákoli celočíselná hodnota je přijatelná, pokud se liší od předchozí hodnoty. |
storageAccountName | Volitelné | Název účtu úložiště. Pokud zadáte přihlašovací údaje úložiště, fileUris všechny hodnoty musí být adresy URL pro objekty blob Azure. |
storageAccountKey | Volitelné | Přístupový klíč účtu úložiště. |
managedIdentity | Volitelné | Spravovaná identita pro stahování souborů. Hodnoty jsou clientId (volitelné, řetězec), což je ID klienta spravované identity a objectId (volitelné, řetězec), což je ID objektu spravované identity. |
Veřejné nastavení se do virtuálního počítače, na kterém běží skript, odesílá ve formátu prostého textu. Chráněná nastavení se šifrují prostřednictvím klíče známého jenom v Azure a virtuálním počítači. Nastavení se uloží na virtuální počítač při jejich odeslání. To znamená, že pokud se nastavení zašifrovalo, uloží se na virtuální počítač zašifrované. Certifikát, který slouží k dešifrování šifrovaných hodnot, je uložený na virtuálním počítači. Certifikát se také používá k dešifrování nastavení v případě potřeby za běhu.
Použití veřejných nastavení může být užitečné pro ladění, ale důrazně doporučujeme používat chráněná nastavení.
Následující hodnoty můžete nastavit buď ve veřejném, nebo chráněném nastavení. Rozšíření odmítne jakoukoli konfiguraci, ve které jsou tyto hodnoty nastavené ve veřejném i chráněném nastavení.
commandToExecute
script
fileUris
Vlastnost: skipDos2Unix
Předchozí verze rozšíření vlastních skriptů , Microsoft.OSTCExtensions.CustomScriptForLinux
automaticky převede soubory DOS na soubory UNIX převodem \r\n
na \n
. Tento překlad stále existuje a je ve výchozím nastavení zapnutý. Tento převod se použije u všech souborů stažených z fileUris
nebo nastavení skriptu na základě některého z následujících kritérií:
- Rozšíření je .sh, .txt, .py nebo .pl. Nastavení skriptu vždy odpovídá tomuto kritériu, protože se předpokládá, že se jedná o spuštění skriptu s parametrem /bin/sh. Nastavení skriptu se uloží jako script.sh na virtuálním počítači.
- Soubor začíná
#!
na .
Výchozí hodnota je false
, což znamená dos2unix převod je proveden. Převod dos2unix můžete přeskočit nastavením skipDos2Unix
na true
:
{
"fileUris": ["<url>"],
"commandToExecute": "<command-to-execute>",
"skipDos2Unix": true
}
Vlastnost: skript
Rozšíření vlastních skriptů podporuje spuštění uživatelem definovaného skriptu. Nastavení skriptu se zkombinuje commandToExecute
do fileUris
jednoho nastavení. Místo toho, abyste museli nastavit soubor ke stažení ze služby Azure Storage nebo gist GitHubu, můžete skript zakódovat jako nastavení. Skript můžete použít k nahrazení commandToExecute
a fileUris
.
Tady jsou některé požadavky:
- Skript musí být kódovaný v base64.
- Skript může být volitelně gzip.
- Nastavení skriptu můžete použít ve veřejném nebo chráněném nastavení.
- Maximální velikost dat parametru skriptu je 256 kB. Pokud skript tuto velikost překročí, nespustí se.
Například následující skript se uloží do souboru /script.sh/:
#!/bin/sh
echo "Creating directories ..."
mkdir /data
chown user:user /data
mkdir /appdata
chown user:user /appdata
Pomocí výstupu následujícího příkazu byste vytvořili správné nastavení skriptu rozšíření vlastních skriptů:
cat script.sh | base64 -w0
{
"script": "IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo="
}
Ve většině případů může být skript volitelně gzipován, aby se zmenšila velikost. Rozšíření vlastních skriptů automaticky rozpozná použití komprese gzip.
cat script | gzip -9 | base64 -w 0
Rozšíření vlastních skriptů používá ke spuštění skriptu následující algoritmus:
- Ověřte, že délka hodnoty skriptu nepřesahuje 256 kB.
- Base64 dekóduje hodnotu skriptu.
- Zkuste zastřelit hodnotu dekódovanou base64.
- Zapište dekódovanou a volitelně dekomprimovanou hodnotu na disk: /var/lib/waagent/custom-script/#/script.sh.
- Spusťte skript pomocí příkazu
_/bin/sh -c /var/lib/waagent/custom-script/#/script.sh
.
Vlastnost: managedIdentity
Poznámka:
Tato vlastnost musí být zadána pouze v chráněných nastaveních.
Rozšíření vlastních skriptů verze 2.1 a novější podporuje spravované identity pro stahování souborů z adres URL uvedených v fileUris
nastavení. Tento přístup umožňuje rozšíření vlastních skriptů přistupovat k privátním objektům blob nebo kontejnerům Azure Storage, aniž by uživatel musel předávat tajné kódy, jako jsou tokeny sdíleného přístupového podpisu (SAS) nebo klíče účtu úložiště.
Pokud chcete tuto funkci použít, přidejte identitu přiřazenou systémem nebo uživatelem přiřazenou k virtuálnímu počítači nebo škálovací sadě virtuálních počítačů, kde se očekává spuštění rozšíření vlastních skriptů. Potom udělte spravované identitě přístup ke kontejneru nebo objektu blob služby Azure Storage.
Pokud chcete použít identitu přiřazenou systémem na cílovém virtuálním počítači nebo ve škálovací sadě virtuálních počítačů, nastavte managedidentity
na prázdný objekt JSON.
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
"commandToExecute": "sh script1.sh",
"managedIdentity" : {}
}
Pokud chcete použít identitu přiřazenou uživatelem na cílovém virtuálním počítači nebo škálovací sadě virtuálních počítačů, nakonfigurujte managedidentity
ID klienta nebo ID objektu spravované identity.
{
"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" }
}
Poznámka:
Vlastnost managedIdentity
nesmí být použita ve spojení s storageAccountName
vlastností nebo storageAccountKey
vlastností.
Nasazení šablon
Rozšíření virtuálních počítačů Azure můžete nasadit pomocí šablon Azure Resource Manageru. Schéma JSON podrobně popsané v předchozí části se dá použít v šabloně Azure Resource Manageru ke spuštění rozšíření vlastních skriptů během nasazení šablony. Ukázkovou šablonu, která obsahuje rozšíření vlastních skriptů, najdete na GitHubu.
{
"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"
]
}
}
}
Poznámka:
V těchto názvech vlastností se rozlišují malá a velká písmena. Pokud se chcete vyhnout problémům s nasazením, použijte názvy, jak je znázorněno tady.
Azure CLI
Pokud ke spuštění rozšíření vlastních skriptů použijete Azure CLI, vytvořte konfigurační soubor nebo soubory. Konfigurační soubor musí obsahovat commandToExecute
minimálně . Příkaz az vm extension set
odkazuje na konfigurační soubor:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM --name customScript \
--publisher Microsoft.Azure.Extensions \
--protected-settings ./script-config.json
Případně můžete zadat nastavení v příkazu jako řetězec ve formátu JSON. Tento přístup umožňuje zadat konfiguraci během provádění a bez samostatného konfiguračního souboru.
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říklad: Veřejná konfigurace se souborem skriptu
Tento příklad používá následující soubor skriptu s názvem 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"
}
Vytvořte soubor skriptu pomocí textového editoru podle vašeho výběru nebo pomocí následujícího příkazu rozhraní příkazového řádku:
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
Spusťte následující příkaz:
az vm extension set \ --resource-group myResourceGroup \ --vm-name myVM --name customScript \ --publisher Microsoft.Azure.Extensions \ --settings ./script-config.json
Příklad: Veřejná konfigurace bez souboru skriptu
V tomto příkladu se používá následující obsah ve formátu JSON:
{
"commandToExecute": "apt-get -y update && apt-get install -y apache2"
}
Spusťte následující příkaz:
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říklad: Veřejné a chráněné konfigurační soubory
Pomocí veřejného konfiguračního souboru zadejte identifikátor URI souboru skriptu:
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"]
}
Pomocí chráněného konfiguračního souboru zadejte příkaz, který se má spustit:
{
"commandToExecute": "./config-music.sh"
}
Vytvořte veřejný konfigurační soubor pomocí textového editoru podle vašeho výběru nebo pomocí následujícího příkazu rozhraní příkazového řádku:
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
Vytvořte chráněný konfigurační soubor pomocí textového editoru podle vašeho výběru nebo pomocí následujícího příkazu rozhraní příkazového řádku:
cat <<EOF > protected-config.json { "commandToExecute": "./config-music.sh" } EOF
Spusťte následující příkaz:
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
Pokud nasadíte rozšíření vlastních skriptů z webu Azure Portal, nemáte kontrolu nad vypršením platnosti tokenu SAS pro přístup ke skriptu ve vašem účtu úložiště. Počáteční nasazení funguje, ale když vyprší platnost tokenu SAS účtu úložiště, všechny následné operace škálování selžou, protože rozšíření vlastních skriptů už nemá přístup k účtu úložiště.
Při nasazování rozšíření vlastních skriptů do škálovací sady virtuálních počítačů doporučujeme použít PowerShell, Azure CLI nebo šablonu Azure Resource Manageru. Tímto způsobem se můžete rozhodnout použít spravovanou identitu nebo mít přímou kontrolu nad vypršením platnosti tokenu SAS pro přístup ke skriptu v účtu úložiště, pokud potřebujete.
Řešení problému
Po spuštění rozšíření vlastních skriptů se skript vytvoří nebo stáhne do adresáře, který je podobný následujícímu příkladu. Výstup příkazu se také uloží do tohoto adresáře a stdout
stderr
do souborů.
sudo ls -l /var/lib/waagent/custom-script/download/0/
Při řešení potíží nejprve zkontrolujte protokol agenta Linuxu a ujistěte se, že se rozšíření spustilo:
sudo cat /var/log/waagent.log
Vyhledejte spuštění rozšíření. Vypadá nějak takto:
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
V předchozím výstupu:
Enable
je při spuštění příkazu.Download
se vztahuje ke stažení balíčku rozšíření vlastních skriptů z Azure, nikoli souborů skriptů zadaných vfileUris
.
Rozšíření skriptů Azure vytvoří protokol, který najdete tady:
sudo cat /var/log/azure/custom-script/handler.log
Vyhledejte jednotlivé spuštění. Vypadá nějak takto:
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
Tady můžete vidět:
- Příkaz
enable
, který spustí tento protokol. - Nastavení předaná rozšíření.
- Přípona stahuje soubor a výsledek této akce.
- Příkaz, který se spouští, a výsledek.
Pomocí Azure CLI můžete také načíst stav spuštění rozšíření vlastních skriptů, včetně skutečných argumentů předaných jako commandToExecute
:
az vm extension list -g myResourceGroup --vm-name myVM
Výstup vypadá jako následující 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"
}
]
Problémy se syntaxí Azure CLI
Azure CLI může běžet v několika prostředích prostředí, ale s mírnými variacemi formátu. Pokud máte neočekávané výsledky s příkazy Azure CLI, přečtěte si, jak úspěšně používat Azure CLI.
Další kroky
Informace o kódu, aktuálních problémech a verzích najdete v souboru custom-script-extension-linux.