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.
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri
Önemli
Yönetilen Çalıştırma Komutu şu anda Azure CLI, PowerShell ve API'de kullanılabilir. Portal işlevselliği yol haritasındadır.
Komut Çalıştır özelliği, bir Azure Linux VM'sinde betik çalıştırmak için sanal makine (VM) aracısını kullanır. Genel makine veya uygulama yönetimi için bu betikleri kullanabilirsiniz. Vm erişimi ve ağ sorunlarını hızla tanılamanıza ve düzeltmenize ve VM'yi yeniden iyi bir duruma döndürmenize yardımcı olabilir.
Güncelleştirilmiş yönetilen Çalıştırma Komutu, betikleri yürütmek için aynı VM aracısı kanalını kullanır ve özgün eylem odaklı Çalıştırma Komutu üzerinde aşağıdaki geliştirmeleri sağlar:
- ARM dağıtım şablonu aracılığıyla güncelleştirilmiş Komut Çalıştırma desteği
- Çoklu betiğin eşzamanlı yürütülmesi
- Betiklerin sıralı yürütülmesi
- Kullanıcı tarafından belirtilen betik zaman aşımı
- Uzun süre çalışan (saatler/günler boyunca) komut dosyaları için destek
- Gizli dizileri (parametreler, parolalar) güvenli bir şekilde geçirme
Önkoşullar
Önemli
Desteklenen en düşük Linux Konuk Aracısı sürüm 2.4.0.2 Eski sürümler yönetilen Çalıştırma Komutunu desteklemez. Daha fazla bilgi için bkz . Bilinen sorunları giderme.
Linux Dağıtımı Desteklenir
| 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+ |
Kullanılabilir Komutlar
| CommandID | Açıklama |
|---|---|
| RunShellScript | Linux kabuk betiği çalıştırır. |
| ifconfig | Tüm ağ arabirimlerinin yapılandırmasını alır. Kullanım kılavuzu için Betikleri çalıştırma bölümüne başvurun |
Not
Yukarıdaki komut kimlikleri Linux VM'leri için Yönetilen Çalıştırma Komutları için geçerlidir. "Get-AzVMRunCommandDocument -Location {RegionName}" komutunu kullanarak tüm commandId'leri listeleyebilirsiniz.
Çalıştır Komutuna erişimi sınırlama
Çalıştırma komutlarının listelenmesi veya bir komutun ayrıntılarının gösterilmesi için Abonelik düzeyinde izin gerekir Microsoft.Compute/locations/runCommands/read . Yerleşik Okuyucu rolü ve üst düzeyler bu izne sahiptir.
Komut çalıştırmak için izin gerekir Microsoft.Compute/virtualMachines/runCommand/write .
Sanal Makine Katılımcısı rolü ve üst düzeyler bu izne sahiptir.
Komut Çalıştır'ı kullanmak için yerleşik rollerden birini kullanabilir veya özel bir rol oluşturabilirsiniz.
Azure Komut Satırı Arayüzü (Azure CLI)
Aşağıdaki örneklerde az vm run-command kullanılarak Azure Linux VM'de kabuk betiği çalıştırılır.
VM kullanarak betik çalıştırma
Bu komut, betiği VM'ye iletir, çalıştırır ve yakalanan çıktıyı döndürür.
az vm run-command create --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --script "echo Hello World!"
Vm'de dağıtılan tüm RunCommand kaynaklarını listeleme
Bu komut, özellikleriyle birlikte önceden dağıtılan Çalıştırma Komutlarının tam listesini döndürür.
az vm run-command list --vm-name "myVM" --resource-group "myRG"
Yürütme durumunu ve sonuçlarını alma
Bu komut en son çıkış, başlangıç/bitiş saati, çıkış kodu ve yürütmenin terminal durumu gibi geçerli yürütme ilerleme durumunu alır.
az vm run-command show --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --expand instanceView
Not
içindeki instanceView çıkış ve hata alanları son 4 KB ile sınırlıdır.
Tam çıkışa ve hataya erişmek isterseniz, Çalıştır Komutunu -outputBlobUri veya -errorBlobUri kullanarak yürütürken, çıkış ve hata verilerini Set-AzVMRunCommand ve Set-AzVMssRunCommand parametrelerini kullanarak depolama ekleme bloblarına iletme seçeneğiniz vardır.
Vm'den RunCommand kaynağını silme
Daha önce VM'de dağıtılan RunCommand kaynağını kaldırın. Betik yürütme işlemi devam ediyorsa yürütme sonlandırılır.
az vm run-command delete --name "myRunCommand" --vm-name "myVM" --resource-group "myRG"
PowerShell
VM kullanarak betik çalıştırma
Bu komut, betiği VM'ye iletir, çalıştırır ve yakalanan çıktıyı döndürür.
Set-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
SourceScriptUri parametresini kullanarak VM'de betik yürütme
OutputBlobUri ve ErrorBlobUri isteğe bağlı parametrelerdir.
Set-AzVMRunCommand -ResourceGroupName -VMName -RunCommandName -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>" -OutputBlobUri “< SAS URI of a storage append blob with read, add, create, write access>” -ErrorBlobUri “< SAS URI of a storage append blob with read, add, create, write access>”
Vm'de uzun süre çalışan bir Çalıştırma Komutu yürütme
Yürütme süresi, varsayılan 90 dakikalık zaman aşımından daha uzun olmalıdır. Betik bu kadar uzun çalışacak şekilde tasarlanmışsa, 100 dakika boyunca çalışması gerekir (6.000 saniye -TimeoutInSecond parametresine bakın). 100 dakika sonra betik yürütme durdurulmalıdır.
Set-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -AsyncExecution -TimeoutInSecond 6000
Vm'de dağıtılan tüm RunCommand kaynaklarını listeleme
Bu komut, özellikleriyle birlikte önceden dağıtılan Çalıştırma Komutlarının tam listesini döndürür.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM"
Yürütme durumunu ve sonuçlarını alma
Bu komut en son çıkış, başlangıç/bitiş saati, çıkış kodu ve yürütmenin terminal durumu gibi geçerli yürütme ilerleme durumunu alır.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName" -Expand instanceView
SourceScriptURI (depolama blob SAS URL'si) kullanarak vm üzerinde Çalıştır Komutu oluşturma veya güncelleştirme
PowerShell betiği içeren bir depolama blobunun SAS URL'sini kullanarak Bir Windows VM'de Çalıştır Komutu oluşturun veya güncelleştirin.
SourceScriptUri bir depolama blobunun tam SAS URL'si veya genel URL'si olabilir.
Not
SAS URL'si bloba okuma erişimi sağlamalıdır. SAS URL'si için 24 saatlik bir süre sonu önerilir. Azure portalında blob'un seçenekleri kullanılarak veya New-AzStorageBlobSASToken kullanılarak SAS URL'leri ya da SAS belirteci oluşturulabilir. kullanarak New-AzStorageBlobSASToken SAS belirteci oluşturuyorsanız, SAS URL'niz = "temel blob URL'si" + "?" + "New-AzStorageBlobSASToken'dan SAS belirteci"
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptURI>
Çalıştırma Komutunu Oluşturduktan veya Güncelleştirdikten Sonra VM için Çalışma Komutu Örneği Görünümü Edinme
Instance Görünümü ile VM Çalıştır Komutunu alın. Örnek Görünümü, betiğin Komut Çalıştır ile yürütülmesi sırasında oluşan icra durumunu (Başarılı, Başarısız vb.), çıkış kodunu, standart çıktıyı ve standart hatayı içerir. Sıfır olmayan ExitCode başarısız bir yürütmeyi gösterir.
$x = Get-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Expand InstanceView
$x.InstanceView
Beklenen çıktı:
ExecutionState : Succeeded
ExecutionMessage :
ExitCode : 0
Output :
output : uid=0(root) gid=0(root) groups=0(root)
HelloWorld
Error :
StartTime : 10/27/2022 9:10:52 PM
EndTime : 10/27/2022 9:10:55 PM
Statuses :
InstanceView.ExecutionState -Kullanıcının Komut Çalıştır betiğinin durumu. Betiğinizin başarılı olup olmadığını öğrenmek için bu duruma bakın.
ProvisioningState - Uçtan uca genel uzantı sağlama durumu (uzantı platformunun Komut Çalıştır betiğini tetikleyip tetikleyemediği).
SourceScript kullanarak bir VM üzerinde Çalıştır Komutu Oluşturma veya Güncelleme (betik metni)
Betik içeriğini doğrudan -SourceScript parametresine geçiren bir VM'de Çalıştır Komutunu oluşturun veya güncelleştirin. Birden çok komutu ayırmak için kullanın ; .
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
SourceCommandId kullanarak VM'de Çalıştırma Komutu oluşturma ya da güncelleştirme
Önceden var olan kullanarak bir VM'de Çalıştır Komutunu oluşturun veya güncelleştirin commandId. Kullanılabilir commandId'ler Get-AzVMRunCommandDocument kullanılarak alınabilir.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId ipconfig
VM üzerinde Çalıştır Komutunu oluşturma veya güncelleştirme yapmak için standart çıkış ve standart hata mesajlarını OutputBlobUri ve ErrorBlobUri kullanarak çıktıya ve ekleme hata bloblarına akıtın.
Vm'de Çalıştır Komutunu oluşturun veya güncelleştirin ve standart çıkış ve standart hata iletilerini çıkışa akışla aktarıp Blob ekleme hatası oluştu.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP EastUS2EUAP -SourceScriptUri <SourceScriptUri> -OutputBlobUri <OutputBlobUri> -ErrorBlobUri <errorbloburi>
Not
Çıkış ve hata blobları türünde AppendBlob olmalı ve SAS URL'leri bloba okuma, ekleme, oluşturma, yazma erişimi sağlamalıdır. SAS URL'si için 24 saatlik bir süre sonu önerilir. Çıktı veya hata blobu yoksa AppendBlob türünde bir blob oluşturulur. Azure portalında Blob'un seçenekleri kullanılarak SAS URL'leri veya New-AzStorageBlobSASToken kullanılarak SAS belirteci oluşturulabilir. SAS belirteci New-AzStorageBlobSASToken kullanarak oluşturuluyorsa, SAS URL'si = temel blob URL'si + "?" + New-AzStorageBlobSASToken'den gelen SAS belirteci.
Bir VM'de Çalıştır Komutu oluşturun veya güncelleştirin, RunAsUser ve RunAsPassword parametrelerini kullanarak Run Command'u farklı bir kullanıcı olarak çalıştırın
Bir VM'de Çalıştır Komutu oluşturun veya güncelleştirin ve RunAsUser ve RunAsPassword parametrelerini kullanarak Çalıştır Komutunu farklı bir kullanıcı olarak çalıştırın. RunA'ların düzgün çalışması için VM yöneticisine başvurun ve kullanıcının VM'ye eklendiğinden, kullanıcının Çalıştır Komutu (Dizinler, Dosyalar, Ağ vb.) tarafından erişilen kaynaklara erişimi olduğundan ve Windows VM'sinde 'İkincil Oturum Açma' hizmetinin vm üzerinde çalıştığından emin olun.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP EastUS2EUAP -SourceScriptUri <SourceScriptUri> -RunAsUser myusername -RunAsPassword mypassword
SourceScriptUri (depolama blob SAS URL'si) kullanarak bir Sanal Makine Ölçek Kümeleri kaynağında Çalıştır Komutu oluşturun veya güncelleştirin.
Bash betiği içeren bir depolama blobunun SAS URL'sini kullanarak Sanal Makine Ölçek Kümeleri kaynağında Çalıştır Komutunu oluşturun veya güncelleştirin.
Set-AzVmssVMRunCommand -ResourceGroupName MyRG0 -VMScaleSetName MyVMSS -InstanceId 0 -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Not
Not SAS URL'si bloba okuma erişimi sağlamalıdır. SAS URL'si için 24 saatlik bir süre sonu önerilir. Azure portalında Blob'un seçenekleri kullanılarak SAS URL'leri veya New-AzStorageBlobSASToken kullanılarak SAS belirteci oluşturulabilir. New-AzStorageBlobSASToken kullanarak SAS belirteci oluşturuyorsanız, SAS URL'si = baz URL + "?" + New-AzStorageBlobSASToken'den alınan SAS belirteci.
Parametre ve ProtectedParameter parametrelerini kullanarak bir VM örneğinde Çalıştır Komutu oluşturma veya güncelleştirme (Betik için Genel ve Korumalı Parametreler)
$PublicParametersArray = @([Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='publicParam1';value='publicParam1value'},
>> [Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='publicParam2';value='publicParam2value'})
$ProtectedParametersArray = @([Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='secret1';value='secret1value'},
>> [Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='secret2';value='secret2value'})
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -Parameter $PublicParametersArray -ProtectedParameter $ProtectedParametersArray
ProtectedParameter'yi parolalar, anahtarlar vb. hassas girişleri betiklere aktarmak için kullanın.
- Windows: Parametreler ve ProtectedParameters, betiğe bağımsız değişkenler olarak geçirilir ve
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2valuebu şekilde çalıştırılır. - Linux: Adlandırılmış Parametreler ve bunların değerleri, betik içinde erişilebilir olması gereken ortam yapılandırmasına ayarlanır. Adsız bağımsız değişkenler için, ad girişine boş bir metin geçirin. Adsız bağımsız değişkenler betiklere geçirilir ve şöyle çalıştırılır -
myscript.sh publicParam1value publicParam2value secret1value secret2value
Vm'den RunCommand kaynağını silme
Daha önce VM'de dağıtılan RunCommand kaynağını kaldırın. Betik yürütme işlemi devam ediyorsa yürütme sonlandırılır.
Remove-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName"
REST API
Yeni bir Çalıştırma Komutu dağıtmak için, doğrudan VM'ye bir PUT komutu yürütün ve Çalıştırma Komutu örneği için benzersiz bir ad belirtin.
PUT /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2019-12-01
{
"location": "<location>",
"properties": {
"source": {
"script": "Write-Host Hello World!",
"scriptUri": "<SAS URI of a storage blob with read access or public URI>",
"commandId": "<Id>"
},
"parameters": [
{
"name": "param1",
"value": "value1"
},
{
"name": "param2",
"value": "value2"
}
],
"protectedParameters": [
{
"name": "secret1",
"value": "value1"
},
{
"name": "secret2",
"value": "value2"
}
],
"runAsUser": "userName",
"runAsPassword": "userPassword",
"timeoutInSeconds": 3600,
"outputBlobUri": "< SAS URI of a storage append blob with read, add, create, write access>",
"errorBlobUri": "< SAS URI of a storage append blob with read, add, create, write access >"
}
}
Notlar
- Giriş kaynağı olarak satır içi komut dosyası, komut dosyası URI'si veya yerleşik komut dosyası komut kimliği sağlayabilirsiniz. Komut dosyası URI'si, okuma erişimi olan depolama blobu SAS URI'si veya genel URI'dir.
- Tek bir komut yürütmesi için yalnızca bir tür kaynak girişi desteklenir.
- Çalıştır Komutu, büyük betik çıktılarının depolanması için kullanılabilen outputBlobUri ve errorBlobUri parametreleri aracılığıyla Depolama bloblarına çıktı ve hata yazmayı destekler. Okuma, ekleme, oluşturma, yazma erişimiyle depolama ekleme blobunun SAS URI'sini kullanın. Blob AppendBlob türünde olmalıdır. Aksi takdirde betik çıktısı veya hata blobu yazılamaz. Blob zaten varsa üzerine yazılır. Mevcut değilse oluşturulacaktır.
Vm'de Çalıştır Komutunun çalışan örneklerini listeleme
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2019-12-01
Belirli bir Çalıştırma Komutu dağıtımı için çıkış ayrıntılarını alma
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?$expand=instanceView&api-version=2019-12-01
Belirli bir Run Command dağıtımını silme
Run Command örneğini silme
DELETE /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?api-version=2019-12-01
Betikleri belirli bir sırayla dağıtma
Betikleri sıralı olarak dağıtmak için sıralı betikler arasında bir ilişki belirten bir dependsOn dağıtım şablonu kullanın.
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"secondRunCommand",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":<full resourceID of the previous other Run Command>,
"properties":{
"source":{
"script":"echo Hello World!"
},
"timeoutInSeconds":60
}
}
Birden çok Çalıştırma Komutunu sıralı olarak yürütme
Varsayılan olarak, dağıtım şablonunu kullanarak birden çok RunCommand kaynağı dağıtırsanız, bunlar VM'de aynı anda yürütülür. Eğer betiklere bağımlılığınız varsa ve belirli bir yürütme sırası tercih ediyorsanız, onları belirli bir sırayla çalıştırmak için dependsOn özelliğini kullanabilirsiniz.
Bu örnekte secondRunCommand, firstRunCommand komutundan sonra yürütülür.
{
"$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion":"1.0.0.0",
"resources":[
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"[concat(parameters('vmName'),'/firstRunCommand')]",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
],
"properties":{
"source":{
"script":"echo First: Hello World!"
},
"parameters":[
{
"name":"param1",
"value":"value1"
},
{
"name":"param2",
"value":"value2"
}
],
"timeoutInSeconds":20
}
},
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"[concat(parameters('vmName'),'/secondRunCommand')]",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'),'runcommands/firstRunCommand')]"
],
"properties":{
"source":{
"scriptUri":"http://github.com/myscript.ps1"
},
"timeoutInSeconds":60
}
}
]
}
Bilinen sorunları giderme
Desteklenmeyen Linux konuk aracısı sürümü
Sorunu: Linux Konuk Aracısı sürümü 2.4.0.1 veya önceki bir sürüm olduğunda yönetilen Çalıştırma Komutu ile bir VM dağıtırsanız, yönetilen Çalıştırma Komutu yürütülmüyor.
Neden: Yönetilen Çalıştırma Komutu'na yüklemek ve yürütmek için Linux Konuk Aracısı sürüm 2.4.0.2 veya üzeri gerekir.
Azaltma: Yönetilen Çalıştırma Komutunu kullanmadan önce Linux Konuk Aracısı'nın sürümünü 2.4.0.2 veya sonraki bir sürüme yükseltin. Alternatif olarak, önceden entegre edilmiş Linux Konuk Aracısı sürüm 2.4.0.2 veya üzeri olan bir görüntü kullanın.
Linux Konuk Aracısı sürümünü denetlemek için şunu çalıştırın:
az vm get-instance-view --resource-group $RGName$ --name $VMName$ --subscription $SUBSCRIPTION --query 'instanceView.vmAgent.vmAgentVersion'
Sonraki adımlar
Sanal makinenizde betikleri ve komutları uzaktan çalıştırmanın diğer yolları hakkında bilgi edinmek için bkz . Linux VM'nizde betik çalıştırma.