نشر ملحق البرنامج النصي المخصص على الأجهزة الظاهرية التي تعمل على جهاز Azure Stack Edge Pro

ينطبق على:Yes for Pro GPU SKU Azure Stack Edge Pro - GPUAzureYes for Pro 2 SKU Stack Edge Pro 2AzureYes for Pro R SKU Stack Edge Pro RAzureYes for Mini R SKU Stack Edge Mini R

يقوم ملحق البرنامج النصي المخصص بتنزيل البرامج النصية أو الأوامر وتشغيلها على الأجهزة الظاهرية التي تعمل على أجهزة Azure Stack Edge Pro. توضح هذه المقالة كيفية تثبيت ملحق البرنامج النصي المخصص وتشغيله باستخدام قالب Azure Resource Manager.

حول إضافة البرنامج النصي المخصص

يعد ملحق البرنامج النصي المخصص مفيدا لتكوين ما بعد النشر أو تثبيت البرنامج أو أي مهمة تكوين/إدارة أخرى. يمكنك تنزيل البرامج النصية من Azure Storage أو موقع إنترنت آخر يمكن الوصول إليه، أو يمكنك توفير برامج نصية أو أوامر إلى وقت تشغيل الملحق.

يتكامل ملحق البرنامج النصي المخصص مع قوالب Azure Resource Manager. يمكنك أيضا تشغيله باستخدام Azure CLI أو PowerShell أو واجهة برمجة تطبيقات REST للأجهزة الظاهرية Azure.

نظام التشغيل لملحق البرنامج النصي المخصص

نظام التشغيل المدعوم لملحق البرنامج النصي المخصص على Windows

سيتم تشغيل ملحق البرنامج النصي المخصص Windows على أنظمة التشغيل التالية. قد تعمل إصدارات أخرى ولكن لم يتم اختبارها داخليا على الأجهزة الظاهرية التي تعمل على أجهزة Azure Stack Edge Pro.

التوزيع إصدار
Windows Server 2019 الذاكرة الأساسية
Windows Server 2016 الذاكرة الأساسية

نظام التشغيل المدعوم لملحق البرنامج النصي المخصص على Linux

سيتم تشغيل ملحق البرنامج النصي المخصص لنظام التشغيل Linux على أنظمة التشغيل التالية. قد تعمل إصدارات أخرى ولكن لم يتم اختبارها داخليا على الأجهزة الظاهرية التي تعمل على أجهزة Azure Stack Edge Pro.

التوزيع إصدار
لينكس: أوبونتو 18.04 LTS
لينكس: ريد هات إنتربرايز لينكس 7.4, 7.5, 7.7

المتطلبات الأساسية

  1. قم بتنزيل قوالب VM وملفات المعلمات إلى جهاز العميل الخاص بك. قم بفك ضغط التنزيل إلى دليل ستستخدمه كدليل عمل.

  2. يجب أن يكون لديك جهاز ظاهري تم إنشاؤه ونشره على جهازك. لإنشاء أجهزة ظاهرية، اتبع كافة الخطوات الواردة في نشر الجهاز الظاهري على Azure Stack Edge Pro باستخدام القوالب.

    إذا كنت بحاجة إلى تنزيل برنامج نصي مثل من GitHub أو Azure Storage خارجيا، أثناء تكوين شبكة الحوسبة، فقم بتمكين المنفذ المتصل بالإنترنت للحوسبة. هذا يسمح لك بتنزيل البرنامج النصي.

    في المثال التالي، تم توصيل المنفذ 2 بالإنترنت وتم استخدامه لتمكين شبكة الحوسبة. إذا حددت أن Kubernetes غير مطلوب في الخطوة السابقة، فيمكنك تخطي عنوان IP لعقدة Kubernetes وتعيين IP للخدمة الخارجية.

    Screenshot of the Compute pane for an Azure Stack Edge device. Compute settings for Port 2 are highlighted.

تثبيت ملحق البرنامج النصي المخصص

اعتمادا على نظام التشغيل الخاص بالجهاز الظاهري الخاص بك ، يمكنك تثبيت ملحق البرنامج النصي المخصص Windows أو لنظام التشغيل Linux.

ملحق برنامج نصي مخصص Windows

لنشر ملحق البرنامج النصي المخصص Windows لجهاز ظاهري يعمل على جهازك، قم بتحرير ملف المعلمات addCSExtWindowsVM.parameters.json ثم قم بنشر القالب addCSextensiontoVM.json.

تحرير ملف المعلمات

يأخذ الملف addCSExtWindowsVM.parameters.json المعلمات التالية:

{
    "$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>"
            }
        }
    }
}

أدخل اسم الجهاز الظاهري واسم الملحق والأمر الذي تريد تنفيذه.

إليك نموذج ملف المعلمة الذي تم استخدامه في هذه المقالة.

{
    "$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"
            }
        }
    }
}

نشر القالب

نشر القالب addCSextensiontoVM.json. ينشر هذا القالب امتدادا إلى جهاز ظاهري موجود. تشغيل الأمر التالي:

$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>"

ملاحظة

يعد نشر الإضافة مهمة طويلة الأمد وتستغرق حوالي 10 دقائق لإكمالها.

إليك عينة من المخرجات:

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>

تتبع النشر

للتحقق من حالة نشر ملحقات جهاز ظاهري معين، قم بتشغيل الأمر التالي:

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

إليك عينة من المخرجات:

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/947b3cfd-7a1b-4a90-7cc5-e52caf221332/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>

ملاحظة

عند اكتمال النشر، ProvisioningState تتغير التغييرات إلى Succeeded.

يتم تسجيل إخراج الامتداد إلى الملفات الموجودة ضمن المجلد التالي على الجهاز الظاهري الهدف.

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

يتم تنزيل الملفات المحددة في المجلد التالي على الجهاز الظاهري الهدف.

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

حيث n هو عدد صحيح عشري ، والذي قد يتغير بين عمليات تنفيذ الامتداد. تتطابق القيمة 1.* مع القيمة الفعلية الحالية typeHandlerVersion للإضافة. على سبيل المثال، كان الدليل الفعلي في هذه الحالة .C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.9\Downloads\0

في هذه الحالة، كان الأمر المطلوب تنفيذه للملحق المخصص هو: md C:\\Users\\Public\\Documents\\test. عند تثبيت الملحق بنجاح، يمكنك التحقق من إنشاء الدليل في الجهاز الظاهري في المسار المحدد في الأمر.

ملحق البرنامج النصي المخصص لنظام التشغيل Linux

لنشر ملحق البرنامج النصي المخصص Windows لجهاز ظاهري يعمل على جهازك، قم بتحرير ملف المعلمات addCSExtLinuxVM.parameters.json ثم قم بنشر القالب addCSExtensiontoVM.json.

تحرير ملف المعلمات

يأخذ الملف addCSExtLinuxVM.parameters.json المعلمات التالية:

{
    "$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>"
            }
        }
    }
}

أدخل اسم الجهاز الظاهري واسم الملحق والأمر الذي تريد تنفيذه.

فيما يلي نموذج ملف معلمة تم استخدامه في هذه المقالة:

$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>"

ملاحظة

يعد نشر الإضافة مهمة طويلة الأمد وتستغرق حوالي 10 دقائق لإكمالها.

إليك عينة من المخرجات:

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 تم تعيين لإنشاء ملف file2.txt في /home/Administrator الدليل ومحتويات الملف هي some text. في هذه الحالة، يمكنك التحقق من إنشاء الملف في المسار المحدد.

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

تتبع حالة النشر

نشر القالب هو مهمة طويلة الأمد. للتحقق من حالة نشر ملحقات جهاز ظاهري معين، افتح جلسة عمل PowerShell أخرى (قم بتشغيلها كمسؤول). شغِّل الأمر التالي:

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

إليك عينة من المخرجات:

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/947b3cfd-7a1b-4a90-7cc5-e52caf221332/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>

ملاحظة

عند اكتمال النشر، ProvisioningState تتغير التغييرات إلى Succeeded.

يتم تسجيل إخراج تنفيذ الملحق إلى الملف التالي: /var/lib/waagent/custom-script/download/0/.

إزالة ملحق البرنامج النصي المخصص

لإزالة ملحق البرنامج النصي المخصص، استخدم الأمر التالي:

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

إليك عينة من المخرجات:

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

الخطوات التالية

Azure Resource Manager cmdlets