توزع تعريفات نهج Azure تأثيرIfNotExists
على auditIfNotExists
غرار ، ينفذ تعريف النهج deployIfNotExists
نشر قالب عند استيفاء الشرط. تتطلب تعيينات النهج ذات التأثير المعين على DeployIfNotExists هوية مدارة لإجراء المعالجة.
تقييم DeployIfNotExists
deployIfNotExists
يعمل بعد تأخير قابل للتكوين عندما يتعامل موفر الموارد مع إنشاء أو تحديث اشتراك أو طلب مورد وإرجاع رمز حالة النجاح. يحدث نشر القالب إذا لم تكن هناك موارد ذات صلة أو إذا لم يتم تقييم الموارد المعرفة بواسطة existenceCondition
إلى true. تعتمد مدة التوزيع على تعقيد الموارد المضمنة في القالب.
أثناء دورة التقييم، تميز تعريفات النهج ذات تأثير DeployIfNotExists التي تطابق الموارد على أنها غير متوافقة، ولكن لا يتم اتخاذ أي إجراء على هذا المورد. يمكن إصلاح الموارد غير المتوافقة الموجودة بمهمة المعالجة.
DeployIfNotExists properties
تحتوي details
خاصية تأثير DeployIfNotExists على كافة الخصائص الفرعية التي تحدد الموارد ذات الصلة المراد مطابقتها ونشر القالب المراد تنفيذه.
type
(مطلوب)- تحدد نوع المورد ذي الصلة المراد مطابقته.
- إذا كان
type
نوع مورد أسفلif
مورد الشرط، يستعلم النهج عن موارد هذاtype
ضمن نطاق المورد الذي تم تقييمه. وإلا، فإن استعلامات النهج داخل نفس مجموعة الموارد أو الاشتراك مثل المورد الذي تم تقييمه اعتمادا علىexistenceScope
.
name
(اختياري)- يحدد الاسم الدقيق للمورد المراد مطابقته ويتسبب في إحضار النهج لمورد معين واحد بدلًا من كافة الموارد من النوع المحدد.
- عندما تكون قيم الشرط ل
if.field.type
ومطابقةthen.details.type
، تصبحname
مطلوبة ويجب أن تكون[field('name')]
، أو[field('fullName')]
لمورد تابع.
إشعار
type
name
ويمكن دمج الشرائح لاسترداد الموارد المتداخلة بشكل عام.
لاسترداد مورد معين، يمكنك استخدام "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
و "name": "parentResourceName/nestedResourceName"
.
لاسترداد مجموعة من الموارد المتداخلة، يمكن توفير حرف ?
بدل بدلا من مقطع اسم العائلة. على سبيل المثال، "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
و "name": "parentResourceName/?"
. يمكن دمج هذا مع وظائف الحقل للوصول إلى الموارد المتعلقة بالمورد الذي تم تقييمه، مثل "name": "[concat(field('name'), '/?')]"
."
resourceGroupName
(اختياري)- تسمح بمطابقة المورد ذي الصلة أن يأتي من مجموعة موارد مختلفة.
- لا ينطبق إذا كان
type
موردا سيكون تحتif
مورد الشرط. - الافتراضي هو
if
مجموعة موارد مورد الشرط. - إذا تم تنفيذ توزيع قالب، فسيتم توزيعه في مجموعة الموارد لهذه القيمة.
existenceScope
(اختياري)- القيم المسموح بها هي Subscription وResourceGroup.
- تعيين نطاق مكان إحضار المورد ذي الصلة للمطابقة منه.
- لا ينطبق إذا كان
type
موردا سيكون تحتif
مورد الشرط. - بالنسبة إلى ResourceGroup، سيقتصر على مجموعة الموارد في
resourceGroupName
إذا تم تحديدها. إذاresourceGroupName
لم يتم تحديد، فسيقتصر علىif
مجموعة موارد مورد الشرط، وهو السلوك الافتراضي. - بالنسبة إلى Subscription، ستستعلم عن الاشتراك بأكمله للمورد ذي الصلة. يجب تعيين نطاق التعيين على الاشتراك أو أعلى للحصول على التقييم المناسب.
- الإعداد الافتراضي هو ResourceGroup.
evaluationDelay
(اختياري)- يحدد متى يجب تقييم وجود الموارد ذات الصلة. لا يتم استخدام التأخير إلا للتقييمات الناتجة عن إنشاء طلب مورد أو تحديثه.
- القيم المسموح بها هي
AfterProvisioning
أوAfterProvisioningSuccess
أوAfterProvisioningFailure
أو مدة ISO 8601 بين 0 و360 دقيقة. - تقوم قيم AfterProvisioning بفحص نتيجة التوفير للمورد الذي تم تقييمه في شرط قاعدة النهج
if
.AfterProvisioning
يعمل بعد اكتمال التوفير، بغض النظر عن النتيجة. يتم التعامل مع التزويد الذي يستغرق أكثر من ست ساعات على أنه فشل عند تحديد تأخيرات التقييم بعد التوفير. - الإعداد الافتراضي هو
PT10M
(10 دقائق). - قد يؤدي تحديد تأخير تقييم طويل إلى عدم تحديث حالة التوافق المسجلة للمورد حتى مشغل التقييم التالي.
existenceCondition
(اختياري)- إذا لم يتم تحديده، فإن أي مورد
type
ذي صلة يفي بالتأثير ولا يقوم بتشغيل النشر. - يستخدم نفس لغة قاعدة النهج للشرط
if
، ولكن يتم تقييمه مقابل كل مورد ذي صلة على حدة. - إن تم تقييم أي مورد مرتبط مطابق باعتباره صحيح، يتم استيفاء التأثير ولا يقوم بتشغيل التوزيع.
- يمكن استخدام [field()] للتحقق من التكافؤ مع القيم في
if
الشرط. - على سبيل المثال، يمكن استخدام للتحقق من أن المورد الأصل (في
if
الشرط) موجود في نفس موقع المورد مثل المورد المطابق ذي الصلة.
- إذا لم يتم تحديده، فإن أي مورد
roleDefinitionIds
(مطلوب)- يجب أن تتضمن هذه الخاصية صفيفًا من السلاسل التي تطابق معرف دور التحكم في الوصول المستند إلى الدور الذي يمكن الوصول إليه بواسطة الاشتراك. لمزيد من المعلومات، راجع المعالجة - تكوين تعريف النهج.
deploymentScope
(اختياري)- القيم المسموح بها هي Subscription وResourceGroup.
- تعيين نوع التوزيع الذي سيتم تشغيله. يشير الاشتراك إلى توزيع على مستوى الاشتراك وتشير ResourceGroup إلى توزيع إلى مجموعة موارد.
- يجب تحديد خاصية location في Deployment عند استخدام عمليات التوزيع على مستوى الاشتراك.
- الإعداد الافتراضي هو ResourceGroup.
deployment
(مطلوب)- يجب أن تتضمن هذه الخاصية توزيع القالب الكامل حيث سيتم تمريره إلى
Microsoft.Resources/deployments
PUT API. لمزيد من المعلومات، راجع توزيع واجهة برمجة تطبيقات REST. - يجب أن يستخدم
Microsoft.Resources/deployments
المتداخل داخل القالب أسماء فريدة لتجنب الخلاف بين تقييمات النهج المتعددة. يمكن استخدام اسم التوزيع الأصل كجزء من اسم التوزيع المتداخل عبر[concat('NestedDeploymentName-', uniqueString(deployment().name))]
.
إشعار
يتم تقييم جميع الدالات داخل الخاصية
deployment
كمكونات للقالب، وليس النهج. الاستثناء هو الخاصيةparameters
التي تمرر القيم من النهج إلى القالب.value
يتم استخدام في هذا القسم ضمن اسم معلمة قالب لتنفيذ تمرير هذه القيمة (راجع fullDbName في المثال DeployIfNotExists).- يجب أن تتضمن هذه الخاصية توزيع القالب الكامل حيث سيتم تمريره إلى
مثال DeployIfNotExists
مثال: يقيم قواعد بيانات SQL Server لتحديد ما إذا كان transparentDataEncryption
ممكنا أم لا. إن لم يتم تمكينها، فحينها سيتم تنفيذ عملية التوزيع للتمكين.
"if": {
"field": "type",
"equals": "Microsoft.Sql/servers/databases"
},
"then": {
"effect": "deployIfNotExists",
"details": {
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"name": "current",
"evaluationDelay": "AfterProvisioning",
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
],
"existenceCondition": {
"field": "Microsoft.Sql/transparentDataEncryption.status",
"equals": "Enabled"
},
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"fullDbName": {
"type": "string"
}
},
"resources": [
{
"name": "[concat(parameters('fullDbName'), '/current')]",
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"apiVersion": "2014-04-01",
"properties": {
"status": "Enabled"
}
}
]
},
"parameters": {
"fullDbName": {
"value": "[field('fullName')]"
}
}
}
}
}
}
الخطوات التالية
- راجع الأمثلة في نماذج نهج Azure.
- راجع بنية تعريف نهج Azure.
- التعرف على كيفية إنشاء النُهج برمجيًا.
- تعرف على كيفية الحصول على بيانات التوافق.
- تعرف على كيفية إصلاح الموارد غير المتوافقة.
- راجع مجموعات إدارة Azure.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