إنشاء مجموعات موارد Azure ونشرها من خلال Visual Studio

إشعار

مشروع مجموعة موارد Azure الآن في دعم موسع، ما يعني أننا سنواصل دعم الميزات والقدرات الحالية ولكننا لن نحدد أولويات إضافة ميزات جديدة.

إشعار

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

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

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

إنشاء مشروع Azure Resource Group

في هذا القسم، يمكنك إنشاء مشروع Azure Resource Group باستخدام قالب تطبيق ويب.

  1. في Visual Studio، حددFile>New>Project.

  2. ابحث عن مجموعة الموارد، ثم حدد قالب مشروع مجموعة موارد Azure (الدعم الموسع) والتالي.

    لقطة شاشة لإنشاء نافذة مشروع جديدة تبرز مجموعة موارد Azure والزر التالي.

  3. قم بتسمية مشروعك. الإعدادات الافتراضية الأخرى ربما تكون جيدة؛ ولكن قم بمراجعتها؛ لتجعلها مناسبة للبيئة الخاصة بك. عند الانتهاء، حدد Create.

    لقطة شاشة لنافذة تسمية المشروع في Visual Studio.

  4. اختر القالب الذي تريد توزيعه إلى Azure Resource Manager. لاحظ أن هناك العديد من الخيارات المختلفة استنادًا إلى نوع المشروع الذي ترغب في نشره. بالنسبة لهذه المقالة، اختر قالب تطبيق الويب وموافق.

    لقطة شاشة لنافذة تحديد القالب مع تمييز قالب تطبيق الويب.

    القالب الذي تختاره هو مجرد نقطة بداية، يمكنك إضافة وإزالة الموارد؛ لتنفيذ السيناريو الخاص بك.

  5. يقوم Visual Studio بإنشاء مشروع توزيع مجموعة موارد لتطبيق الويب. لمشاهدة الملفات الخاصة بمشروعك، انظر إلى العقدة في مشروع النشر.

    لقطة شاشة مستكشف الحلول Visual Studio تعرض ملفات مشروع توزيع مجموعة الموارد.

    بما أنك اخترت قالب تطبيق ويب، سترى الملفات التالية:

    اسم الملف ‏‏الوصف
    Deploy-AzureResourceGroup.ps1 برنامج PowerShell النصي الذي يقوم بتشغيل أوامر PowerShell للتوزيع إلى Azure Resource Manager. يستخدم Visual Studio هذا البرنامج النصي PowerShell لتوزيع القالب الخاص بك.
    WebSite.json قالب إدارة الموارد الذي يعرف البنية التحتية التي تريد توزيعها إلى Azure، والمعلمات التي يمكنك توفيرها أثناء النشر. كما يعرف التبعيات بين الموارد؛ بحيث يقوم مدير الموارد بتوزيع الموارد بالترتيب الصحيح.
    WebSite.parameters.json ملف معلمات يحتوي على قيم مطلوبة من قبل القالب. تمرير قيم المعلمات لتخصيص كل توزيع. لاحظ أنه تم تعيين إجراء الإنشاء إلى المحتوى. إذا أضفت المزيد من ملفات المعلمات، فتأكد من تعيين إجراء الإنشاء إلى Content.

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

قالب Azure Resource Manager مخصص

