معلمات بنية تعريف نهج Azure
تساعد المعلمات في تبسيط إدارة النهج عن طريق تقليل عدد تعريفات النهج. فكر في معلمات مثل الحقول في نموذج: name
، ، address
، city
. state
تظل هذه المعلمات كما هي دائما ولكن تتغير قيمها استنادا إلى تعبئة النموذج الفردي. تعمل المعلمات بنفس الطريقة عند إنشاء النهج. من خلال تضمين المعلمات في تعريف النهج، يمكنك إعادة استخدام هذا النهج لسيناريوهات مختلفة باستخدام قيم مختلفة.
إضافة معلمات أو إزالتها
قد تتم إضافة المعلمات إلى تعريف موجود ومخصص. يجب أن تتضمن المعلمة الجديدة الخاصية defaultValue
. تمنع هذه الخاصية تعيينات النهج أو المبادرة الحالية من أن تكون غير صالحة بشكل غير مباشر.
لا يمكن إزالة المعلمات من تعريف نهج لأنه قد يكون هناك تعيين يعين قيمة المعلمة، وسيصبح هذا المرجع معطلا. بعض تعريفات النهج المضمنة إهمال المعلمات باستخدام بيانات التعريف "deprecated": true
، والتي تخفي المعلمة عند تعيين التعريف في مدخل Microsoft Azure. في حين أن هذا الأسلوب غير مدعوم لتعريفات النهج المخصصة، فإن هناك خيارا آخر هو تكرار وإنشاء تعريف نهج مخصص جديد بدون المعلمة .
خصائص المعلمات
تستخدم المعلمة الخصائص التالية في تعريف النهج:
name
: اسم المعلمة الخاصة بك. تستخدم بواسطة دالة التوزيعparameters
ضمن قاعدة النهج. لمزيد من المعلومات، راجع استخدام قيمة معلمة.type
: يحدد ما إذا كانت المعلمةstring
هي أوarray
أوobject
boolean
أوinteger
float
أوdateTime
.metadata
: يحدد الخصائص الفرعية المستخدمة بشكل أساسي من قبل مدخل Microsoft Azure لعرض معلومات سهلة الاستخدام:description
: شرح ما يتم استخدام المعلمة من أجله. يمكن استخدامها لتوفير أمثلة للقيم المقبولة.displayName
: : الاسم المألوف الموضح في البوابة للمعلمة.strongType
: (اختياري) يستخدم عند تعيين تعريف النهج من خلال المدخل. توفر قائمة مدركة للسياق. لمزيد من المعلومات، راجع strongType.assignPermissions
: (اختياري) تعيين على أنه صحيح لجعل مدخل Azure ينشئ تعيينات دور أثناء تعيين النهج. هذه الخاصية مفيدة في حالة رغبتك في تعيين أذونات خارج نطاق التعيين. هناك تعيين دور واحد لكل تعريف دور في النهج (أو لكل تعريف دور في جميع نهج المبادرة). يجب أن تكون قيمة المعلمة مورداً أو نطاقاً صالحاً.deprecated
: علامة منطقية للإشارة إلى ما إذا كانت المعلمة مهملة في تعريف مضمن.
defaultValue
: (اختياري) تعيين قيمة المعلمة في مهمة إذا لم يتم إعطاء أي قيمة. مطلوب عند تحديث تعريف نهج موجود تم تعيينه. بالنسبة للمعلمات من نوع عنصر، يجب أن تتطابق القيمة مع المخطط المناسب.allowedValues
: (اختياري) توفر صفيفًا من القيم التي تقبلها المعلمة أثناء التعيين.- حساسية الحالة: تكون مقارنات القيم المسموح بها حساسة لحالة الأحرف عند تعيين نهج، ما يعني أن قيم المعلمات المحددة في التعيين يجب أن تتطابق مع غلاف القيم في
allowedValues
الصفيف في التعريف. ومع ذلك، بمجرد تحديد القيم للتعيين، قد يكون تقييم مقارنات السلسلة غير حساس لحالة الأحرف اعتمادا على الشرط المستخدم. على سبيل المثال، إذا حددتDev
المعلمة كقيمة علامة مسموح بها في التعيين، وقارنت هذه القيمة بسلسلة إدخال باستخدامequals
الشرط، فسيقيم نهج Azure لاحقا قيمةdev
علامة كمطابقة على الرغم من أنها صغيرة لأنnotEquals
حالة الأحرف غير حساسة. - بالنسبة لمعلمات نوع العنصر، يجب أن تتطابق القيم مع المخطط المناسب.
- حساسية الحالة: تكون مقارنات القيم المسموح بها حساسة لحالة الأحرف عند تعيين نهج، ما يعني أن قيم المعلمات المحددة في التعيين يجب أن تتطابق مع غلاف القيم في
schema
: (اختياري) توفر التحقق من صحة مدخلات المعلمات أثناء التعيين باستخدام مخطط JSON معرف ذاتياً. هذه الخاصية مدعومة فقط للمعلمات من نوع العنصر، وتتبع تنفيذ مخطط Json.NET 2019-09. يمكنك معرفة المزيد حول استخدام المخططات في https://json-schema.org/ واختبار مخططات المسودة في https://www.jsonschemavalidator.net/.
عينة المعلمات
المثال 1
على سبيل المثال، يمكنك تحديد تعريف نهج للحد من المواقع التي يمكن توزيع الموارد فيها. يمكن استخدام allowedLocations
معلمة لتعريف النهج هذا بواسطة كل تعيين لتعريف النهج للحد من القيم المقبولة. يوفر استخدام strongType
تجربة محسنة عند إكمال التعيين من خلال المدخل:
"parameters": {
"allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of allowed locations for resources.",
"displayName": "Allowed locations",
"strongType": "location"
},
"defaultValue": [
"westus2"
],
"allowedValues": [
"eastus2",
"westus2",
"westus"
]
}
}
قد يكون ["westus", "eastus2"]
إدخال عينة لمعلمة نوع الصفيف هذه (بدون strongType
) في وقت التعيين .
المثال 2
في سيناريو أكثر تقدمًا، يمكنك تحديد نهج يتطلب استخدام حاويات مجموعات Kubernetes لتسميات محددة. يمكن استخدام labelSelector
معلمة لتعريف النهج هذا واستخدامها من قبل كل تعيين لتعريف النهج لتحديد موارد Kubernetes المعنية استنادا إلى مفاتيح التسمية والقيم:
"parameters": {
"labelSelector": {
"type": "Object",
"metadata": {
"displayName": "Kubernetes label selector",
"description": "Label query to select Kubernetes resources for policy evaluation. An empty label selector matches all Kubernetes resources."
},
"defaultValue": {},
"schema": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all resources.",
"type": "object",
"properties": {
"matchLabels": {
"description": "matchLabels is a map of {key,value} pairs.",
"type": "object",
"additionalProperties": {
"type": "string"
},
"minProperties": 1
},
"matchExpressions": {
"description": "matchExpressions is a list of values, a key, and an operator.",
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"description": "key is the label key that the selector applies to.",
"type": "string"
},
"operator": {
"description": "operator represents a key's relationship to a set of values.",
"type": "string",
"enum": [
"In",
"NotIn",
"Exists",
"DoesNotExist"
]
},
"values": {
"description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"key",
"operator"
],
"additionalProperties": false
},
"minItems": 1
}
},
"additionalProperties": false
}
},
}
سيكون إدخال عينة لمعلمة نوع العنصر هذه في وقت التعيين بتنسيق JSON، ويتم التحقق من صحتها بواسطة المخطط المحدد، وقد يكون:
{
"matchLabels": {
"poolID": "abc123",
"nodeGroup": "Group1",
"region": "southcentralus"
},
"matchExpressions": [
{
"key": "name",
"operator": "In",
"values": [
"payroll",
"web"
]
},
{
"key": "environment",
"operator": "NotIn",
"values": [
"dev"
]
}
]
}
استخدام قيمة معلمة
في قاعدة النهج، يمكنك الرجوع إلى المعلمات باستخدام بناء جملة الدالة التالي parameters
:
{
"field": "location",
"in": "[parameters('allowedLocations')]"
}
يشير هذا النموذج إلى المعلمة allowedLocations
التي تم توضيحها في خصائص المعلمة.
strongType
ضمن الخاصية metadata
، يمكنك استخدام strongType
لتوفير قائمة متعددة التحديد من الخيارات داخل مدخل Microsoft Azure. strongType
يمكن أن يكون نوع مورد مدعوم أو قيمة مسموح بها. لتحديد ما إذا كان نوع المورد صالحا ل strongType
، استخدم Get-AzResourceProvider. تنسيق نوع strongType
المورد هو <Resource Provider>/<Resource Type>
. على سبيل المثال، Microsoft.Network/virtualNetworks/subnets
بعض أنواع الموارد التي لم يتم إرجاعها مدعومة Get-AzResourceProvider
. هذه الأنواع هي:
Microsoft.RecoveryServices/vaults/backupPolicies
القيم غير المسموح بها لنوع strongType
المورد هي:
location
resourceTypes
storageSkus
vmSKUs
existingResourceGroups
الخطوات التالية
- لمزيد من المعلومات حول بنية تعريف النهج، انتقل إلى الأساسيات وقاعدة النهج والاسم المستعار.
- بالنسبة للمبادرات، انتقل إلى هيكل تعريف المبادرة.
- راجع الأمثلة في نماذج نهج Azure.
- راجع فهم تأثيرات النهج.
- التعرف على كيفية إنشاء النُهج برمجيًا.
- تعرف على كيفية الحصول على بيانات التوافق.
- تعرف على كيفية إصلاح الموارد غير المتوافقة.
- راجع المقصود بمجموعة الإدارة من خلال تنظيم مواردك باستخدام مجموعات إدارة Azure.