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

ينطبق على:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure 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.

التوزيع ‏‏الإصدار‬
Linux (Ubuntu) 18.04 LTS
Linux: Red Hat Enterprise Linux 7.4, 7.5, 7.7

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

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

  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

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

أوامر cmdlets ل Azure Resource Manager