يمكنك تخصيص مشروع توزيع عن طريق تعديل قالب إدارة الموارد الذي يصف الموارد المراد توزيعها. للتعرف على عناصر قالب Resource Manager، راجع تأليف قوالب Azure Resource Manager.

  1. للعمل على القالب، افتح WebSite.json.

  2. يوفر محرر Visual Studio أدوات؛ لمساعدتك في تحرير قالب إدارة الموارد. تسهل نافذة JSON Outline رؤية العناصر المعرفة في القالب.

    لقطة شاشة لنافذة JSON Outline في Visual Studio لقالب Resource Manager.

  3. حدد عنصرًا في المخطط التفصيلي؛ للانتقال إلى ذلك الجزء من القالب.

    لقطة شاشة لمحرر Visual Studio مع عنصر محدد في نافذة JSON Outline.

  4. يمكنك إضافة مورد بالنقر بزر الماوس الأيمن فوق الموارد وتحديد إضافة مورد جديد.

    لقطة شاشة لنافذة JSON Outline التي تسلط الضوء على خيار إضافة مورد جديد.

  5. حدد حساب التخزين وامنحه اسما. اختر اسمًا لا يزيد عن 11 حرفًا، ويحتوي فقط على أرقام وأحرف صغيرة.

    لقطة شاشة لنافذة Add New Resource مع تحديد Storage Account.

  6. لاحظ أن المورد لم تم إضافته فحسب؛ ولكن تم أيضًا إضافة معلمة لحساب تخزين النوع، ومتغير لاسم حساب التخزين.

    لقطة شاشة لنافذة JSON Outline تعرض مورد حساب التخزين المضاف.

  7. يتم تعريف المعلمة لنوع حساب التخزين مسبقًا مع أنواع مسموح بها ونوع افتراضي. يمكنك ترك هذه القيم أو تحريرها لتناسب السيناريو الخاص بك. إذا كنت لا تريد أن يقوم أي شخص بنشر حساب تخزين Premium_LRS من خلال هذا القالب، فقم بإزالته من الأنواع المسموح بها.

    "demoAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_ZRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Premium_LRS"
      ]
    }
    

توزيع المشروع إلى Azure

أنت الآن مستعد لتوزيع المشروع إلى مجموعة موارد.

بشكل افتراضي، يستخدم برنامج PowerShell النصي (Deploy-AzureResourceGroup.ps1) في مشروع الوحدة النمطية AzureRM. إذا كان لا يزال لديك الوحدة النمطية AzureRM مثبتة، وتريد متابعة استخدامها، يمكنك استخدام هذا البرنامج النصي الافتراضي. باستخدام هذا البرنامج النصي، يمكنك استخدام واجهة Visual Studio لتوزيع الحل الخاص بك.

ومع ذلك، إذا قمت بالترحيل إلى الوحدة النمطية Az الجديدة، فستحتاج إلى إضافة برنامج نصي جديد إلى مشروعك. لإضافة برنامج نصي يستخدم الوحدة النمطية Az، انسخ البرنامج النصي Deploy-AzTemplate.ps1 وأضفه إلى مشروعك. لاستخدام هذا البرنامج النصي للتوزيع، يجب تشغيله من وحدة تحكم PowerShell، بدلاً من استخدام واجهة توزيع Visual Studio.

يتم عرض كلا النهجين في هذه المقالة. تشير هذه المقالة إلى البرنامج النصي الافتراضي كبرنامج نصي للوحدة النمطية AzureRM، والبرنامج النصي الجديد كبرنامج نصي للوحدة النمطية Az.

البرنامج النصي لوحدة Az النمطية

بالنسبة للبرنامج النصي للوحدة النمطية Az، افتح وحدة تحكم PowerShell، ثم قم بتشغيل:

.\Deploy-AzTemplate.ps1 -ArtifactStagingDirectory . -Location centralus -TemplateFile WebSite.json -TemplateParametersFile WebSite.parameters.json

البرنامج النصي للوحدة النمطية AzureRM

بالنسبة للبرنامج النصي للوحدة النمطية AzureRM، استخدم Visual Studio:

  1. في القائمة المختصرة لعقدة مشروع النشر، اختر Deploy>New.

    لقطة شاشة لقائمة سياق مشروع النشر مع تمييز خيارات النشر والجديد.

  2. يظهر مربع الحوار نشر إلى مجموعة الموارد. في مربع القائمة المنسدلة Resource group ، اختر مجموعة موارد موجودة أو أنشئ مجموعة جديدة. حدد نشر.

    لقطة شاشة لمربع الحوار

  3. في نوافذ الإخراج ، سترى حالة النشر. عند انتهاء النشر، تشير الرسالة الأخيرة إلى نشر ناجح مع شيء مشابه لما يلي:

    18:00:58 - Successfully deployed template 'website.json' to resource group 'ExampleAppDeploy'.
    

عرض الموارد المنشورة

دعونا نتحقق من النتائج.

  1. في مستعرض، افتح مدخل Microsoft Azure وسجل الدخول إلى حسابك. لمشاهدة مجموعة الموارد، حدد Resource groups ومجموعة الموارد التي قمت بالنشر إليها.

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

    لقطة شاشة لمدخل Azure تعرض الموارد المنشورة في مجموعة موارد.

إضافة رمز إلى المشروع

عند هذه النقطة، قمت بتوزيع البنية التحتية لتطبيقك؛ ولكن لا يوجد رمز فعلي تم نشره مع المشروع.

  1. إضافة مشروع إلى حل Visual Studio. انقر بزر الماوس الأيمن فوق الحل، ثم حدد Add>New Project.

    لقطة شاشة لقائمة سياق إضافة مشروع جديد في Visual Studio.

  2. إضافة تطبيق ويب ASP.NET Core.

    لقطة شاشة لنافذة New Project مع تحديد ASP.NET Core Web Application.

  3. امنح تطبيق الويب اسما، وحدد إنشاء.

    لقطة شاشة لنافذة تسمية المشروع ASP.NET Core Web Application.

  4. حدد Web Application وCreate.

    لقطة شاشة لنافذة New ASP.NET Core Web Application مع تحديد Web Application.

  5. بعد قيام Visual Studio بإنشاء تطبيق الويب الخاص بك، سترى كلا المشروعين في الحل.

    لقطة شاشة مستكشف الحلول Visual Studio تعرض كلا المشروعين في الحل.

  6. الآن، تحتاج إلى التأكد من أن مشروع مجموعة الموارد الخاص بك على علم بالمشروع الجديد. العودة إلى مشروع مجموعة الموارد (ExampleAppDeploy). انقر بزر الماوس الأيمن فوق مراجع وحدد إضافة مرجع.

    لقطة شاشة لقائمة سياق ExampleAppDeploy التي تسلط الضوء على خيار إضافة مرجع.

  7. قم بتحديد مشروع تطبيق ويب الذي أنشأته.

    لقطة شاشة لنافذة إضافة مرجع في Visual Studio مع تحديد مشروع تطبيق الويب.

    بإضافة مرجع، يمكنك ربط مشروع تطبيق الويب بمشروع مجموعة الموارد، ثم تعيين بعض الخصائص تلقائيًا. ترى هذه الخصائص في نافذة Properties للمرجع. يحتوي Include File Path على المسار الذي تم إنشاء الحزمة فيه. لاحظ المجلد (ExampleApp) والملف (package.zip). تحتاج إلى معرفة هذه القيم؛ لأنك توفرها كمعلمات عند نشر التطبيق.

    لقطة شاشة لنافذة Properties تعرض الخصائص المرجعية لمشروع تطبيق الويب.

  8. عد إلى القالب (WebSite.json)، وأضف موردًا إلى القالب.

    لقطة شاشة لنافذة JSON Outline مع تمييز خيار إضافة مورد جديد.

  9. هذه المرة حدد Web Deploy for Web Apps.

    لقطة شاشة لنافذة Add New Resource مع تحديد Web Deploy for Web Apps.

    قم بحفظ القالب الخاص بك.

  10. هناك بعض المعلمات الجديدة المضافة في الخطوة السابقة.

    لقطة شاشة للمعلمات الجديدة.

    لا تحتاج إلى توفير قيم _artifactsLocation أو _artifactsLocationSasToken لأنه يتم إنشاء هذه القيم تلقائيا. مع ذلك، يجب تعيين اسم الملف والمجلد إلى المسار الذي يحتوي على حزمة النشر. تنتهي أسماء هذه المعلمات ب PackageFolder و PackageFileName. الجزء الأول من الاسم هو اسم مورد نشر ويب الذي أضفته. في هذه المقالة، يطلق عليها ExampleAppPackageFolder و ExampleAppPackageFileName.

    افتح Website.parameters.json وقم بتعيين هذه المعلمات إلى القيم التي شاهدتها في الخصائص المرجعية. تعيين ExampleAppPackageFolder إلى اسم المجلد. قم بتعيين ExampleAppPackageFileName إلى اسم الملف المضغوط.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "ExampleAppPackageFolder": {
          "value": "ExampleApp"
        },
        "ExampleAppPackageFileName": {
          "value": "package.zip"
        }
      }
    }
    

