Azure Stack Edge Pro cihazınızda çalışan VM'lerde Özel Betik Uzantısı dağıtma

ŞUNLAR IÇIN GEÇERLIDIR:Pro GPU SKU için Evet Azure Stack Edge Pro - GPUPro 2 SKU için EvetAzure Stack Edge Pro 2Pro R SKU için EvetAzure Stack Edge Pro RMini R SKU için EvetAzure Stack Edge Mini R

Özel Betik Uzantısı, Azure Stack Edge Pro cihazlarınızda çalışan sanal makinelerde betikleri veya komutları indirir ve çalıştırır. Bu makalede, Bir Azure Resource Manager şablonu kullanarak Özel Betik Uzantısı'nı yükleme ve çalıştırma işlemi ayrıntılı olarak açıklanmaktadır.

Özel komut dosyası uzantısı hakkında

Özel Betik Uzantısı dağıtım sonrası yapılandırma, yazılım yüklemesi veya diğer yapılandırma/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 betikler veya komutlar sağlayabilirsiniz.

Özel Betik Uzantısı, Azure Resource Manager şablonlarına entegre olur. Azure CLI, PowerShell veya Azure Sanal Makineler REST API'sini kullanarak da çalıştırabilirsiniz.

Özel Betik Uzantısı için İşletim Sistemi

Windows için Özel Script Uzantısı destekleyen işletim sistemi

Windows için Özel Betik Uzantısı aşağıdaki işletim sisteminde çalışır. Diğer sürümler çalışabilir ancak Azure Stack Edge Pro cihazlarında çalışan VM'lerde şirket içinde test edilmedi.

Dağıtım Sürüm
Windows Server 2019 Temel
Windows Server 2016 Temel

Linux'ta Özel Betik Uzantısı için desteklenen işletim sistemi

Linux için Özel Betik Uzantısı aşağıdaki işletim sistemleri üzerinde çalışır. Diğer sürümler çalışabilir ancak Azure Stack Edge Pro cihazlarında çalışan VM'lerde şirket içinde test edilmedi.

Dağıtım Sürüm
Linux: Ubuntu 18.04 LTS
Linux: Red Hat Enterprise Linux 7.4, 7.5, 7.7

Önkoşullar

  1. VM şablonlarını ve parametre dosyalarını istemci makinenize indirin. İndirme dosyasını, çalışma dizini olarak kullanacağınız bir dizine açın.

  2. Cihazınızda oluşturulan ve dağıtılan bir VM'niz olmalıdır. VM'ler oluşturmak için Şablonları kullanarak Azure Stack Edge Pro'nuzda VM dağıtma sayfasındaki tüm adımları izleyin.

    İşlem ağını yapılandırırken GitHub veya Azure Depolama gibi bir betiği dışarıdan indirmeniz gerekiyorsa işlem için İnternet'e bağlı bağlantı noktasını etkinleştirin. Bu işlem, betiği indirmenizi sağlar.

    Aşağıdaki örnekte 2 numaralı bağlantı noktası İnternet'e bağlanmıştı ve işlem ağını etkinleştirmek için kullanılmıştır. Önceki adımda Kubernetes'in gerekli olmadığını belirlediyseniz Kubernetes düğüm IP'sini ve dış hizmet IP atamasını atlayabilirsiniz.

    Azure Stack Edge cihazının İşlem bölmesinin ekran görüntüsü. Bağlantı noktası 2 için işlem ayarları vurgulanır.

Özel Betik Uzantısını Yükleme

VM'nizin işletim sistemine bağlı olarak, Windows veya Linux için Özel Betik Uzantısı'nı yükleyebilirsiniz.

Windows için Özel Script Uzantısı

Özel Betik Uzantısını Windows için bir cihazda çalışan VM'e dağıtmak için parametre dosyasını addCSExtWindowsVM.parameters.json düzenleyin ve ardından şablonu addCSextensiontoVM.json dağıtın.

Parametre dosyasını düzenle

Dosya addCSExtWindowsVM.parameters.json aşağıdaki parametreleri alır:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "value": "<Name of VM>" 
        },
        "extensionName": {
            "value": "<Name of extension>" 
        },
        "publisher": {
            "value": "Microsoft.Compute" 
        },
        "type": {
            "value": "CustomScriptExtension" 
        },
        "typeHandlerVersion": {
            "value": "1.10" 
        },
        "settings": {
            "value": {
                "commandToExecute" : "<Command to execute>"
            }
        }
    }
}

VM adınızı, uzantının adını ve yürütmek istediğiniz komutu belirtin.

Bu makalede kullanılan örnek parametre dosyası aşağıda verilmişti.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "value": "VM5" 
        },
        "extensionName": {
            "value": "CustomScriptExtension" 
        },
        "publisher": {
            "value": "Microsoft.Compute" 
        },
        "type": {
            "value": "CustomScriptExtension" 
        },
        "typeHandlerVersion": {
            "value": "1.10" 
        },
        "settings": {
            "value": {
                "commandToExecute" : "md C:\\Users\\Public\\Documents\\test"
            }
        }
    }
}

Şablon dağıtma

şablonunu addCSextensiontoVM.jsondağıtın. Bu şablon uzantıyı mevcut bir VM'ye dağıtır. Aşağıdaki komutu çalıştırın:

$templateFile = "<Path to addCSExtensiontoVM.json file>"
$templateParameterFile = "<Path to addCSExtWindowsVM.parameters.json file>"
$RGName = "<Resource group name>"
New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "<Deployment name>"

Not

Uzantı dağıtımı uzun süre çalışan bir iştir ve tamamlanması yaklaşık 10 dakika sürer.

Aşağıda örnek bir çıkış verilmişti:

PS C:\WINDOWS\system32> $templateFile = "C:\12-09-2020\ExtensionTemplates\addCSExtensiontoVM.json"
PS C:\WINDOWS\system32> $templateParameterFile = "C:\12-09-2020\ExtensionTemplates\addCSExtWindowsVM.parameters.json"
PS C:\WINDOWS\system32> $RGName = "myasegpuvm1"
PS C:\WINDOWS\system32> New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "deployment7"

DeploymentName          : deployment7
ResourceGroupName       : myasegpuvm1
ProvisioningState       : Succeeded
Timestamp               : 12/17/2020 10:07:44 PM
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          vmName           String                     VM5
                          extensionName    String                     CustomScriptExtension
                          publisher        String                     Microsoft.Compute
                          type             String                     CustomScriptExtension
                          typeHandlerVersion  String                     1.10
                          settings         Object                     {
                            "commandToExecute": "md C:\\Users\\Public\\Documents\\test"
                          }

Outputs                 :
DeploymentDebugLogLevel :

PS C:\WINDOWS\system32>

Dağıtımı izleme

Belirli bir VM için uzantıların dağıtım durumunu denetlemek için aşağıdaki komutu çalıştırın:

Get-AzureRmVMExtension -ResourceGroupName <Name of resource group> -VMName <Name of VM> -Name <Name of the extension>

Aşağıda örnek bir çıkış verilmişti:

PS C:\WINDOWS\system32> Get-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM5 -Name CustomScriptExtension

ResourceGroupName       : myasegpuvm1
VMName                  : VM5
Name                    : CustomScriptExtension
Location                : dbelocal
Etag                    : null
Publisher               : Microsoft.Compute
ExtensionType           : CustomScriptExtension
TypeHandlerVersion      : 1.10
Id                      : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myasegpuvm1/providers/Microsoft.Compute/virtualMachines/VM5/extensions/CustomScriptExtension
PublicSettings          : {
                            "commandToExecute": "md C:\\Users\\Public\\Documents\\test"
                          }
ProtectedSettings       :
ProvisioningState       : Creating
Statuses                :
SubStatuses             :
AutoUpgradeMinorVersion : True
ForceUpdateTag          :

PS C:\WINDOWS\system32>

Not

Dağıtım tamamlandığında, ProvisioningState, Succeeded olarak değişir.

Uzantı çıkışı, hedef sanal makinedeki aşağıdaki klasör altında bulunan dosyalara kaydedilir.

C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension

Belirtilen dosyalar hedef sanal makinede aşağıdaki klasöre indirilir.

C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>

burada n , uzantının yürütmeleri arasında değişebilen ondalık bir tamsayıdır. 1.* değeri uzantının gerçek, geçerli typeHandlerVersion değeriyle eşleşir. Örneğin, bu örnekteki gerçek dizin şeklindedir C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0.

Bu örnekte, özel uzantı için yürütülecek komut: md C:\\Users\\Public\\Documents\\test. Uzantı başarıyla yüklendiğinde, dizinin komutundaki belirtilen yolda VM'de oluşturulduğunu doğrulayabilirsiniz.

Linux için Özel Betik Uzantısı

Cihazınızda çalışan Windows tabanlı bir VM için Özel Betik Uzantısı dağıtmak amacıyla addCSExtLinuxVM.parameters.json parametre dosyasını düzenleyin ve ardından addCSExtensiontoVM.json şablonu dağıtın.

Parametre dosyasını düzenle

