تمرين - التحكم في ترتيب توزيع الموارد

مكتمل

في هذا الجزء، تبدأ بتنفيذ بعض مهام الإعداد الأساسية. في Visual Studio Code، يمكنك توصيل جلسة عمل طرفية باشتراك Azure الذي تزوده بيئة اختبار Azure المعزولة الحرة. يتيح لك إجراء ذلك مصادقة الأوامر إلى Azure.

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

على الرغم من أن العمل مع الأجهزة الظاهرية مهمة شائعة، تكتشف أن مورد الجهاز الظاهري يتطلب مكونات الشبكة والتخزين التي يجب أن تكون موجودة قبل إنشاء الجهاز الظاهري. ترى كيف تمكِّنك البنية dependsOn من تعيين الترتيب الذي تُزوَد الموارد به.

الإعداد

يمكنك هنا فتح Visual Studio Code، وإنشاء جلسة عمل PowerShell، والاتصال باشتراك Azure الذي تزوده بيئة اختبار Azure المعزولة الحرة.

تحتاج إلى تنفيذ مهام الإعداد هذه مرةً واحدة خلال هذه الوحدة. يمكنك الرجوع إلى هذه الخطوات إذا سجلت الخروج أو انقطع اتصالك في تمرين لاحق.

فتح PowerShell في Visual Studio Code

  1. فتح Visual Studio Code.

  2. فتح نافذة المحطة الطرفية باستخدام القائمة Terminal.

  3. إذا كانت القائمة المنسدلة على يمين النافذة الطرفية تظهر pwsh، فلديك shell ملائمة للعمل من خلالها، ويمكنك التخطي إلى القسم التالي.

    Screenshot of Terminal window, terminal type.

  4. إذا لم تكن كذلك، حدد القائمة المنسدلة، واختر تحديد Default Shell .

  5. حدد pwsh.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. حدد + في الوحدة الطرفية لإنشاء وحدة طرفية جديدة مع pwsh مثلما هو الحال مع shell.

تسجيل الدخول إلى Azure

  1. شغَّل Connect-AzAccount لتسجيل الدخول إلى حسابك.

    Connect-AzAccount
    

    تظهر نافذة متصفح.

  2. حدد الحساب الذي استخدمته لتنشيط بيئة الاختبار المعزولة وإغلاق نافذة المتصفح عندما يُطلب منك ذلك.

تعيين الاشتراك النشط

  1. شغَّل Get-AzSubscription للحصول على معرف الاشتراك لبيئة الاختبار المعزولة.

    Get-AzSubscription
    

    ابحث عن Concierge Subscription وانسخ العمود الثاني. سيبدو مثل cf49fbbc- 217c-4eb6-9eb5-a6a6c68295a0.

  2. شغَّل Set-AzContext لتغيير اشتراكك النشط في Concierge Subscription.

    إشعار

    تأكد من استبدال {Your subscription ID} مع معرف Concierge Subscription الذي حصلت عليه في الأمر الأخير.

    $subscription = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $subscription
    

تعيين مجموعة الموارد الافتراضية

عادةً، عند تشغيل أمر Azure CLI، تحتاج إلى تحديد مجموعة الموارد.

تزودك بيئة الاختبار المعزولة بمجموعة الموارد الافتراضية. لتسهيل تشغيل أوامر Azure CLI التالية، يمكنك هنا تعيين مجموعة الموارد الافتراضية.

شغَّل الأمر Set-AzDefault cmdlet لتعيين مجموعة الموارد الافتراضية.

Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>

إشعار

عادةً، عندما تستخدم PowerShell لتوزيع الموارد على Azure، تحتاج إلى تحديد مجموعة موارد. أنت تتجاوز هذا المطلب عن طريق تعيين سياق التوزيع خاصتك، باستخدام Set-AzDefault.

ما هو في توزيع جهاز ظاهري نموذجي

عند توزيع جهاز ظاهري، ضع في اعتبارك أن هناك العديد من الموارد التي يجب توزيعها معها حتى يعمل الجهاز الظاهري.

فيما يلي ملخص موجز لأنواع الموارد التي يجب توزيعها عادةً مع جهاز ظاهري:

  • Microsoft.Storage/storageAccounts. يتيح حساب التخزين مساحة على القرص لنظام التشغيل والملفات.
  • Microsoft.Network/publicIPAddresses. يمكِّنك عنوان IP العام من الاتصال بالجهاز الظاهري من الإنترنت.
  • Microsoft.Network/networkSecurityGroups. تحتوي مجموعة أمان الشبكة على قواعد للتعامل مع حركة المرور الواردة والصادرة إلى شبكتك الظاهرية.
  • Microsoft.Network/virtualNetworks. يجب وضع جهازك الظاهري في شبكة ظاهرية. يتطلب هذا المورد توزيع مجموعة أمان الشبكة قبلها.
  • Microsoft.Network/networkInterfaces. يعتمد هذا المورد على موردين آخرين: عنوان IP العام والشبكة الظاهرية.
  • Microsoft.Compute/virtualMachines. الجهاز الظاهري هو المورد الأساسي الذي تحتاج لتوزيعه. يعتمد هذا الجهاز على موارد مختلفة: حساب التخزين وواجهات الشبكة.

