تعيين اسم ونوع الموارد التابعة
الموارد التابعة هي الموارد التي توجد فقط في سياق مورد آخر. على سبيل المثال، لا يمكن أن يوجد ملحق جهاز ظاهري بدون جهاز ظاهري. مورد الملحق هو تابع للجهاز الظاهري.
لا يقبل كل مورد أصل إلا أنواع موارد معينة كموارد تابعة. يتضمن نوع المورد للمورد التابع نوع المورد للمورد الأصل. على سبيل المثال، Microsoft.Web/sites/config
وMicrosoft.Web/sites/extensions
هما الموارد التابعة لـ Microsoft.Web/sites
. يتم تحديد أنواع الموارد المقبولة في مخطط قالب للمورد الأصل.
في قالب Azure Resource Manager (قالب ARM)، يمكنك تحديد المورد التابع إما داخل المورد الأصل أو خارج المورد الأصل. تختلف القيم التي توفرها لاسم المورد ونوع المورد استناداً إلى ما إذا كان المورد التابع معرفاً داخل المورد الأصل أو خارجه.
تلميح
نوصي باستخدام Bicep لأنها تقدم نفس الإمكانات التي توفرها قوالب ARM ولأن بناء الجملة أسهل في الاستخدام. لمعرفة المزيد، راجع الموارد الفرعية.
ضمن المورد الأصل
يوضح المثال التالي المورد التابع المضمن ضمن خاصية الموارد للمورد الأصل.
"resources": [
{
<parent-resource>
"resources": [
<child-resource>
]
}
]
يمكن تعريف الموارد التابعة بعمق خمسة مستويات فقط.
عند التعريف ضمن نوع المورد الأصل، يمكنك تنسيق قيم النوع والاسم كقطعة مفردة بدون شرطات مائلة.
"type": "{child-resource-type}",
"name": "{child-resource-name}",
يظهر المثال التالي شبكة ظاهرية وشبكة فرعية. لاحظ تضمين الشبكة الفرعية ضمن صفيف الموارد للشبكة الظاهرية. يتم تعيين الاسم إلى الشبكة الفرعية1 ويتم تعيين النوع إلى شبكات فرعية. يتم وضع علامة المورد التابعة كتابعة على المورد الأصل لأنه يجب أن يكون المورد الأصل موجوداً قبل أن يمكن نشر المورد التابع.
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2022-11-01",
"name": "VNet1",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
}
},
"resources": [
{
"type": "subnets",
"apiVersion": "2022-11-01",
"name": "Subnet1",
"dependsOn": [
"VNet1"
],
"properties": {
"addressPrefix": "10.0.0.0/24"
}
}
]
}
]
لا يزال نوع المورد الكامل هو Microsoft.Network/virtualNetworks/subnets
. لا يمكنك توفير Microsoft.Network/virtualNetworks/
لأنه مفترض من نوع المورد الأصل.
يتم تعيين اسم المورد التابع إلى الشبكة الفرعية1 ولكن الاسم الكامل يتضمن اسم الأصل. لا يمكنك توفير VNet1 لأنه مفترض من المورد الأصل.
المورد الأصل الخارجي
يوضح المثال التالي المورد التابع خارج المورد الأصل. يمكنك استخدام هذا الأسلوب إذا لم يتم نشر المورد الأصل في نفس القالب، أو إذا كنت ترغب في استخدام نسخة لإنشاء أكثر من مورد تابع واحد.
"resources": [
{
<parent-resource>
},
{
<child-resource>
}
]
عند التحديد خارج المورد الأصلي، يمكنك تنسيق قيم النوع والاسم باستخدام خطوط مائلة لتضمين النوع والاسم الأصل.
"type": "{resource-provider-namespace}/{parent-resource-type}/{child-resource-type}",
"name": "{parent-resource-name}/{child-resource-name}",
يظهر المثال التالي شبكة ظاهرية وشبكة فرعية يتم تعريفهما على مستوى الجذر. لاحظ أن الشبكة الفرعية غير مضمنة في صفيف الموارد للشبكة الظاهرية. يتم تعيين الاسم إلى VNet1/الشبكة الفرعية1 ويتم تعيين النوع إلى Microsoft.Network/virtualNetworks/subnets
. يتم وضع علامة المورد التابعة كتابعة على المورد الأصل لأنه يجب أن يكون المورد الأصل موجوداً قبل أن يمكن نشر المورد التابع.
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2022-11-01",
"name": "VNet1",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
}
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2022-11-01",
"name": "VNet1/Subnet1",
"dependsOn": [
"VNet1"
],
"properties": {
"addressPrefix": "10.0.0.0/24"
}
}
]
الخطوات التالية
- للتعرف على إنشاء قوالب ARM، راجع فهم هيكل وبنية قوالب ARM
- للتعرف على تنسيق اسم المورد عند الرجوع إلى المورد، راجع الدالة المرجعية.