Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Özel Betik Uzantısı Sürüm 2, Azure sanal makinelerinde (VM) betikleri indirir ve çalıştırır. Dağıtım sonrası yapılandırma, yazılım yüklemesi veya başka bir yapılandırma veya yönetim görevi için bu uzantıyı kullanın. 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 entegre olur. Azure CLI, Azure 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ıldığı açıklanır. Bu makalede Linux sistemleri için sorun giderme adımları da sağlanır.
Özel Komut Dosyası Uzantısı'nın iki sürümü vardır.
- Sürüm 1: Microsoft.OSTCExtensions.CustomScriptForLinux
- Sürüm 2: Microsoft.Azure.Extensions.CustomScript
Yeni ve mevcut dağıtımlar için Sürüm 2'i kullanın. Yeni sürüm doğrudan değiştirilebilir bir yedektir. Geçiş, adı ve sürümü değiştirmek kadar kolaydır. Uzantı yapılandırmanızı değiştirmeniz gerekmez.
Not
Daha hızlı tanılama için VM yardımını deneyin. Windows için VM yardımını veya Linux için VM yardımını çalıştırmanızı öneririz. Bu betik tabanlı tanılama araçları, Azure VM Konuk Aracısı'nı ve genel VM durumunu etkileyen yaygın sorunları belirlemenize yardımcı olur.
Sanal makinelerle ilgili performans sorunları yaşıyorsanız desteğe başvurmadan önce bu araçları çalıştırın.
Önkoşullar
Desteklenen Linux dağıtımları
| Publisher | Dağıtım | x64 | ARM64 |
|---|---|---|---|
| Alma Linux Topluluğu | 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 Projesi | openSUSE | 12.3+ | Desteklenmiyor |
| Oracle | Oracle Linux | 6.4+, 7.x+, 8.x+ | Desteklenmiyor |
| Red Hat | Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ | 8.6+, 9.0+, 10.x+ |
| CIQ | Rocky Linux | 9.x+ | 9.x+ |
| SUSE | SLES | 12.x+, 15.x+ | 15.x SP4+ |
| Kurallı | Ubuntu (LTS sürümleri) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.04+ |
Komut dosyası konumu
Uzantıyı Azure Blob Depolama'ya erişebilmesi için Azure Blob Depolama kimlik bilgilerinizi kullanacak şekilde ayarlayabilirsiniz. Sanal makine, GitHub veya dahili bir dosya sunucusu gibi bir uç noktaya yönlendirebildiği sürece, betiğin konumu her yer olabilir.
İnternet bağlantısı
Komut dosyasını GitHub veya Azure Depolama gibi dış bir konumdan indirmek için diğer ağ güvenlik grubu (NSG) veya güvenlik duvarı bağlantı noktalarını açmanız gerekir. Örneğin, betiğiniz Azure Depolama'da bulunuyorsa Depolama için Azure NSG hizmet etiketlerini kullanarak erişime izin verebilirsiniz.
Betiğiniz yerel bir sunucuda olsa bile başka güvenlik duvarı veya NSG portlarını açmanız gerekebilir.
İpuçları
- Bu uzantı için en yüksek hata oranı betikteki söz dizimi hatalarından kaynaklanır. Betiğin hatasız çalıştığını doğrulayın. Hataları bulmayı kolaylaştırmak için betiğe daha fazla log ekleyin.
- Idempotent betikler yazın, böylece yanlışlıkla birden fazla çalıştırıldığında sistem değişikliklerine neden olmazlar.
- Betiklerin çalışırken kullanıcı girişi gerektirmediğinden emin olun.
- Betiğin çalışması için 90 dakika süre tanınmıştır. Daha uzun olan her şey uzantının sağlanamamasına neden olur.
- Yazılım betiğine yeniden başlatma komutları eklemeyin. Yeniden başlatma, yüklenen diğer uzantılarla ilgili sorunlara neden olur ve uzantı yeniden başlatıldıktan sonra devam etmez.
- Uygulamaları yüklemeden ve betikleri çalıştırmadan önce yeniden başlatmaya neden olan bir betiğiniz varsa, yeniden başlatmayı bir cron işi veya DSC, Chef ya da Puppet uzantıları gibi araçlar kullanarak zamanlayın.
- Azure Linux Aracısı'nın durdurulmasına veya güncelleştirilmesine neden olan bir betik çalıştırmayın. Bunun yapılması uzantıyı geçiş durumunda bırakabilir ve zaman aşımına neden olabilir.
- Uzantı bir betiği yalnızca bir kez çalıştırır. Bir betiği her başlatmada çalıştırmak istiyorsanız bir cloud-init görüntüsü ve Önyükleme Başına Betikler modülü kullanabilirsiniz. Alternatif olarak, betiği kullanarak bir systemd hizmet birimi oluşturabilirsiniz.
- Sanal makineye bir 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ştirin. Alternatif olarak, Özel Betik Uzantısını kaldırabilir ve güncelleştirilmiş betikle yeniden uygulayabilirsiniz.
- Betiğin ne zaman çalışacağını programlamak istiyorsanız uzantıyı kullanarak bir cron işi oluşturun.
- Betik çalışırken Azure portalı veya CLI üzerinden uzantı durumunu yalnızca geçiş aşamasında olarak görebilirsiniz. Çalışan bir betikle ilgili daha sık durum güncelleştirmesi almak isterseniz kendi çözümünüzü oluşturun.
- Özel Betik Uzantısı, ara sunucuları yerel olarak desteklemez. Bununla birlikte betiğinizin içinde ara sunucuları destekleyen
Curlgibi bir dosya aktarım aracı kullanabilirsiniz. - Betiklerinizin veya komutlarınızın kullanıyor olabileceğ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 şifrelenmiştir ve yalnızca hedef VM'de şifresi çözülür. Korumalı yapılandırma, yürütme komutu parola gibi gizli diziler içerdiğinde kullanışlıdır. Bir örnek aşağıda 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
managedIdentity özelliği kesinliklestorageAccountName veya storageAccountKey özelliğiyle birlikte kullanılmamalıdır.
Mülk değerleri
| İsim | Değer veya örnek | Veri türü |
|---|---|---|
| apiVersion | 2019-03-01 |
tarih |
| yayınevi | Microsoft.Azure.Extensions |
Dize |
| Tür | CustomScript |
Dize |
| typeHandlerVersion | 2.1 |
int |
| fileUris | https://github.com/MyProject/Archive/MyPythonScript.py |
dizi |
| Çalıştırılacak Komut | python MyPythonScript.py \<my-param1> |
Dize |
| betiğini çalıştırın | IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo= |
Dize |
| skipDos2Unix | false |
Boolean |
| timestamp | 123456789 |
32 bit tamsayı |
| depolamaHesapAdı | examplestorageacct |
Dize |
| DepolamaHesabıAnahtarı | TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== |
Dize |
| managedIdentity |
{ } veya { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444" } veya { "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } |
JSON nesnesi |
Özellik değeri bilgileri
| Mülk | İsteğe bağlı veya gerekli | Ayrıntılar |
|---|---|---|
| apiVersion | Uygulanamaz | Kaynak Gezgini'nien güncel API sürümünü bulabilirsiniz. |
| fileUris | İsteğe bağlı | İndirilecek dosyaların URL'leri. |
| Çalıştırılacak Komut |
script ayarlı olmadığında gereklidir |
Çalıştırılacak giriş noktası betiği. Komutunuz parolalar gibi gizli diziler içeriyorsa yerine script bu özelliği kullanın. |
| betiğini çalıştırın |
commandToExecute ayarlı olmadığında gereklidir |
/bin/sh tarafından çalıştırılan, Base64 kodlu ve gerektiğinde gzip ile sıkıştırılmış betik. |
| skipDos2Unix | İsteğe bağlı | Betik tabanlı dosya URL'lerinin veya betiklerin dos2unix çevirisini atlamak isterseniz bu değeri false olarak ayarlayın. |
| timestamp | İsteğe bağlı | Bu değeri yalnızca betiğin yeniden çalıştırılmasını tetikleecek şekilde değiştirin. Herhangi bir tamsayı değeri, önceki değerden farklı olduğu sürece kabul edilebilir. |
| depolamaHesapAdı | İ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. |
| DepolamaHesabıAnahtarı | İsteğe bağlı | Depolama hesabının erişim anahtarı. |
| managedIdentity | İsteğe bağlı |
Dosyaların indirilmesi için yönetilen kimlik. Değerler clientId , yönetilen kimliğin istemci kimliği olan (isteğe bağlı, dize) ve objectId yönetilen kimliğin nesne kimliği olan (isteğe bağlı, dize) değerleridir. |
Genel ayarlar , betiğin çalıştığı 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 vm'ye gönderildikçe kaydedilir. Başka bir ifadeyle, eğer ayarlar şifrelendiyse, şifreli bir şekilde VM'ye kaydedilir. Şifrelenmiş değerlerin şifresini çözmek için kullanılan sertifika VM'de depolanır. Sertifika, gerekirse çalışma zamanında ayarların şifresini çözmek için de kullanılır.
Genel ayarları kullanmak hata ayıklama için yararlı olabilir, ancak korumalı ayarları kullanmanızı kesinlikle öneririz.
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.
commandToExecutescriptfileUris
Özellik: skipDos2Unix
Özel Betik Uzantısı'nın önceki sürümü, `Microsoft.OSTCExtensions.CustomScriptForLinux` öğesini `\r\n` olarak çevirerek DOS dosyalarını otomatik olarak UNIX dosyalarına dönüştürür. Bu çeviri hala var ve varsayılan olarak açık. Bu dönüştürme, fileUris kaynağından indirilen tüm dosyalar veya aşağıdaki ölçütlerden biri temel alınarak yapılan betik ayarları için uygulanır.
- Uzantı .sh, .txt, .py veya .pl. /bin/sh ile çalıştırılan bir betik olduğu varsayıldığından, betik ayarı her zaman bu ölçütle eşleşir. Betik ayarı VM'de script.sh olarak kaydedilir.
- Dosya
#!ile başlar.
Varsayılan değer olan false, dos2unix dönüştürmesinin yürütüldiği anlamına gelir.
skipDos2Unix ayarını true yaparak dos2unix dönüştürmesini atlayabilirsiniz.
{
"fileUris": ["<url>"],
"commandToExecute": "<command-to-execute>",
"skipDos2Unix": true
}
Özellik: betik
Özel Betik Uzantısı, kullanıcı tanımlı bir betiğin yürütülmesini destekler. Betik ayarları, commandToExecute ve fileUris öğelerini tek bir ayarda birleştirir. Azure Depolama'dan veya GitHub gist'ten indirmek üzere bir dosya ayarlamak zorunda kalmak yerine betiği bir ayar olarak kodlayabilirsiniz. Betiği, commandToExecute ve fileUris öğelerini değiştirmek için kullanabilirsiniz.
Bazı gereksinimler şunlardır:
- Betiğin Base64 kodlanmış olması gerekir.
- Betik isteğe bağlı olarak gzip ile sıkıştırılabilir.
- Betik ayarını kamuya açık veya korumalı ayarlarda kullanabilirsiniz.
- Betik parametresi verilerinin boyutu üst sınırı 256 KB'tır. Betik bu boyutu aşarsa çalışmaz.
Örneğin, aşağıdaki betik /script.sh/ dosyasına kaydedilir:
#!/bin/sh
echo "Creating directories ..."
mkdir /data
chown user:user /data
mkdir /appdata
chown user:user /appdata
Aşağıdaki komutun çıktısını alarak doğru Özel Betik Uzantısı ayarını oluşturabilirsiniz:
cat script.sh | base64 -w0
{
"script": "IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo="
}
Çoğu durumda, boyutu daha da küçültmek için betik isteğe bağlı olarak gzip kullanılarak sıkıştırılabilir. Ö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:
- Betiğin değerinin uzunluğunun 256 KB'ı aşmadığından emin olun.
- Base64 ile kodlanmış betik değerini çöz.
- Base64 kodu çözülen değeri gunzip etmeye çalışın .
- Çözülen ve isteğe bağlı olarak sıkıştırılmış kod değerini diske yazın: /var/lib/waagent/custom-script/#/script.sh.
-
_/bin/sh -c /var/lib/waagent/custom-script/#/script.shkomutunu kullanarak betiği çalıştırın.
Özellik: managedIdentity
Not
Bu özellik yalnızca korumalı ayarlarda belirtilmelidir .
Sürüm 2.1 ve üzeri olan Özel Betik Uzantısı, ayarda sağlanan URL'lerden dosya indirmek için yönetilen kimliklerifileUris. Bu yaklaşım, kullanıcının paylaşılan erişim imzası (SAS) belirteçleri veya depolama hesabı anahtarları gibi gizli bilgileri iletmesine gerek kalmadan, Özel Komut Dosyası Uzantısı'nın Azure Depolama özel bloblarına veya kapsayıcılarına erişmesini sağlar.
Bu özelliği kullanmak için, Özel Betik Uzantısının çalıştırılmasının beklendiği VM veya Sanal Makine Ölçek Kümesine sistem tarafından atanan veya kullanıcı tarafından atanan bir kimlik ekleyin. Ardından yönetilen kimliğe Azure Depolama kapsayıcısına veya bloba erişim verin.
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 .
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
"commandToExecute": "sh script1.sh",
"managedIdentity" : {}
}
Hedef VM veya Sanal Makine Ölçek Kümesinde kullanıcı tarafından atanan kimliği kullanmak için, managedidentity'i yönetilen kimliğin istemci kimliği veya nesne kimliğiyle yapılandırın.
{
"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" }
}
Not
managedIdentity özelliği kesinliklestorageAccountName veya storageAccountKey özelliğiyle birlikte kullanılmamalıdır.
Şablon dağıtımı
Azure Resource Manager şablonlarını kullanarak Azure VM uzantılarını 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 isimleri 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'yı kullandığınızda, bir yapılandırma dosyası veya dosyaları oluşturun. Yapılandırma dosyası en azından içermelidir commandToExecute. Komutu yapılandırma az vm extension set dosyasına başvurur:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM --name customScript \
--publisher Microsoft.Azure.Extensions \
--protected-settings ./script-config.json
Alternatif olarak, komuttaki ayarları JSON biçimli bir dize olarak belirtebilirsiniz. Bu yaklaşım, yürütme sırasında ve ayrı bir yapılandırma dosyası olmadan yapılandırmanın 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 herkese açık yapılandırma
Bu örnekte, script-config.json adlı aşağıdaki betik dosyası kullanılır:
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],
"commandToExecute": "./config-music.sh"
}
Betik dosyasını, istediğiniz metin düzenleyicisini veya aşağıdaki CLI komutunu kullanarak oluşturun:
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Şu komutu çalıştırın:
az vm extension set \ --resource-group myResourceGroup \ --vm-name myVM --name customScript \ --publisher Microsoft.Azure.Extensions \ --settings ./script-config.json
Örnek: Betik dosyası olmayan genel yapılandırma
Bu örnekte aşağıdaki JSON biçimli içerik kullanılır:
{
"commandToExecute": "apt-get -y update && apt-get install -y apache2"
}
Şu komutu çalıştırın:
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"}'
Örnek: Genel ve korumalı yapılandırma dosyaları
Betik dosyasının URI'sini belirtmek için bir genel yapılandırma dosyası kullanın:
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"]
}
Çalıştırılacak komutu belirtmek için korumalı bir yapılandırma dosyası kullanın:
{
"commandToExecute": "./config-music.sh"
}
İstediğiniz metin düzenleyicisini veya aşağıdaki CLI komutunu kullanarak genel yapılandırma dosyasını oluşturun:
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İstediğiniz metin düzenleyicisini veya aşağıdaki CLI komutunu kullanarak korumalı yapılandırma dosyasını oluşturun:
cat <<EOF > protected-config.json { "commandToExecute": "./config-music.sh" } EOFŞu komutu çalıştırın:
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ından dağıtırsanız, depolama hesabınızdaki betiğe erişmek için kullanmanız gereken SAS belirtecinin geçerlilik süresi üzerinde kontrolünüz olmaz. İlk 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.
Önerimiz, PowerShell, Azure CLI veya bir Azure Resource Manager şablonu kullanarak Özel Betik Uzantısını bir Sanal Makine Ölçek Kümesine dağıtmanızdır. Bu şekilde, yönetilen bir kimlik kullanmayı seçebilir veya SAS belirtecinin süresinin dolmasını doğrudan kontrol ederek depolama hesabınızdaki betiğe ihtiyacınız olduğu sürece eriş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ı, stdout ve stderr dosyalarına bu dizine kaydedilir.
sudo ls -l /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:
sudo cat /var/log/waagent.log
Uzantı çalıştırmasını arayın. Şuna benzer:
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, belirtilen betik dosyalarını değil, Özel Betik Uzantısı paketinin Azure'dan indirilmesiyle ilgilidirfileUris.
Azure Betik Eklentisi, burada bulabileceğiniz bir günlük oluşturur.
sudo cat /var/log/azure/custom-script/handler.log
Bireysel yürütmeyi arayın. Şuna benzer:
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:
-
enableBu günlüğü başlatan komut. - Uzantıya geçirilen ayarlar.
- Uzantının dosyayı indirmesi ve bu eylemin sonucu.
- Çalıştırılan komut ve sonuç.
Özel Betik Uzantısı'nın yürütme durumunu, commandToExecute olarak geçirilen gerçek bağımsız değişkenler de dahil olmak üzere, Azure CLI kullanarak 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ışabilir, ancak küçük format farklılıklarıyla. Azure CLI komutlarıyla beklenmeyen sonuçlar alıyorsanız, Azure CLI'yi Başarıyla Kullanma sayfasına bakın.
Sonraki adımlar
Kodu, geçerli sorunları ve sürümleri görmek için bkz . custom-script-extension-linux.