إنشاء مجموعات موارد 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 باستخدام قالب تطبيق ويب.
في Visual Studio، حددFile>New>Project.
ابحث عن مجموعة الموارد، ثم حدد قالب مشروع مجموعة موارد Azure (الدعم الموسع) والتالي.
قم بتسمية مشروعك. الإعدادات الافتراضية الأخرى ربما تكون جيدة؛ ولكن قم بمراجعتها؛ لتجعلها مناسبة للبيئة الخاصة بك. عند الانتهاء، حدد Create.
اختر القالب الذي تريد توزيعه إلى Azure Resource Manager. لاحظ أن هناك العديد من الخيارات المختلفة استنادًا إلى نوع المشروع الذي ترغب في نشره. بالنسبة لهذه المقالة، اختر قالب تطبيق الويب وموافق.
القالب الذي تختاره هو مجرد نقطة بداية، يمكنك إضافة وإزالة الموارد؛ لتنفيذ السيناريو الخاص بك.
يقوم 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.
للعمل على القالب، افتح WebSite.json.
يوفر محرر Visual Studio أدوات؛ لمساعدتك في تحرير قالب إدارة الموارد. تسهل نافذة JSON Outline رؤية العناصر المعرفة في القالب.
حدد عنصرًا في المخطط التفصيلي؛ للانتقال إلى ذلك الجزء من القالب.
يمكنك إضافة مورد بالنقر بزر الماوس الأيمن فوق الموارد وتحديد إضافة مورد جديد.
حدد حساب التخزين وامنحه اسما. اختر اسمًا لا يزيد عن 11 حرفًا، ويحتوي فقط على أرقام وأحرف صغيرة.
لاحظ أن المورد لم تم إضافته فحسب؛ ولكن تم أيضًا إضافة معلمة لحساب تخزين النوع، ومتغير لاسم حساب التخزين.
يتم تعريف المعلمة لنوع حساب التخزين مسبقًا مع أنواع مسموح بها ونوع افتراضي. يمكنك ترك هذه القيم أو تحريرها لتناسب السيناريو الخاص بك. إذا كنت لا تريد أن يقوم أي شخص بنشر حساب تخزين 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:
في القائمة المختصرة لعقدة مشروع النشر، اختر Deploy>New.
يظهر مربع الحوار نشر إلى مجموعة الموارد. في مربع القائمة المنسدلة Resource group ، اختر مجموعة موارد موجودة أو أنشئ مجموعة جديدة. حدد نشر.
في نوافذ الإخراج ، سترى حالة النشر. عند انتهاء النشر، تشير الرسالة الأخيرة إلى نشر ناجح مع شيء مشابه لما يلي:
18:00:58 - Successfully deployed template 'website.json' to resource group 'ExampleAppDeploy'.
عرض الموارد المنشورة
دعونا نتحقق من النتائج.
في مستعرض، افتح مدخل Microsoft Azure وسجل الدخول إلى حسابك. لمشاهدة مجموعة الموارد، حدد Resource groups ومجموعة الموارد التي قمت بالنشر إليها.
سترى كافة الموارد المنشورة. لاحظ أن اسم حساب التخزين ليس بالضبط ما حددته عند إضافة ذلك المورد. يجب أن يكون اسم حساب التخزين فريدًا. يضيف القالب تلقائيًا سلسلة من الأحرف إلى الاسم الذي قمت بتوفيره لإنشاء اسم فريد.
إضافة رمز إلى المشروع
عند هذه النقطة، قمت بتوزيع البنية التحتية لتطبيقك؛ ولكن لا يوجد رمز فعلي تم نشره مع المشروع.
إضافة مشروع إلى حل Visual Studio. انقر بزر الماوس الأيمن فوق الحل، ثم حدد Add>New Project.
إضافة تطبيق ويب ASP.NET Core.
امنح تطبيق الويب اسما، وحدد إنشاء.
حدد Web Application وCreate.
بعد قيام Visual Studio بإنشاء تطبيق الويب الخاص بك، سترى كلا المشروعين في الحل.
الآن، تحتاج إلى التأكد من أن مشروع مجموعة الموارد الخاص بك على علم بالمشروع الجديد. العودة إلى مشروع مجموعة الموارد (ExampleAppDeploy). انقر بزر الماوس الأيمن فوق مراجع وحدد إضافة مرجع.
قم بتحديد مشروع تطبيق ويب الذي أنشأته.
بإضافة مرجع، يمكنك ربط مشروع تطبيق الويب بمشروع مجموعة الموارد، ثم تعيين بعض الخصائص تلقائيًا. ترى هذه الخصائص في نافذة Properties للمرجع. يحتوي Include File Path على المسار الذي تم إنشاء الحزمة فيه. لاحظ المجلد (ExampleApp) والملف (package.zip). تحتاج إلى معرفة هذه القيم؛ لأنك توفرها كمعلمات عند نشر التطبيق.
عد إلى القالب (WebSite.json)، وأضف موردًا إلى القالب.
هذه المرة حدد Web Deploy for Web Apps.
قم بحفظ القالب الخاص بك.
هناك بعض المعلمات الجديدة المضافة في الخطوة السابقة.
لا تحتاج إلى توفير قيم _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:
لإعادة النشر، اختر Deploy، ومجموعة الموارد التي قمت بنشرها سابقا.
حدد حساب التخزين الذي قمت بنشره مع مجموعة الموارد هذه لحساب تخزين Artifact.
عرض تطبيق الويب
بعد انتهاء النشر، حدد تطبيق الويب في المدخل. حدد URL للاستعراض للوصول إلى الموقع.
لاحظ أنك نجحت في نشر تطبيق ASP.NET الافتراضي.
إضافة لوحة معلومات العمليات
لا تقتصر على الموارد المتوفرة من خلال واجهة Visual Studio فقط. يمكنك تخصيص النشر الخاص بك عن طريق إضافة مورد مخصص إلى القالب الخاص بك. لعرض إضافة مورد، يمكنك إضافة لوحة معلومات تشغيلية لإدارة المورد الذي قمت بنشره.
افتح ملف 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)]" } }
إعادة نشر المشروع الخاص بك.
بعد انتهاء النشر، اعرض لوحة المعلومات في المدخل. حدد لوحة المعلومات واختر لوحة المعلومات التي قمت بنشرها.
يمكنك مشاهدة لوحة المعلومات المخصصة.
يمكنك إدارة الوصول إلى لوحة المعلومات باستخدام عنصر تحكم الوصول المستند إلى دورAzure (Azure RBAC). يمكنك أيضًا تخصيص مظهر لوحة المعلومات بعد نشرها. مع ذلك، إذا قمت بإعادة نشر مجموعة الموارد، تتم إعادة تعيين لوحة المعلومات إلى حالتها الافتراضية في القالب. لمزيد من المعلومات حول إنشاء لوحات المعلومات، راجع إنشاء لوحات معلومات Azure برمجيا.
تنظيف الموارد
عندما لا تكون موارد Azure مطلوبة، قم بتنظيف الموارد التي قمت بنشرها عن طريق حذف مجموعة الموارد.
من مدخل Microsoft Azure، حدد Resource groups من القائمة اليسرى.
حدد اسم مجموعة الموارد.
حدد Delete resource group من القائمة.
الخطوات التالية
في هذه المقالة، تعلمت كيفية إنشاء القوالب، ونشرها باستخدام Visual Studio. لمعرفة المزيد حول تطوير القالب، اطلع على سلسلة البرامج التعليمية الجديدة للمبتدئين: