البرنامج التعليمي: استخدام الشرط في قوالب ARM
تعرف على كيفية نشر موارد Azure استنادًا إلى الشروط الموجودة في قالب إدارة موارد Azure (قالب ARM).
في البرنامج التعليمي "تعيين ترتيب توزيع الموارد"، يمكنك إنشاء جهاز ظاهري وشبكة ظاهرية وبعض الموارد الأخرى التابعة، بما في ذلك حساب تخزين. بدلاً من إنشاء حساب تخزين جديد في كل مرة، يمكنك السماح للأشخاص بالاختيار بين إنشاء حساب تخزين جديد واستخدام حساب تخزين موجود. لتحقيق هذا الهدف، يمكنك تعريف معلمة إضافية. إذا كانت قيمة المعلمة جديدة، يتم إنشاء حساب تخزين جديد. وإلا، يتم استخدام حساب تخزين موجود بالاسم المتوفر.
يغطي هذا البرنامج التعليمي المهام التالية:
- فتح قالب بدء تشغيل سريع
- تعديل القالب
- نشر القالب
- تنظيف الموارد
هذا البرنامج التعليمي يغطي فقط سيناريو أساسيًّا لاستخدام الشروط. لمزيد من المعلومات، راجع:
بالنسبة إلى Learn التي تغطي الشروط، راجع إدارة عمليات النشر السحابية المعقدة باستخدام ميزات قالب ARM المتقدمة.
إذا لم يكن لديك اشتراك في Azure، فأنشئ free account قبل البدء.
المتطلبات الأساسية
لإكمال هذه المقالة، تحتاج إلى الآتي:
"Visual Studio Code" إلى جانب ملحق "Resource Manager Tools". راجع التشغيل السريع: إنشاء قوالب ARM باستخدام Visual Studio Code.
لزيادة الأمان، استخدم كلمة مرور تم إنشاؤها لحساب مسؤول الجهاز الظاهري. يمكنك استخدام Azure Cloud Shell لتشغيل الأمر التالي في PowerShell أو Bash:
openssl rand -base64 32
لمعرفة المزيد، قم بتشغيل
man openssl rand
لفتح الصفحة اليدوية.تم تصميم Azure Key Vault لحماية مفاتيح التشفير وغيرها من الأسرار. للحصول على مزيدٍ من المعلومات، راجع البرنامج التعليمي: تكامل Azure Key Vault في نشر قوالب ARM. كما نوصي بتحديث كلمة المرور كل ثلاثة أشهر.
فتح قالب "تشغيل سريع"
تتمثل قوالب التشغيل السريع من Azure في مستودع لقوالب ARM. بدلاً من إنشاء قالب من البداية، يمكنك العثور على نموذج قالب وتخصيصه. يسمى القالب المستخدم في هذا البرنامج التعليمي نشر جهاز ظاهري بسيط يعمل بنظام Windows.
في Visual Studio Code، حدد ملف>فتح ملف.
في اسم الملف، أَلصِق عنوان URL الآتي:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
حدد فتح لفتح الملف.
هناك ستة موارد محددة بواسطة القالب:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
من المفيد مراجعة مرجع القالب قبل تخصيص قالب.
حدد ملف>Save As، ثم احفظ نسخة من الملف في الكمبيوتر المحلي باسم azuredeploy.json.
تعديل القالب
قم بإجراء تغييرَين على القالب الموجود:
- إضافة معلمة اسم حساب تخزين. يمكن للمستخدمين تحديد اسم حساب تخزين جديد أو اسم حساب تخزين موجود.
- إضافة معلمة جديدة تسمى
newOrExisting
. يستخدم النشر هذه المعلمة لتحديد ما إذا كان سيتم إنشاء حساب تخزين جديد أو استخدام حساب تخزين موجود.
فيما يلي الإجراء لإجراء التغييرات:
فتح azuredeploy.json في رمز Visual Studio.
استبدل الثلاثة
variables('storageAccountName')
فيparameters('storageAccountName')
القالب بأكمله.إزالة تعريف المتغير التالي:
إضافة المعلمتَين التاليتَين إلى بداية المقطع المعلمات:
"storageAccountName": { "type": "string" }, "newOrExisting": { "type": "string", "allowedValues": [ "new", "existing" ] },
اضغط Alt+ Shift + F لتنسيق القالب في رمز Visual Studio.
تعريف المعلمات المحدثة يبدو كما يلي:
إضافة السطر التالي إلى بداية تعريف حساب التخزين.
"condition": "[equals(parameters('newOrExisting'),'new')]",
يتحقق الشرط من قيمة المعلمة
newOrExisting
. إذا كانت قيمة المعلمة جديدة، فإن النشر يقوم بإنشاء حساب التخزين.يبدو تعريف حساب التخزين المحدث كما يلي:
تحديث
storageUri
خاصية تعريف مورد الجهاز الظاهري بالقيمة التالية:"storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
هذا التغيير ضروري عند استخدام حساب تخزين موجود ضمن مجموعة موارد مختلفة.
حفظ التغييرات.
نشر القالب
تسجيل الدخول إلى Cloud Shell.
يمكنك اختيار بيئتك المفضلة عن طريق تحديد PowerShell أو Bash (لـ CLI) في الزاوية العلوية اليسرى. يلزم إعادة تشغيل Shell عند التبديل.
حدد Upload/download files، ثم حدد Upload. راجع لقطة الشاشة السابقة. حدد الملف الذي قمت بحفظه في القسم السابق. بعد تحميل الملف، يمكنك استخدام الأمر
ls
والأمرcat
للتحقق من تحميل الملف بنجاح.شغّل البرنامج النصي PowerShell الآتي لنشر القالب.
هام
يجب أن يكون اسم حساب التخزين فريدًا عبر Azure. يجب أن يكون الاسم أحرفًا صغيرة أو أرقامًا فقط. لا يمكن أن يكون أكثر من 24 حرفًا. اسم حساب التخزين هو اسم المشروع مع مخزن ملحق. تأكد من أن اسم المشروع واسم حساب التخزين الذي تم إنشاؤه يفيان بمتطلبات اسم حساب التخزين.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names" $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)" $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)" $vmAdmin = Read-Host -Prompt "Enter the admin username" $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix" $resourceGroupName = "${projectName}rg" $storageAccountName = "${projectName}store" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -adminUsername $vmAdmin ` -adminPassword $vmPassword ` -dnsLabelPrefix $dnsLabelPrefix ` -storageAccountName $storageAccountName ` -newOrExisting $newOrExisting ` -TemplateFile "$HOME/azuredeploy.json" Write-Host "Press [ENTER] to continue ..."
ملاحظة
يفشل النشر إذا
newOrExisting
كان جديداً، ولكن حساب التخزين مع اسم حساب التخزين المحدد موجود بالفعل.
حاول إجراء نشر آخر مع newOrExisting
تعيين إلى موجود وتحديد حساب تخزين موجود. لإنشاء حساب تخزين مسبق، راجع إنشاء حساب تخزين.
تنظيف الموارد
عندما لا تكون موارد Azure مطلوبة، قم بتنظيف الموارد التي قمت بنشرها عن طريق حذف مجموعة الموارد. لحذف مجموعة الموارد، حدد جربها لفتح Cloud Shell. للصق نص PowerShell، انقر بزر الماوس الأيمن فوق جزء shell، ثم حدد Paste.
$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue ..."
الخطوات التالية
في هذا البرنامج التعليمي، قمت بتطوير قالب يسمح للمستخدمين بالاختيار بين إنشاء حساب تخزين جديد واستخدام حساب تخزين موجود. لمعرفة كيفية استرداد الأسرار من Azure Key Vault واستخدام الأسرار ككلمات مرور في نشر القالب، راجع: