مشاركة عبر


نشر الأجهزة الظاهرية على جهاز Azure Stack Edge Pro GPU باستخدام Azure CLI وPython

ينطبق على: نعم ل Pro GPU SKUAzure Stack Edge Pro - GPUنعم ل Pro 2 SKUAzure Stack Edge Pro 2نعم ل Pro R SKUAzure Stack Edge Pro Rنعم ل Mini R SKUAzure Stack Edge Mini R

يمكنك إنشاء وإدارة الأجهزة الظاهرية (VMs) على جهاز Azure Stack Edge باستخدام واجهات برمجة التطبيقات. واجهات برمجة التطبيقات هذه هي واجهات برمجة تطبيقات Azure Resource Manager القياسية التي تسمى باستخدام نقطة نهاية Azure Stack Edge المحلية. توفر واجهات برمجة تطبيقات Azure Resource Manager طبقة إدارة متسقة تمكنك في هذه الحالة من إنشاء الأجهزة الظاهرية وتحديثها وحذفها في اشتراك محلي موجود على الجهاز. يمكنك الاتصال ب Azure Resource Manager الذي يعمل على Azure Stack Edge عبر Azure PowerShell cmdlets.

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

سير عمل توزيع الجهاز الظاهري

يتم توضيح سير عمل التوزيع في الرسم التخطيطي التالي.

سير عمل توزيع الجهاز الظاهري

الملخص عالي المستوى لسير عمل التوزيع كما يلي:

  1. الاتصال ب Azure Resource Manager
  2. إنشاء مجموعة موارد
  3. إنشاء حساب تخزين
  4. إضافة blob URI إلى ملف المضيفين
  5. تثبيت الشهادات
  6. تحميل VHD
  7. إنشاء أقراص مدارة من VHD
  8. إنشاء صورة جهاز ظاهري من القرص المدار للصورة
  9. إنشاء جهاز ظاهري باستخدام الموارد التي تم إنشاؤها مسبقا
  10. إنشاء شبكة افتراضية
  11. إنشاء VNIC باستخدام معرف الشبكة الفرعية VNet

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

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

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

  1. أكملت إعدادات الشبكة على جهاز Azure Stack Edge Pro كما هو موضح في الخطوة 1: تكوين جهاز Azure Stack Edge Pro.

  2. لقد قمت بتمكين واجهة شبكة للحوسبة. يتم استخدام عنوان IP لواجهة الشبكة هذا لإنشاء مفتاح ظاهري لتوزيع الجهاز الظاهري. ترشدك الخطوات التالية خلال العملية:

    1. انتقل إلى Compute. حدد واجهة الشبكة التي ستستخدمها لإنشاء مفتاح ظاهري.

      هام

      يمكنك تكوين منفذ واحد فقط للحساب.

    2. تمكين الحساب على واجهة الشبكة. يقوم Azure Stack Edge Pro بإنشاء وإدارة مفتاح ظاهري يتوافق مع واجهة الشبكة هذه.

  3. لقد قمت بإنشاء وتثبيت جميع الشهادات على جهاز Azure Stack Edge Pro وفي المخزن الموثوق به لعميلك. اتبع الإجراء الموضح في الخطوة 2: إنشاء الشهادات وتثبيتها.

  4. لقد أنشأت شهادة .cer مشفرة Base-64 (تنسيق PEM) لجهاز Azure Stack Edge Pro. تم تحميل هذه الشهادة بالفعل كسلسلة توقيع على الجهاز وتثبيتها في مخزن الجذر الموثوق به على العميل الخاص بك. هذه الشهادة مطلوبة أيضا بتنسيق pem ل Python للعمل على هذا العميل.

    تحويل هذه الشهادة إلى pem تنسيق باستخدام الأمر certutil . يجب تشغيل هذا الأمر في الدليل الذي يحتوي على الشهادة.

    certutil.exe <SourceCertificateName.cer> <DestinationCertificateName.pem>
    

    يظهر التالي نموذج استخدام الأمر:

    PS C:\Certificates> certutil.exe -encode aze-root.cer aze-root.pem
    Input Length = 2150
    Output Length = 3014
    CertUtil: -encode command completed successfully.
    PS C:\Certificates>
    

    كما ستضيف هذا pem إلى مخزن Python لاحقا.

  5. لقد قمت بتعيين عنوان IP للجهاز في صفحة الشبكة في واجهة مستخدم الويب المحلية للجهاز. أضف عنوان IP هذا إلى:

    • ملف المضيف على العميل،
    • تكوين خادم DNS

    هام

    نوصي بتعديل تكوين خادم DNS لتحليل اسم نقطة النهاية.

    1. ابدأ المفكرة كمسؤول (مطلوب امتيازات المسؤول لحفظ الملف)، ثم افتح ملف المضيفين الموجود في C:\Windows\System32\Drivers\etc.

      ملف مضيفي Windows Explorer

    2. أضف الإدخالات التالية إلى ملف المضيفين مع استبدال بالقيم المناسبة لجهازك:

      <Device IP> login.<appliance name>.<DNS domain>
      <Device IP> management.<appliance name>.<DNS domain>
      <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
      
    3. استخدم الصورة التالية كمرجع. احفظ ملف المضيفين.

      ملف المضيفين في المفكرة

  6. قم بتنزيل البرنامج النصي Python المستخدم في هذا الإجراء.

  7. إعداد بيئتك ل Azure CLI:

الخطوة 1: إعداد Azure CLI/Python على العميل

التحقق من ملف التعريف وتثبيت Azure CLI

  1. تثبيت Azure CLI على العميل الخاص بك. في هذا المثال، تم تثبيت Azure CLI 2.0.80. للتحقق من إصدار Azure CLI، قم بتشغيل الأمر az --version .

    فيما يلي نموذج إخراج من الأمر أعلاه:

    PS C:\windows\system32> az --version
    azure-cli                         2.0.80
    
    command-modules-nspkg              2.0.3
    core                              2.0.80
    nspkg                              3.0.4
    telemetry                          1.0.4
    Extensions:
    azure-cli-iot-ext                  0.7.1
    
    Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe'
    Extensions directory 'C:\.azure\cliextensions'
    
    Python (Windows) 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 02:47:15) [MSC v.1900 32 bit (Intel)]
    
    Legal docs and information: aka.ms/AzureCliLegal
    
    Your CLI is up-to-date.
    
    Please let us know how we are doing: https://aka.ms/clihats
    PS C:\windows\system32>
    

    إذا لم يكن لديك Azure CLI، فقم بتنزيل Azure CLI وتثبيته على Windows. يمكنك تشغيل Azure CLI باستخدام موجه أوامر Windows أو من خلال Windows PowerShell.

  2. دون ملاحظة عن موقع Python الخاص ب CLI. تحتاج إلى موقع Python لتحديد موقع مخزن شهادات الجذر الموثوق به ل Azure CLI.

  3. لتشغيل نموذج البرنامج النصي المستخدم في هذه المقالة، ستحتاج إلى إصدارات مكتبة Python التالية:

    azure-common==1.1.23
    azure-mgmt-resource==2.1.0
    azure-mgmt-network==2.7.0
    azure-mgmt-compute==5.0.0
    azure-mgmt-storage==1.5.0
    azure-storage-blob==1.2.0rc1
    haikunator
    msrestazure==0.6.2
    

    لتثبيت الإصدارات، قم بتشغيل الأمر التالي:

    .\python.exe -m pip install haikunator
    

    يظهر إخراج العينة التالي تثبيت Haikunator:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe -m pip install haikunator
    
    Collecting haikunator
      Downloading https://files.pythonhosted.org/packages/43/fa/130968f1a1bb1461c287b9ff35c630460801783243acda2cbf3a4c5964a5/haikunator-2.1.0-py2.py3-none-any.whl
    
    Installing collected packages: haikunator
    Successfully installed haikunator-2.1.0
    You are using pip version 10.0.1, however version 20.0.1 is available.
    You should consider upgrading using the 'python -m pip install --upgrade pip' command.
    
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> 
    

    يظهر إخراج العينة التالي تثبيت pip ل msrestazure:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe -m pip install msrestazure==0.6.2
    Requirement already satisfied: msrestazure==0.6.2 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (0.6.2)
    Requirement already satisfied: msrest<2.0.0,>=0.6.0 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from msrestazure==0.6.2) (0.6.10)
    === CUT ===========================  CUT ==================================
    Requirement already satisfied: cffi!=1.11.3,>=1.8 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from cryptography>=1.1.0->adal<2.0.0,>=0.6.0->msrestazure==0.6.2) (1.13.2)
    Requirement already satisfied: pycparser in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from cffi!=1.11.3,>=1.8->cryptography>=1.1.0->adal<2.0.0,>=0.6.0->msrestazure==0.6.2) (2.18)
    You are using pip version 10.0.1, however version 20.0.1 is available.
    You should consider upgrading using the 'python -m pip install --upgrade pip' command.
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

الثقة في شهادة جذر Azure Stack Edge Pro CA

  1. ابحث عن موقع الشهادة على جهازك. قد يختلف الموقع استنادا إلى المكان الذي قمت بتثبيته az cli. تشغيل Windows PowerShell كمسؤول. قم بالتبديل إلى المسار حيث az cli تم تثبيت Python: C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe.

    للحصول على موقع الشهادة، اكتب الأمر التالي:

    .\python -c "import certifi; print(certifi.where())"
    

    يقوم cmdlet بإرجاع موقع الشهادة، كما هو موضح أدناه:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python -c "import certifi; print(certifi.where())"
    C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

    دون ملاحظة عن هذا الموقع حيث ستستخدمه لاحقا - C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem

  2. ثق في شهادة جذر Azure Stack Edge Pro CA عن طريق إلحاقها بشهادة Python الموجودة. ستوفر المسار إلى المكان الذي حفظت فيه شهادة PEM في وقت سابق.

    $pemFile = "<Path to the pem format certificate>"
    

    مسار مثال سيكون "C:\VM-scripts\rootteam3device.pem"

    ثم اكتب سلسلة الأوامر التالية في Windows PowerShell:

    $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
        $root.Import($pemFile)
    
    Write-Host "Extracting required information from the cert file"
    $md5Hash    = (Get-FileHash -Path $pemFile -Algorithm MD5).Hash.ToLower()
    $sha1Hash   = (Get-FileHash -Path $pemFile -Algorithm SHA1).Hash.ToLower()
    $sha256Hash = (Get-FileHash -Path $pemFile -Algorithm SHA256).Hash.ToLower()
    
    $issuerEntry  = [string]::Format("# Issuer: {0}", $root.Issuer)
    $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject)
    $labelEntry   = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1])
    $serialEntry  = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower())
    $md5Entry = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash)
    $sha1Entry= [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash)
    $sha256Entry  = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash)
    $certText = (Get-Content -Path $pemFile -Raw).ToString().Replace("`r`n","`n")
    
    $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + `
    $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText
    
    Write-Host "Adding the certificate content to Python Cert store"
    Add-Content "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem" $rootCertEntry
    
    Write-Host "Python Cert store was updated to allow the Azure Stack Edge Pro CA root certificate"
    

الاتصال ب Azure Stack Edge Pro

  1. سجل بيئة Azure Stack Edge Pro الخاصة بك عن طريق تشغيل الأمر az cloud register .

    في بعض السيناريوهات، يتم توجيه الاتصال بالإنترنت الصادر المباشر من خلال وكيل أو جدار حماية، والذي يفرض اعتراض SSL. في هذه الحالات، az cloud register يمكن أن يفشل الأمر مع وجود خطأ مثل "غير قادر على الحصول على نقاط النهاية من السحابة". للتغلب على هذا الخطأ، قم بتعيين متغيرات البيئة التالية في Windows PowerShell:

    $ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 
    $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
    
  2. تعيين متغيرات البيئة للبرنامج النصي لنقطة نهاية Azure Resource Manager، والموقع حيث يتم إنشاء الموارد والمسار إلى مكان VHD المصدر. يتم إصلاح موقع الموارد عبر جميع أجهزة Azure Stack Edge Pro ويتم تعيينه إلى dbelocal. تحتاج أيضا إلى تحديد بادئات العنوان وعنوان IP الخاص. جميع متغيرات البيئة التالية هي قيم تستند إلى قيمك باستثناء AZURE_RESOURCE_LOCATION، والتي يجب ترميزها إلى "dbelocal".

    $ENV:ARM_ENDPOINT = "https://management.team3device.teatraining1.com"
    $ENV:AZURE_RESOURCE_LOCATION = "dbelocal"
    $ENV:VHD_FILE_PATH = "C:\Downloads\Ubuntu1604\Ubuntu13.vhd"
    $ENV:ADDRESS_PREFIXES = "5.5.0.0/16"
    $ENV:PRIVATE_IP_ADDRESS = "5.5.174.126"
    
  3. تسجيل البيئة الخاصة بك. استخدم المعلمات التالية عند تشغيل az cloud register:

    قيمة ‏‏الوصف مثال
    اسم البيئة اسم البيئة التي تحاول الاتصال بها أدخل اسما، على سبيل المثال، aze-environ
    نقطة نهاية Resource Manager عنوان URL هذا هو https://Management.<appliancename><dnsdomain>.
    للحصول على عنوان URL هذا، انتقل إلى صفحة الأجهزة في واجهة مستخدم الويب المحلية لجهازك.
    على سبيل المثال، https://management.team3device.teatraining1.com
    az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
    

    يظهر التالي نموذج استخدام الأمر أعلاه:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud register -n az-new-env --endpoint-resource-manager "https://management.team3device.teatraining1.com"
    
  4. تعيين البيئة النشطة باستخدام الأمر التالي:

    az cloud set -n <EnvironmentName>
    

    يظهر التالي نموذج استخدام الأمر أعلاه:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud set -n az-new-env
    Switched active cloud to 'az-new-env'.
    Use 'az login' to log in to this cloud.
    Use 'az account set' to set the active subscription.
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    
  5. سجل الدخول إلى بيئة Azure Stack Edge Pro باستخدام الأمر az login . يمكنك تسجيل الدخول إلى بيئة Azure Stack Edge Pro إما كمستخدم أو ككيان خدمة.

    اتبع هذه الخطوات لتسجيل الدخول كمستخدم:

    يمكنك إما تحديد اسم المستخدم وكلمة المرور مباشرة داخل az login الأمر، أو المصادقة باستخدام مستعرض. يجب القيام بهذا الأخير إذا تم تمكين مصادقة متعددة العوامل في حسابك.

    يوضح التالي استخدام عينة من az login:

    PS C:\Certificates> az login -u EdgeARMuser
    

    بعد استخدام أمر تسجيل الدخول، تتم مطالبتك بكلمة مرور. توفير كلمة مرور Azure Resource Manager.

    يظهر التالي عينة الإخراج لتسجيل الدخول الناجح بعد توفير كلمة المرور:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az login -u EdgeARMuser
    Password:
    [
         {
             "cloudName": "az-new-env",
             "id": "A4257FDE-B946-4E01-ADE7-674760B8D1A3",
             "isDefault": true,
             "name": "Default Provider Subscription",
             "state": "Enabled",
             "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
             "user": {
                 "name": "EdgeArmUser@localhost",
                 "type": "user"
             }
         }
    ]
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

    دون القيم id و tenantId لأن هذه القيم تتوافق مع معرف اشتراك Azure Resource Manager ومعرف مستأجر Azure Resource Manager على التوالي وسيتم استخدامها في الخطوة اللاحقة.

    يجب تعيين متغيرات البيئة التالية للعمل كخدمة أساسية:

    $ENV:ARM_TENANT_ID = "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    $ENV:ARM_CLIENT_ID = "cbd868c5-7207-431f-8d16-1cb144b50971"
    $ENV:ARM_CLIENT_SECRET - "<Your Azure Resource Manager password>"
    $ENV:ARM_SUBSCRIPTION_ID = "<Your subscription ID>"
    

    معرف عميل Azure Resource Manager الخاص بك مضمن في التعليمات البرمجية. معرف مستأجر Azure Resource Manager ومعرف اشتراك Azure Resource Manager موجودان في إخراج الأمر الذي az login قمت بتشغيله سابقا. سر عميل Azure Resource Manager هو كلمة مرور Azure Resource Manager التي قمت بتعيينها.

    لمزيد من المعلومات، راجع كلمة مرور Azure Resource Manager.

  6. غير ملف التعريف إلى الإصدار 2019-03-01-hybrid. لتغيير إصدار ملف التعريف، قم بتشغيل الأمر التالي:

    az cloud update --profile 2019-03-01-hybrid
    

    يوضح التالي استخدام عينة من az cloud update:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud update --profile 2019-03-01-hybrid
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

الخطوة 2: إنشاء جهاز ظاهري

يتم توفير برنامج نصي Python لك لإنشاء جهاز ظاهري. اعتمادا على ما إذا كنت قد سجلت الدخول كمستخدم أو تم تعيينه كخدمة أساسية، يأخذ البرنامج النصي الإدخال وفقا لذلك وينشئ جهازا ظاهريا.

  1. تشغيل البرنامج النصي Python من نفس الدليل حيث يتم تثبيت Python.
.\python.exe example_dbe_arguments_name_https.py cli
  1. عند تشغيل البرنامج النصي، يستغرق تحميل VHD من 20 إلى 30 دقيقة. لعرض تقدم عملية التحميل، يمكنك استخدام Azure Storage Explorer أو AzCopy.

    فيما يلي عينة إخراج لتشغيل ناجح للبرنامج النصي. يقوم البرنامج النصي بإنشاء كافة الموارد داخل مجموعة موارد، ويستخدم هذه الموارد لإنشاء جهاز ظاهري، وأخيرا يحذف مجموعة الموارد بما في ذلك جميع الموارد التي أنشأها.

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe example_dbe_arguments_name_https.py cli
    
    Create Resource Group
    Create a storage account
    Uploading to Azure Stack Storage as blob:
            ubuntu13.vhd
    
    Listing blobs...
            ubuntu13.vhd
    
    VM image resource id:
                /subscriptions/.../resourceGroups/azure-sample-group-virtual-machines118/providers/Microsoft.Compute/images/UbuntuImage
    
    Create Vnet
    Create Subnet
    Create NIC
    Creating Linux Virtual Machine
    Tag Virtual Machine
    Create (empty) managed Data Disk
    Get Virtual Machine by Name
    Attach Data Disk
    Detach Data Disk
    Deallocating the VM (to prepare for a disk resize)
    Update OS disk size
    Start VM
    Restart VM
    Stop VM
    
    List VMs in subscription
            VM: VmName118
    
    List VMs in resource group
            VM: VmName118
    
    Delete VM
    All example operations completed successfully!
    
    Delete Resource Group
    Deleted: azure-sample-group-virtual-machines118
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

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

أوامر Az CLI الشائعة لأجهزة Linux الظاهرية