توزيع جهاز ظاهري يعمل بنظام Linux

يمكنك هنا تنزيل قالب Azure Resource Manager (ARM) من مستودع GitHub الذي نزودك به. يزود القالب على جهاز ظاهري يعمل بنظام Linux وجميع الموارد الضرورية لتشغيله.

  1. شغَّل الأمر curl التالي لتنزيل قالب ARM:

    curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
    
  2. شغَّل ConvertTo-SecureString cmdlet، وعيِّن النتائج إلى متغيّر PowerShell يُسمى $secure :

    $secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
    

    الآن لديك نسخة مشفرة من كلمة المرور خاصتك حتى يمكنك تمرير البرنامج النصي للتوزيع بعد ذلك.

  3. شغَّل الأمر New-AzResourceGroupDeployment لتوزيع القالب:

    New-AzResourceGroupDeployment `
      -TemplateFile "./azuredeploy.json" `
      -adminUsername "azureuser" `
      -vmName "vm1" `
      -adminPasswordOrKey $secure
    

    قد يستغرق الأمر بضع دقائق لتشغيله. أثناء تشغيل الأمر، يمكنك فحص القالب ARM من علامة تبويب متصفح منفصلة إذا كنت ترغب في ذلك.

    لاحظ تبعيات المورد عن طريق البحث عن المفتاح dependsOn. على سبيل المثال، يعتمد مورد الجهاز الظاهري على واجهة الشبكة:

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

تحقق من التوزيع

تحقق من أن الجهاز الظاهري مزود وأنه قابل للاتصال عبر SSH. للقيام بذلك:

  1. شغَّل الأمر Invoke-Expression للاتصال بجهاز ظاهري عبر SSH:

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    عند مطالبتك، أدخِل yes لمتابعة الاتصال. ثم أدخِل كلمة مرور المسؤول، insecurepassword123!.

    هام

    حافظ على أمان كلمات المرور عمليًا. يمكنك أيضًا استخدام مصادقة المفتاح العام، والتي عادةً ما تكون أكثر أمانًا من استخدام كلمات المرور.

  2. من اتصال SSH خاصتك بالجهاز الظاهري، شغَّل hostname لطباعة اسم مضيف الجهاز الظاهري:

    hostname
    

    يمكنك أن ترى اسم المضيف الداخلي للجهاز الظاهري، vm1:

    vm1
    
  3. شغَّل exit لمغادرة جلسة عمل SSH خاصتك.

    exit
    

تهانينا، تم بنجاح توزيع جهاز ظاهري يعمل بنظام Linux باستخدام قالب ARM. الجهاز الظاهري هو نوع مورد شائع يتضمن موارد تابعة.

الإعداد

يمكنك هنا فتح Visual Studio Code، وإنشاء جلسة عمل طرفية، والاتصال باشتراك Azure الذي تزوده بيئة اختبار Azure المعزولة الحرة.

تحتاج إلى تنفيذ مهام الإعداد هذه مرةً واحدة خلال هذه الوحدة. يمكنك الرجوع إلى هذه الخطوات إذا سجلت الخروج أو انقطع اتصالك في تمرين لاحق.

افتح shell في Visual Studio Code

  1. فتح Visual Studio Code.

  2. فتح نافذة المحطة الطرفية باستخدام القائمة Terminal.

  3. إذا كانت القائمة المنسدلة تعرض shell المفضلة لديك (bash أو zsh، على سبيل المثال)، فيمكنك التخطي والانتقال إلى القسم التالي.

  4. إذا لم تكن كذلك، حدد القائمة المنسدلة، واختر تحديد Default Shell .

  5. حدد نوع shell التي تريدها.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. حدد + في المحطة الطرفية لإنشاء محطة طرفية جديدة مع نوع shell الذي حددته.

تسجيل الدخول إلى Azure

  1. من المحطة الطرفية، تشغيل az login:

    az login
    

    تظهر نافذة متصفح.

  2. حدد الحساب الذي استخدمته لتنشيط بيئة الاختبار المعزولة وأغلِق نافذة المتصفح عندما يُطلب منك ذلك.

تعيين الاشتراك النشط

شغَّل الأمر التالي az account set لتعيين بيئة الاختبار المعزولة من Azure باعتبارها اشتراكك النشط:

az account set -s "Concierge Subscription"

إشعار

إذا فشل الأمر، شغَّل az account list --refresh --all، ثم أعد تشغيل الأمر az account set.

تعيين مجموعة الموارد الافتراضية

عادةً، عند تشغيل أمر Azure CLI، تحتاج إلى تحديد مجموعة الموارد.

تزودك بيئة الاختبار المعزولة بمجموعة الموارد الافتراضية. لتسهيل تشغيل أوامر Azure CLI التالية، يمكنك هنا تعيين مجموعة الموارد الافتراضية.

تشغيل الأمر az configure التالي لتعيين مجموعة الموارد الافتراضية:

az configure --defaults group=<rgn>resource group name</rgn>

ما هو في توزيع جهاز ظاهري نموذجي

عند توزيع جهاز ظاهري، ضع في اعتبارك أن هناك العديد من الموارد التي يجب توزيعها معها حتى يعمل الجهاز الظاهري.

فيما يلي ملخص موجز لأنواع الموارد التي يجب توزيعها عادةً مع جهاز ظاهري:

  • Microsoft.Storage/storageAccounts. يتيح حساب التخزين مساحة على القرص لنظام التشغيل والملفات.
  • Microsoft.Network/publicIPAddresses. يمكِّنك عنوان IP العام من الاتصال بالجهاز الظاهري من الإنترنت.
  • Microsoft.Network/networkSecurityGroups. تحتوي مجموعة أمان الشبكة على قواعد للتعامل مع حركة المرور الواردة والصادرة إلى شبكتك الظاهرية.
  • Microsoft.Network/virtualNetworks. يجب وضع جهازك الظاهري في شبكة ظاهرية. يتطلب هذا المورد توزيع مجموعة أمان الشبكة قبلها.
  • Microsoft.Network/networkInterfaces. يعتمد هذا المورد على موردين آخرين: عنوان IP العام والشبكة الظاهرية.
  • Microsoft.Compute/virtualMachines. الجهاز الظاهري هو المورد الأساسي الذي تحتاج لتوزيعه. يعتمد هذا الجهاز على موارد مختلفة: حساب التخزين وواجهات الشبكة.

توزيع جهاز ظاهري يعمل بنظام Linux

يمكنك هنا تنزيل قالب Azure Resource Manager (ARM) من مستودع GitHub الذي نزودك به. يزود القالب على جهاز ظاهري يعمل بنظام Linux وجميع الموارد الضرورية لتشغيله.

  1. شغَّل الأمر wget التالي لتنزيل قالب ARM:

    wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
    

    إذا لم يكن wget مُثبت لديك، يمكنك تشغيل هذا curl الأمر:

    curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
    
  2. تشغيل az deployment group create الأمر لتوزيع القالب:

    az deployment group create \
      --template-file azuredeploy.json \
      --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
    

    قد يستغرق الأمر بضع دقائق لتشغيله. أثناء تشغيل الأمر، يمكنك فحص القالب ARM من علامة تبويب متصفح منفصلة إذا كنت ترغب في ذلك.

    لاحظ تبعيات المورد عن طريق البحث عن المفتاح dependsOn. على سبيل المثال، يعتمد مورد الجهاز الظاهري على واجهة الشبكة:

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

تحقق من التوزيع

تحقق من أن الجهاز الظاهري مزود وأنه قابل للاتصال عبر SSH. للقيام بذلك:

  1. شغَّل الأمر az deployment group list التالي لسرد مجموعات التوزيع في اشتراكك:

    az deployment group list --output table
    

    يمكنك أن ترى مجموعة توزيع واحدة، تُسمى azuredeploy:

    Name         ResourceGroup                               State      Timestamp                         Mode
    -----------  ------------------------------------------  ---------  --------------------------------  -----------
    azuredeploy  learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8  Succeeded  2020-11-24T17:55:39.762517+00:00  Incremental
    
  2. شغَّل الأمر az deployment group show التالي لإظهار الأمر SSH الذي يمكنك استخدامه للاتصال بالجهاز الظاهري:

    az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv
    

    يعرِّف قالب ARM هذه الخاصية في القسم output. إليك مثال:

    ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
    
  3. شغَّل الأمر مرةً أخرى، هذه المرة باستخدام بناء الجملة $() لتنفيذ الأمر SSH:

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    عند مطالبتك، أدخِل yes لمتابعة الاتصال. ثم أدخِل كلمة مرور المسؤول، insecurepassword123!.

    هام

    حافظ على أمان كلمات المرور عمليًا. يمكنك أيضًا استخدام مصادقة المفتاح العام، والتي عادةً ما تكون أكثر أمانًا من استخدام كلمات المرور.

  4. من اتصال SSH خاصتك بالجهاز الظاهري، شغَّل hostname لطباعة اسم مضيف الجهاز الظاهري:

    hostname
    

    يمكنك أن ترى اسم المضيف الداخلي للجهاز الظاهري، vm1:

    vm1
    
  5. شغَّل exit لمغادرة جلسة عمل SSH خاصتك.

    exit
    

تهانينا، تم بنجاح توزيع جهاز ظاهري يعمل بنظام Linux باستخدام قالب ARM. الجهاز الظاهري هو نوع مورد شائع يتضمن موارد تابعة.