Dosya addCSExtLinuxVM.parameters.json aşağıdaki parametreleri alır:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "value": "<Name of your VM>" 
        },
        "extensionName": {
            "value": "<Name of your extension>" 
        },
        "publisher": {
            "value": "Microsoft.Azure.Extensions" 
        },
        "type": {
            "value": "CustomScript" 
        },
        "typeHandlerVersion": {
            "value": "2.0" 
        },
        "settings": {
            "value": {
                "commandToExecute" : "<Command to execute>"
            }
        }
    }
}

VM adınızı, uzantının adını ve yürütmek istediğiniz komutu belirtin.

Bu makalede kullanılan örnek parametre dosyası aşağıda verilmişti:

$templateFile = "<Path to addCSExtensionToVM.json file>"
$templateParameterFile = "<Path to addCSExtLinuxVM.parameters.json file>"
$RGName = "<Resource group name>"
New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "<Deployment name>"

Not

Uzantı dağıtımı uzun süre çalışan bir iştir ve tamamlanması yaklaşık 10 dakika sürer.

Aşağıda örnek bir çıkış verilmişti:

PS C:\WINDOWS\system32> $templateFile = "C:\12-09-2020\ExtensionTemplates\addCSExtensionToVM.json"
PS C:\WINDOWS\system32> $templateParameterFile = "C:\12-09-2020\ExtensionTemplates\addCSExtLinuxVM.parameters.json"
PS C:\WINDOWS\system32> $RGName = "myasegpuvm1"
PS C:\WINDOWS\system32> New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "deployment99"

DeploymentName          : deployment99
ResourceGroupName       : myasegpuvm1
ProvisioningState       : Succeeded
Timestamp               : 12/18/2020 1:55:23 AM
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          vmName           String                     VM6
                          extensionName    String                     LinuxCustomScriptExtension
                          publisher        String                     Microsoft.Azure.Extensions
                          type             String                     CustomScript
                          typeHandlerVersion  String                     2.0
                          settings         Object                     {
                            "commandToExecute": "sudo echo 'some text' >> /home/Administrator/file2.txt"
                          }

Outputs                 :
DeploymentDebugLogLevel :

PS C:\WINDOWS\system32>

commandToExecute, /home/Administrator dizininde bir file2.txt dosyası oluşturmak için ayarlanmıştır ve dosyanın içeriği some text şeklindedir. Bu durumda, dosyanın belirtilen yolda oluşturulduğunu doğrulayabilirsiniz.

Administrator@VM6:~$ dir
file2.txt
Administrator@VM6:~$ cat file2.txt
some text
Administrator@VM6:

Dağıtım durumunu izleme

Şablon dağıtımı uzun süre çalışan bir iştir. Belirli bir VM'nin uzantılarının dağıtım durumunu denetlemek için başka bir PowerShell oturumu açın (yönetici olarak çalıştırın). Aşağıdaki komutu çalıştırın:

Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName <VM Name> -Name <Extension Name>

Aşağıda örnek bir çıkış verilmişti:

PS C:\WINDOWS\system32> Get-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM5 -Name CustomScriptExtension

ResourceGroupName       : myasegpuvm1
VMName                  : VM5
Name                    : CustomScriptExtension
Location                : dbelocal
Etag                    : null
Publisher               : Microsoft.Compute
ExtensionType           : CustomScriptExtension
TypeHandlerVersion      : 1.10
Id                      : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myasegpuvm1/providers/Microsoft.Compute/virtualMachines/VM5/extensions/CustomScriptExtension
PublicSettings          : {
                            "commandToExecute": "md C:\\Users\\Public\\Documents\\test"
                          }
ProtectedSettings       :
ProvisioningState       : Creating
Statuses                :
SubStatuses             :
AutoUpgradeMinorVersion : True
ForceUpdateTag          :

PS C:\WINDOWS\system32>

Not

Dağıtım tamamlandığında, olarak ProvisioningState değişir Succeeded.

Uzantı yürütme çıkışı şu dosyaya kaydedilir: /var/lib/waagent/custom-script/download/0/.

Özel Betik Uzantısını Kaldır

Özel Betik Uzantısını kaldırmak için aşağıdaki komutu kullanın:

Remove-AzureRmVMExtension -ResourceGroupName <Resource group name> -VMName <VM name> -Name <Extension name>

Aşağıda örnek bir çıkış verilmişti:

PS C:\WINDOWS\system32> Remove-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM6 -Name LinuxCustomScriptExtension
Virtual machine extension removal operation
This cmdlet will remove the specified virtual machine extension. Do you want to continue?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Yes
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK

Sonraki adımlar

Azure Resource Manager cmdlet'leri