استكشف مكونات القالب

مكتمل

تتم كتابة قوالب Azure Resource Manager بلغة JSON، مما يسمح لك بالتعبير عن البيانات المخزنة ككائن (مثل جهاز ظاهري) في النص.

مستند JSON هو أساسا مجموعة من أزواج القيمة المفتاح. كل مفتاح هو سلسلة يمكن أن تكون القيم:

  • سلسلة.
  • رقم
  • تعبير منطقي
  • قائمة القيم
  • أداة (وهو عبارة عن مجموعة من أزواج القيم الأساسية الأخرى)

يمكن أن يحتوي قالب Resource Manager على أقسام يتم التعبير عنها باستخدام تدوين JSON، ولكنها غير مرتبطة بلغة JSON نفسها:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "functions": [  ],
    "resources": [  ],
    "outputs": {  }
}

دعونا نراجع كل من هذه الأقسام في مزيد من التفاصيل قليلاً.

المعلمات

هذا هو المكان حيث تقوم بتحديد القيم القابلة للتكوين عند تشغيل القالب.

على سبيل المثال، قد تسمح لمستخدمي القالب بتعيين اسم مستخدم أو كلمة مرور أو اسم مجال.

إليك مثال يوضح معاملين: أحدهما لاسم مستخدم جهاز افتراضي (VMs) والآخر لكلمة مروره:

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "Username for the Virtual Machine."
    }
  },
  "adminPassword": {
    "type": "securestring",
    "metadata": {
      "description": "Password for the Virtual Machine."
    }
  }
}

المتغيرات

هذا هو المكان حيث تحدد القيم المستخدمة خلال القالب.

يمكن أن تساعد المتغيرات في تسهيل عملية صيانة القوالب الخاصة بك.

على سبيل المثال، يمكنك تحديد اسم حساب تخزين مرة واحدة كمتغير واستخدام هذا المتغير خلال القالب.

وفي حالة تغير اسم حساب التخزين، تحتاج فقط إلى تحديث المتغير.

فيما يلي مثال يوضح بعض المتغيرات التي توضح سمات الاتصال بالشبكة بالنسبة إلى جهاز ظاهري ما.

"variables": {
  "nicName": "myVMNic",
  "addressPrefix": "10.0.0.0/16",
  "subnetName": "Subnet",
  "subnetPrefix": "10.0.0.0/24",
  "publicIPAddressName": "myPublicIP",
  "virtualNetworkName": "MyVNET"
}

الدالات

هذا هو المكان حيث تحديد الإجراءات التي لا تريد تكرارها خلال القالب.

وكما هو الحال مع المتغيرات، يمكن أن تساعد الدوال في تسهيل عملية صيانة القوالب الخاصة بك.

إليك مثالاً يقوم بإنشاء الوظيفة لإنشاء اسم فريد يمكن استخدامه عند إنشاء موارد لها متطلبات تسمية فريدة على المستوى العالمي.

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

الموارد

هذا القسم هو المكان الذي تقوم بتعريف موارد Azure التي تشكل النشر الخاص بك.

إليك مثالاً يقوم بإنشاء مورد عنوان IP عام.

{
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('publicIPAddressName')]",
  "location": "[parameters('location')]",
  "apiVersion": "2018-08-01",
  "properties": {
    "publicIPAllocationMethod": "Dynamic",
    "dnsSettings": {
      "domainNameLabel": "[parameters('dnsLabelPrefix')]"
    }
  }
}

هنا، نوع المورد هو Microsoft.Network/publicIPAddresses.

تتم قراءة الاسم من قسم المتغيرات، ويتم قراءة الموقع، أو منطقة Azure، من قسم المعلمات.

نظرا لأن أنواع الموارد يمكن أن تتغير بمرور الوقت، apiVersion تشير إلى إصدار نوع المورد الذي تريد استخدامه.

مع تطور أنواع الموارد وتغييرها، يمكنك تعديل القوالب الخاصة بك للعمل باستخدام أحدث الميزات عندما تكون مستعدًا.

الإخراجات

هذا هو المكان حيث تقوم بتحديد أي معلومات ترغب في تلقيها عند تشغيل القالب.

على سبيل المثال، قد تحتاج إلى تلقي عنوان IP الخاص ب VM أو اسم مجال مؤهل بالكامل (FQDN)، وهي المعلومات التي لن تعرفها حتى يتم تشغيل النشر.

فيما يلي مثال يوضح إخراج اسم المضيف.

تتم قراءة قيمة FQDN من إعدادات عنوان IP العام الخاص بالجهاز الظاهري.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
  }
}