Linux sanal makineleriyle Azure Özel Betik Uzantısı Sürüm 2’yi kullanma
Özel Betik Uzantısı Sürüm 2, Azure sanal makinelerinde (VM) betikleri indirir ve çalıştırır. Bu uzantı dağıtım sonrası yapılandırma, yazılım yüklemesi veya diğer yapılandırma ya da yönetim görevleri için kullanışlıdır. Betikleri Azure Depolama'dan veya başka bir erişilebilir İnternet konumundan indirebilir veya uzantı çalışma zamanına sağlayabilirsiniz.
Özel Betik Uzantısı, Azure Resource Manager şablonlarıyla tümleşir. Azure CLI, PowerShell veya Azure Sanal Makineler REST API'sini kullanarak da çalıştırabilirsiniz.
Bu makalede, Azure CLI'dan Özel Betik Uzantısı'nın nasıl kullanılacağı ve azure Resource Manager şablonu kullanılarak uzantının nasıl çalıştırılacakları açıklanır. Bu makalede, Linux sistemleri için sorun giderme adımları da sağlanır.
İki Linux Özel Betik Uzantısı vardır:
- Sürüm 1: Microsoft.OSTCExtensions.CustomScriptForLinux
- Sürüm 2: Microsoft.Azure.Extensions.CustomScript
Lütfen sürüm 2'yi kullanmak için yeni ve mevcut dağıtımları değiştirin. Yeni sürüm bir açılan sürümdür. Geçiş, adı ve sürümü değiştirmek kadar kolaydır. Uzantı yapılandırmanızı değiştirmeniz gerekmez.
Önkoşullar
İşletim sistemi
Linux için Özel Betik Uzantısı desteklenen işletim sistemlerinde çalışır. Daha fazla bilgi için bkz . Azure'da desteklenen Linux dağıtımları.
Betik konumu
Uzantıyı Azure Blob Depolama erişebilmesi için Azure Blob Depolama kimlik bilgilerinizi kullanacak şekilde ayarlayabilirsiniz. VM bu uç noktaya (örneğin GitHub veya bir iç dosya sunucusu) yönlendirebildiği sürece betik konumu her yerde olabilir.
İnternet bağlantısı
GitHub veya Azure Depolama gibi bir betiği harici olarak indirmeniz gerekiyorsa ek güvenlik duvarı veya ağ güvenlik grubu (NSG) bağlantı noktaları açmanız gerekir. Örneğin, betiğiniz Azure Depolama'da bulunuyorsa Depolama için Azure NSG hizmet etiketlerini kullanarak erişime izin vekleyebilirsiniz.
Betiğiniz yerel bir sunucudaysa, yine de ek güvenlik duvarı veya NSG bağlantı noktaları açmanız gerekebilir.
İpuçları ve püf noktaları
- Bu uzantı için en yüksek hata oranı betikteki söz dizimi hatalarından kaynaklanır. Betiğin hatasız çalıştırıldığını test edin. Hataları bulmayı kolaylaştırmak için betikte ek günlük kaydı ekleyin.
- Bir kez etkili olan betikler yazma, bu nedenle bunları yanlışlıkla birden çok kez çalıştırmak sistem değişikliklerine neden olmaz.
- Betiklerin çalıştırıldığında kullanıcı girişi gerektirmediğinden emin olun.
- Betiğin çalıştırılmasına 90 dakika izin verilir. Daha uzun olan betikler uzantının sağlanamamasına neden olur.
- Betiğin içine yeniden başlatmalar yerleştirmeyin. Bu eylem, yüklenmekte olan diğer uzantılarla ilgili sorunlara neden olur ve yeniden başlatmadan sonra uzantı devam etmez.
- Uygulamaları yüklemeden ve betikleri çalıştırmadan önce yeniden başlatmaya neden olacak bir betiğiniz varsa, cron işi kullanarak veya DSC, Chef veya Puppet uzantıları gibi araçları kullanarak yeniden başlatmayı zamanlayın.
- VM aracısının durdurulmasına veya güncelleştirilmasına neden olacak bir betik çalıştırmayın. Uzantıyı geçiş durumunda bırakabilir ve zaman aşımına yol açabilir.
- Uzantı bir betiği yalnızca bir kez çalıştırır. Her başlangıçta bir betik çalıştırmak istiyorsanız, cloud-init görüntüsünü ve Önyükleme Başına Betikler modülünü kullanabilirsiniz. Alternatif olarak, betiği kullanarak sistemli bir hizmet birimi oluşturabilirsiniz.
- Vm'ye uzantının yalnızca bir sürümünü uygulayabilirsiniz. İkinci bir özel betik çalıştırmak için mevcut uzantıyı yeni bir yapılandırmayla güncelleştirebilirsiniz. Alternatif olarak, özel betik uzantısını kaldırabilir ve güncelleştirilmiş betikle yeniden uygulayın.
- Betiğin ne zaman çalışacağını zamanlamak istiyorsanız, cron işi oluşturmak için uzantıyı kullanın.
- Betik çalışırken, yalnızca Azure portal veya CLI'dan "geçiş" uzantısı durumunu görürsünüz. Çalışan bir betik için daha sık durum güncelleştirmeleri istiyorsanız kendi çözümünüzü oluşturmanız gerekir.
- Özel Betik Uzantısı proxy sunucularını yerel olarak desteklemez. Ancak, betiğinizin içinde ara sunucuları destekleyen bir dosya aktarım aracı kullanabilirsiniz, örneğin
Curl
. - Betiklerinizin veya komutlarınızın dayanabileceği varsayılan olmayan dizin konumlarına dikkat edin. Bu durumla başa çıkmak için bir mantık oluşturun.
Uzantı şeması
Özel Betik Uzantısı yapılandırması, betik konumu ve çalıştırılacak komut gibi öğeleri belirtir. Bu bilgileri yapılandırma dosyalarında depolayabilir, komut satırında belirtebilir veya bir Azure Resource Manager şablonunda belirtebilirsiniz.
Hassas verileri korumalı bir yapılandırmada depolayabilirsiniz. Bu yapılandırma yalnızca hedef sanal makinede şifrelenir ve şifresi çözülür. Korumalı yapılandırma, yürütme komutu parola gibi gizli diziler içerdiğinde yararlıdır. Aşağıda bir örnek verilmiştir:
{
"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>"
}
}
}
Not
özelliği managedIdentity
veya storageAccountKey
özelliğiyle storageAccountName
birlikte kullanılmamalıdır.
Özellik değerleri
Name | Değer veya örnek | Veri türü |
---|---|---|
apiVersion |
2019-03-01 |
date |
publisher |
Microsoft.Azure.Extensions |
string |
type |
CustomScript |
string |
typeHandlerVersion |
2.1 |
int |
fileUris |
https://github.com/MyProject/Archive/MyPythonScript.py |
array |
commandToExecute |
python MyPythonScript.py \<my-param1> |
string |
script |
IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo= |
string |
skipDos2Unix |
false |
Boole |
timestamp |
123456789 |
32 bit tamsayı |
storageAccountName |
examplestorageacct |
string |
storageAccountKey |
TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== |
string |
managedIdentity |
{ } veya veya { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" } { "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" } |
JSON nesnesi |
Özellik değeri ayrıntıları
Özellik | İsteğe bağlı veya gerekli | Ayrıntılar |
---|---|---|
apiVersion |
Uygulanamaz | Kaynak Gezgini'ni veya Azure CLI'daki komutunu az provider list -o json kullanarak en güncel API sürümünü bulabilirsiniz. |
fileUris |
İsteğe Bağlı | İndirilecek dosyaların URL'leri. |
commandToExecute |
Ayarlı değilse script gerekli |
Çalıştırılacak giriş noktası betiği. Komutunuz parola gibi gizli diziler içeriyorsa yerine script bu özelliği kullanın. |
script |
Ayarlı değilse commandToExecute gerekli |
tarafından /bin/sh çalıştırılan Base64 kodlamalı (ve isteğe bağlı olarak gzip'ed) bir betik. |
skipDos2Unix |
İsteğe Bağlı | Betik tabanlı dosya URL'lerinin false veya betiklerinin dos2unix dönüştürmesini atlamak istiyorsanız bu değeri olarak ayarlayın. |
timestamp |
İsteğe Bağlı | Bu değeri yalnızca betiğin yeniden çalıştırılmasını tetikleme amacıyla değiştirin. Önceki değerden farklı olduğu sürece herhangi bir tamsayı değeri kabul edilebilir. |
storageAccountName |
İsteğe Bağlı | Depolama hesabının adı. Depolama kimlik bilgilerini belirtirseniz tüm fileUris değerlerin Azure blobları için URL'ler olması gerekir. |
storageAccountKey |
İsteğe Bağlı | Depolama hesabının erişim anahtarı. |
managedIdentity |
İsteğe Bağlı | Dosyaları indirmek için yönetilen kimlik :clientId (isteğe bağlı, dize): Yönetilen kimliğin istemci kimliği.objectId (isteğe bağlı, dize): Yönetilen kimliğin nesne kimliği. |
Genel veya korumalı ayarlarda aşağıdaki değerleri ayarlayabilirsiniz. Uzantı, bu değerlerin hem genel hem de korumalı ayarlarda ayarlandığı tüm yapılandırmaları reddeder.
commandToExecute
script
fileUris
Genel ayarların kullanılması hata ayıklama için yararlı olabilir, ancak korumalı ayarları kullanmanızı kesinlikle öneririz.
Genel ayarlar, betiğin çalıştırılacağı VM'ye düz metin olarak gönderilir. Korumalı ayarlar yalnızca Azure ve VM tarafından bilinen bir anahtar aracılığıyla şifrelenir. Ayarlar, gönderildikçe VM'ye kaydedilir. Başka bir ifadeyle, ayarlar şifrelendiyse vm'ye şifrelenmiş olarak kaydedilir. Şifrelenmiş değerlerin şifresini çözmek için kullanılan sertifika VM'de depolanır. Sertifika, çalışma zamanında ayarların (gerekirse) şifresini çözmek için de kullanılır.
Özellik: skipDos2Unix
Varsayılan değer olan false
, dos2unix dönüştürmesinin yürütüldiği anlamına gelir.
Özel Betik Uzantısı'nın önceki sürümü olan Microsoft.OSTCExtensions.CustomScriptForLinux, dos dosyalarını olarak çevirerek \r\n
otomatik olarak UNIX dosyalarına \n
dönüştürürdü. Bu çeviri hala var ve varsayılan olarak açık. Bu dönüştürme, aşağıdaki ölçütlerden birini temel alarak dosyasından fileUris
indirilen tüm dosyalara veya betik ayarına uygulanır:
- Uzantı .sh, .txt, .py veya .pl şeklindedir. ile çalıştırılan bir betik olduğu varsayıldığından, betik ayarı her zaman bu ölçütle
/bin/sh
eşleşecektir. Betik ayarı VM'de script.sh olarak kaydedilir. - Dosya ile
#!
başlar.
öğesini olarak ayarlayarak skipDos2Unix
dos2unix dönüştürmesini true
atlayabilirsiniz:
{
"fileUris": ["<url>"],
"commandToExecute": "<command-to-execute>",
"skipDos2Unix": true
}
Özellik: betik
Özel Betik Uzantısı, kullanıcı tanımlı betiğin yürütülmesini destekler. Betik ayarları ve fileUris
ayarlarını tek bir ayarda birleştirircommandToExecute
. Azure Depolama'dan veya GitHub gist'ten indirmek üzere bir dosya ayarlamak yerine betiği bir ayar olarak kodlamanız yeterlidir. ve fileUris
komut dosyasını değiştirmek commandToExecute
için kullanabilirsiniz.
Bazı gereksinimler şunlardır:
- Betik Base64 kodlanmış olmalıdır .
- Betik isteğe bağlı olarak gzip'ed olabilir.
- Betik ayarını genel veya korumalı ayarlarda kullanabilirsiniz.
- Betik parametresinin veri boyutu üst sınırı 256 KB'tır. Betik bu boyutu aşarsa çalıştırılamaz.
Örneğin, aşağıdaki betik /script.sh/ dosyasına kaydedilir:
#!/bin/sh
echo "Updating packages ..."
apt update
apt upgrade -y
Aşağıdaki komutun çıkışını alarak doğru Özel Betik Uzantısı betik ayarını oluşturursunuz:
cat script.sh | base64 -w0
{
"script": "IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo="
}
Çoğu durumda, boyutu daha da küçültmek için betik isteğe bağlı olarak gzip'ed olabilir. Özel Betik Uzantısı gzip sıkıştırmasının kullanımını otomatik olarak algılar.
cat script | gzip -9 | base64 -w 0
Özel Betik Uzantısı bir betik çalıştırmak için aşağıdaki algoritmayı kullanır:
- Betik değerinin uzunluğunun 256 KB'ı aşmadığını onaylar.
- Base64 betiğin değerinin kodunu çözer.
- Base64 kodu çözülen değeri gunzip etmeyi deneyin.
- Kodu çözülen (ve isteğe bağlı olarak sıkıştırılmış) değeri diske (/var/lib/waagent/custom-script/#/script.sh) yazın.
- komutunu kullanarak
_/bin/sh -c /var/lib/waagent/custom-script/#/script.sh
betiği çalıştırın.
Özellik: managedIdentity
Not
Bu özellik yalnızca korumalı ayarlarda belirtilmelidir .
Özel Betik Uzantısı (sürüm 2.1 ve üzeri), ayarda fileUris
sağlanan URL'lerden dosya indirmek için yönetilen kimlikleri destekler. Özel Betik Uzantısı'nın, kullanıcının paylaşılan erişim imzası (SAS) belirteçleri veya depolama hesabı anahtarları gibi gizli dizileri geçirmek zorunda kalmadan Azure Depolama özel bloblarına veya kapsayıcılarına erişmesine olanak tanır.
Bu özelliği kullanmak için kullanıcının, Özel Betik Uzantısı'nın çalıştırılması beklenen VM'ye veya sanal makine ölçek kümesine sistemtarafından atanan veya kullanıcı tarafından atanan bir kimlik eklemesi gerekir. Daha sonra kullanıcının yönetilen kimliğe Azure Depolama kapsayıcısı veya blobu için erişim vermesi gerekir.
Hedef VM veya sanal makine ölçek kümesinde sistem tarafından atanan kimliği kullanmak için boş bir JSON nesnesine ayarlayın managedidentity
.
Örnek:
{ "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"], "commandToExecute": "sh script1.sh", "managedIdentity" : {} }
Hedef VM'de veya sanal makine ölçek kümesinde kullanıcı tarafından atanan kimliği kullanmak için, istemci kimliği veya yönetilen kimliğin nesne kimliği ile yapılandırın managedidentity
.
Örnekler:
{ "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" } }
Not
özelliği managedIdentity
veya storageAccountKey
özelliğiyle storageAccountName
birlikte kullanılmamalıdır.
Şablon dağıtımı
Azure vm uzantılarını Azure Resource Manager şablonlarını kullanarak dağıtabilirsiniz. Önceki bölümde ayrıntılarıyla belirtilen JSON şeması, bir Azure Resource Manager şablonunda, şablonun dağıtımı sırasında Özel Betik Uzantısı'nı çalıştırmak için kullanılabilir. GitHub'da Özel Betik Uzantısı'nı içeren örnek bir şablon bulabilirsiniz.
{
"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"
]
}
}
}
Not
Bu özellik adları büyük/küçük harfe duyarlıdır. Dağıtım sorunlarını önlemek için burada gösterildiği gibi adları kullanın.
Azure CLI
Özel Betik Uzantısı'nı çalıştırmak için Azure CLI kullanırken bir yapılandırma dosyası veya dosyası oluşturun. En azından sahip commandToExecute
olmanız gerekir.
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM --name customScript \
--publisher Microsoft.Azure.Extensions \
--protected-settings ./script-config.json
İsteğe bağlı olarak, komuttaki ayarları JSON biçimli bir dize olarak belirtebilirsiniz. Bu, yapılandırmanın yürütme sırasında ve ayrı bir yapılandırma dosyası olmadan belirtilmesine olanak tanır.
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"}'
Örnek: Betik dosyasıyla genel yapılandırma
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],
"commandToExecute": "./config-music.sh"
}
Azure CLI komutu:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM --name customScript \
--publisher Microsoft.Azure.Extensions \
--settings ./script-config.json
Örnek: Betik dosyası olmadan genel yapılandırma
{
"commandToExecute": "apt-get -y update && apt-get install -y apache2"
}
Azure CLI komutu:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM --name customScript \
--publisher Microsoft.Azure.Extensions \
--settings ./script-config.json
Örnek: Genel ve korumalı yapılandırma dosyaları
Betik dosyasının URI'sini belirtmek için bir genel yapılandırma dosyası kullanırsınız. Çalıştırılacak komutu belirtmek için korumalı bir yapılandırma dosyası kullanırsınız.
Genel yapılandırma dosyası:
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"]
}
Korumalı yapılandırma dosyası:
{
"commandToExecute": "./config-music.sh <param1>"
}
Azure CLI komutu:
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
Sanal makine ölçek kümeleri
Özel Betik Uzantısı'nı Azure portal dağıtırsanız, depolama hesabınızdaki betiklere erişmek için SAS belirtecinin süresinin dolması üzerinde denetiminiz yoktur. Sonuç olarak ilk dağıtım çalışır, ancak depolama hesabının SAS belirtecinin süresi dolduğunda, Özel Betik Uzantısı artık depolama hesabına erişemediğinden sonraki ölçeklendirme işlemleri başarısız olur.
Özel Betik Uzantısı'nı bir sanal makine ölçek kümesine dağıtırken PowerShell, Azure CLI veya Azure Resource Manager şablonu kullanmanızı öneririz. Bu şekilde, yönetilen kimlik kullanmayı veya ihtiyacınız olduğu sürece depolama hesabınızdaki betike erişmek için SAS belirtecinin süre sonunu doğrudan denetlemeyi seçebilirsiniz.
Sorun giderme
Özel Betik Uzantısı çalıştırıldığında betik oluşturulur veya aşağıdaki örneğe benzer bir dizine indirilir. Komut çıktısı ve dosyalarında stdout
stderr
da bu dizine kaydedilir.
/var/lib/waagent/custom-script/download/0/
Sorun gidermek için önce Linux Aracısı Günlüğünü denetleyin ve uzantının çalıştığından emin olun:
/var/log/waagent.log
Uzantı yürütmeyi arayın. Şuna benzer bir şey gözükü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
Önceki çıkışta:
Enable
, komutun çalışmaya başladığı zamandır.Download
, içinde belirtilen betik dosyalarını değil, Özel Betik Uzantısı paketinin Azure'dan indirilmesiylefileUris
ilgilidir.
Azure Betik Uzantısı, burada bulabileceğiniz bir günlük oluşturur:
/var/log/azure/custom-script/handler.log
Tek tek yürütmeyi arayın. Şuna benzer bir şey gözükü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
Burada şunları görebilirsiniz:
enable
Bu günlüğü başlatan komut.- Uzantıya geçirilen ayarlar.
- Uzantının dosyayı indirmesi ve bunun sonucu.
- Çalıştırılmakta olan komut ve sonuç.
Azure CLI kullanarak, olarak commandToExecute
geçirilen gerçek bağımsız değişkenler de dahil olmak üzere Özel Betik Uzantısı'nın yürütme durumunu da alabilirsiniz:
az vm extension list -g myResourceGroup --vm-name myVM
Çıktı aşağıdaki metne benzer:
[
{
"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"
}
]
Azure CLI söz dizimi sorunları
Azure CLI çeşitli kabuk ortamlarında çalıştırılabilir ancak biçim çeşitlemeleri hafiftir. Azure CLI komutlarıyla ilgili beklenmeyen sonuçlar alırsanız bkz. Azure CLI'yi başarıyla kullanma.
Sonraki adımlar
Kodu, geçerli sorunları ve sürümleri görmek için GitHub'da custom-script-extension-linux deposuna gidin.