أنواع البيانات في قوالب ARM

توضح هذه المقالة أنواع البيانات المدعومة في قوالب Azure Resource Manager (قوالب ARM).

الأنواع المدعومة

في نموذج ARM، يمكنك استخدام أنواع البيانات التالية:

  • صفيف
  • منطقي
  • العدد الصحيح
  • كائن
  • secureObject
  • secureString
  • سلسلة

الصفائف

تبدأ الصفائف بقوس أيسر ([) وتنتهي بقوس أيمن (]). يمكن الإعلان عن المصفوفة في سطر واحد أو عدة أسطر. يتم فصل كل عنصر بفاصلة.

"parameters": {
  "exampleArray": {
    "type": "array",
    "defaultValue": [
      1,
      2,
      3
    ]
  }
},

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('exampleArray')]"
  },
  "firstExampleArrayElement": {
    "type": "int",
    "value": "[parameters('exampleArray')[0]]"
  }
}

يمكن أن تكون عناصر المصفوفة من نفس النوع أو أنواع مختلفة.

"variables": {
  "mixedArray": [
    "[resourceGroup().name]",
    1,
    true,
    "example string"
  ]
}

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('mixedArray')]"
  },
  "firstMixedArrayElement": {
    "type": "string",
    "value": "[variables('mixedArray')[0]]"
  }
}

القيم المنطقية

عند تحديد القيم المنطقية، استخدم true أو false. لا يُوضع حول القيمة علامات اقتباس.

"parameters": {
  "exampleBool": {
    "type": "bool",
    "defaultValue": true
  }
},

الأعداد الصحيحة

عند تحديد قيم أعداد صحيحة، لا تستخدم علامات الاقتباس.

"parameters": {
  "exampleInt": {
    "type": "int",
    "defaultValue": 1
  }
}

بالنسبة للأعداد الصحيحة التي تم تمريرها كمعلمات مضمنة قد يتم تقييد نطاق القيم بواسطة SDK أو أداة سطر الأوامر التي تستخدمها للنشر. على سبيل المثال، عند استخدام PowerShell لنشر قالب، يمكن أن تتراوح أنواع الأعداد الصحيحة من -2147483648 إلى 2147483647. لتجنب هذا التقييد، حدد قيم أعداد صحيحة كبيرة في ملف معلمة. تطبق أنواع الموارد حدودها الخاصة لخصائص الأعداد الصحيحة.

كائنات

تبدأ العناصر بقوس متعرج أيسر ({) وتنتهي بقوس متعرج أيمن (}). تتكون كل خاصية في الكائن من key وvalue. يتم تضمين key وvalue بين علامتي اقتباس مزدوجتين ويفصل بينهما نقطتان (:). يتم فصل كل خاصية بفاصلة.

"parameters": {
  "exampleObject": {
    "type": "object",
    "defaultValue": {
      "name": "test name",
      "id": "123-abc",
      "isCurrent": true,
      "tier": 1
    }
  }
}

يمكنك الحصول على خاصية من عنصر مع رمز نقطة.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "exampleObject": {
            "type": "object",
            "defaultValue": {
                "name": "test name",
                "id": "123-abc",
                "isCurrent": true,
                "tier": 1
            }
        }
    },
    "resources": [
    ],
    "outputs": {
        "nameFromObject": {
            "type": "string",
            "value": "[parameters('exampleObject').name]"
        }
    }
}

في JSON، العنصر هو مجموعة غير مرتبة من أزواج صفرية أو أكبر من المفاتيح/القيم. يمكن أن يكون الترتيب مختلفًا اعتمادًا على عمليات التنفيذ. على سبيل المثال، تقوم دالة Bicep items() بفرز العناصر بالترتيب الأبجدي. في أماكن أخرى، يمكن الاحتفاظ بالترتيب الأصلي. وبسبب هذا عدم الحتمية، تجنب وضع أي افتراضات حول ترتيب مفاتيح الكائنات عند كتابة التعليمات البرمجية، والتي تتفاعل مع معلمات التوزيع والمخرجات.

السلاسل

يتم تمييز السلاسل بعلامات اقتباس مزدوجة.

"parameters": {
  "exampleString": {
    "type": "string",
    "defaultValue": "test value"
  }
},

السلاسل والعناصر الآمنة

تستخدم السلسلة الآمنة نفس تنسيق السلسلة، ويستخدم العنصر الآمن نفس تنسيق العنصر. عند ضبط معلمة على سلسلة آمنة أو عنصر آمن، لا يتم حفظ قيمة المعلمة في محفوظات التوزيع ولا يتم تسجيلها. ومع ذلك، إذا ضبطت تلك القيمة الآمنة إلى خاصية لا تتوقع قيمة آمنة، فلن تكون القيمة محمية. على سبيل المثال، إذا ضبطت سلسلة آمنة إلى علامة، يتم تخزين هذه القيمة كنص عادي. استخدم سلاسل آمنة لكلمات المرور والبيانات السرية.

يوضح المثال التالي معلمتين آمنتين.

"parameters": {
  "password": {
    "type": "securestring"
  },
  "configValues": {
    "type": "secureObject"
  }
}

إشعار

لا تستخدم سلاسل أو عناصر آمنة كقيم إخراج. إذا قمت بتضمين قيمة آمنة كقيمة إخراج، فلن يتم عرض القيمة في محفوظات التوزيع ولا يمكن استردادها من قالب آخر. بدلا من ذلك، احفظ القيمة الآمنة في key vault، ومررها كمعلمة من key vault.

الخطوات التالية

للتعرف على بنية النموذج، راجع فهم بنية وبناء جملة قوالب ARM.