توزيع التعليمات البرمجية مع البنية التحتية

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

البرنامج النصي لوحدة Az النمطية

هناك تغيير صغير واحد تحتاج إلى إجرائه على القالب الخاص بك إذا كنت تستخدم برنامج Az النصي للوحدة النمطية. يضيف هذا البرنامج النصي شرطة مائلة إلى موقع الأدوات؛ ولكن القالب لا يتوقع تلك الشرطة المائلة. قم بفتح WebSite.json، وابحث عن خصائص ملحق MSDeploy. يحتوي على خاصية تسمى packageUri. إزالة الشرطة المائلة بين موقع الأدوات ومجلد الحزمة.

يجب أن تبدو كما يلي:⁧

"packageUri": "[concat(parameters('_artifactsLocation'), parameters('ExampleAppPackageFolder'), '/', parameters('ExampleAppPackageFileName'), parameters('_artifactsLocationSasToken'))]",

لاحظ في المثال السابق لا يوجد '/', بين معلمات('_artifactsLocation')وومعلمات('ExampleAppPackageFolder').

إعادة بناء المشروع. بناء المشروع يتحقق من أن الملفات التي تحتاج إلى نشر تم إضافتها إلى مجلد العرض.

الآن، افتح وحدة تحكم PowerShell، ثم قم بتشغيل:

.\Deploy-AzTemplate.ps1 -ArtifactStagingDirectory .\bin\Debug\staging\ExampleAppDeploy -Location centralus -TemplateFile WebSite.json -TemplateParametersFile WebSite.parameters.json -UploadArtifacts -StorageAccountName <storage-account-name>

البرنامج النصي للوحدة النمطية AzureRM

بالنسبة للبرنامج النصي للوحدة النمطية AzureRM، استخدم Visual Studio:

  1. لإعادة النشر، اختر Deploy، ومجموعة الموارد التي قمت بنشرها سابقا.

    لقطة شاشة لقائمة سياق مشروع التوزيع مع تمييز Deploy ومجموعة الموارد المستخدمة مسبقا.

  2. حدد حساب التخزين الذي قمت بنشره مع مجموعة الموارد هذه لحساب تخزين Artifact.

    لقطة شاشة لمربع الحوار Deploy to Resource Group مع تحديد حساب تخزين Artifact.

عرض تطبيق الويب

  1. بعد انتهاء النشر، حدد تطبيق الويب في المدخل. حدد URL للاستعراض للوصول إلى الموقع.

    لقطة شاشة لمدخل Azure تعرض مورد تطبيق الويب مع تمييز عنوان URL.

  2. لاحظ أنك نجحت في نشر تطبيق ASP.NET الافتراضي.

    لقطة شاشة لتطبيق ASP.NET الافتراضي المنشور في مستعرض ويب.

إضافة لوحة معلومات العمليات

لا تقتصر على الموارد المتوفرة من خلال واجهة Visual Studio فقط. يمكنك تخصيص النشر الخاص بك عن طريق إضافة مورد مخصص إلى القالب الخاص بك. لعرض إضافة مورد، يمكنك إضافة لوحة معلومات تشغيلية لإدارة المورد الذي قمت بنشره.

  1. افتح ملف WebSite.json وأضف JSON التالي بعد مورد حساب التخزين ولكن قبل إغلاق ] قسم الموارد.

     ,{
       "properties": {
         "lenses": {
           "0": {
             "order": 0,
             "parts": {
               "0": {
                 "position": {
                   "x": 0,
                   "y": 0,
                   "colSpan": 4,
                   "rowSpan": 6
                 },
                 "metadata": {
                   "inputs": [
                     {
                       "name": "resourceGroup",
                       "isOptional": true
                     },
                     {
                       "name": "id",
                       "value": "[resourceGroup().id]",
                       "isOptional": true
                     }
                   ],
                   "type": "Extension/HubsExtension/PartType/ResourceGroupMapPinnedPart"
                 }
               },
               "1": {
                 "position": {
                   "x": 4,
                   "y": 0,
                   "rowSpan": 3,
                   "colSpan": 4
                 },
                 "metadata": {
                   "inputs": [],
                   "type": "Extension[azure]/HubsExtension/PartType/MarkdownPart",
                   "settings": {
                     "content": {
                       "settings": {
                         "content": "__Customizations__\n\nUse this dashboard to create and share the operational views of services critical to the application performing. To customize simply pin components to the dashboard and then publish when you're done. Others will see your changes when you publish and share the dashboard.\n\nYou can customize this text too. It supports plain text, __Markdown__, and even limited HTML like images <img width='10' src='https://portal.azure.com/favicon.ico'/> and <a href='https://azure.microsoft.com' target='_blank'>links</a> that open in a new tab.\n",
                         "title": "Operations",
                         "subtitle": "[resourceGroup().name]"
                       }
                     }
                   }
                 }
               }
             }
           }
         },
         "metadata": {
           "model": {
             "timeRange": {
               "value": {
                 "relative": {
                   "duration": 24,
                   "timeUnit": 1
                 }
               },
               "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
             }
           }
         }
       },
       "type": "Microsoft.Portal/dashboards",
       "apiVersion": "2015-08-01-preview",
       "name": "[concat('ARM-',resourceGroup().name)]",
       "location": "[resourceGroup().location]",
       "tags": {
         "hidden-title": "[concat('OPS-',resourceGroup().name)]"
       }
     }
    
  2. إعادة نشر المشروع الخاص بك.

  3. بعد انتهاء النشر، اعرض لوحة المعلومات في المدخل. حدد لوحة المعلومات واختر لوحة المعلومات التي قمت بنشرها.

    لقطة شاشة لصفحة لوحة معلومات مدخل Microsoft Azure التي تسلط الضوء على مثال للوحة معلومات مخصصة.

  4. يمكنك مشاهدة لوحة المعلومات المخصصة.

    لقطة شاشة للوحة المعلومات التشغيلية المخصصة في مدخل Microsoft Azure.

يمكنك إدارة الوصول إلى لوحة المعلومات باستخدام عنصر تحكم الوصول المستند إلى دورAzure (Azure RBAC). يمكنك أيضًا تخصيص مظهر لوحة المعلومات بعد نشرها. مع ذلك، إذا قمت بإعادة نشر مجموعة الموارد، تتم إعادة تعيين لوحة المعلومات إلى حالتها الافتراضية في القالب. لمزيد من المعلومات حول إنشاء لوحات المعلومات، راجع إنشاء لوحات معلومات Azure برمجيا.

تنظيف الموارد

عندما لا تكون موارد Azure مطلوبة، قم بتنظيف الموارد التي قمت بنشرها عن طريق حذف مجموعة الموارد.

  1. من مدخل Microsoft Azure، حدد Resource groups من القائمة اليسرى.

  2. حدد اسم مجموعة الموارد.

  3. حدد Delete resource group من القائمة.

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

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