官术网_书友最值得收藏!

ARM template structure

ARM templates have six top-level elements:

  • schema
  • contentVersion
  • parameters
  • variables
  • resources
  • outputs

Here's a typical template without any meaningful data:

Let's take a look at each of these elements:

  • schema: Defines the grammar, scope, and constraints for elements that are legal and can be used within the template. It helps to ensure that only elements that will keep the template well-defined and valid are allowed, otherwise it will generate an error. The schema also provides the structure for complete ARM templates, including all resources. The value for the schema is an URI that can be navigated to and it is collection of Resource schema URI's. Each resource has its own schema and they all are referred as sub-schemas. One example is a schema for a virtual machine. The schema for virtual machines is defined at https://schema.management.azure.com/schemas/2017-07-01-preview/CloudSimple.PrivateCloudIaaS.json#/resourceDefinitions/virtualMachines, and this URI is mentioned within the master schema URI. It is mandatory to have this section in ARM templates.
  • contentVersion: Provides a means of assigning the version number to the template. A template can evolve over time due to feature enhancements or bug fixes. contentVersion helps in creating multiple versions of the same template. This is similar to version control for code using Azure DevOps or GitHub. For ARM templates, a four-part string identifier acts as version number. contentVersion is used while having parent-child relationship between linked templates. We will go through the linked template in Chapter 3, Understanding Core Elements of ARM Templates, of this book. It is mandatory to have this section in ARM templates.
  • parameters: This section provides us with the capability to accept values from users and help customize the template. It helps to increase the overall reusability of the template. We will look at parameters in greater detail in the Parameters section of this chapter. The parameters section accepts a JSON object as its value. This JSON object can contain multiple parameter definitions.
  • variables: Provides ability to define a value once and reuse it multiple times within the template. This helps in writing maintainable and bug-free templates. Again, we will look at variables in the Variables section. The variables section accepts a JSON object as its value. This JSON object can contain multiple variable definitions.
  • resources: This section is the core and main element of an ARM template. It is an optional element in the template structure. All resources and their configurations are declaratively defined here. When an ARM template is deployed, the resources section creates defined resources and configures them according to given specifications. Almost all of the chapters will focus on resources section to a great extent. The resources section accepts a JSON array as its value. This JSON array can contain multiple resource definitions. Square brackets, [], in JSON denote an array, while curly brackets, {}, denote a JSON object.
  • outputs: This section provides the ability to return or output values from templates to the user. This helps in finding the status of template execution and getting valuable information that is otherwise difficult to find and navigate. Chapter 3Understanding Core Elements of ARM Templates, discusses outputs in greater detail. The objects section accepts a JSON object as its value. This JSON object can contain multiple output definitions.

The preceding template structure cannot be deployed because it does not have resources defined within the mandatory resources section. At least one resource should be defined for a template to be deployable.

主站蜘蛛池模板: 遵义市| 蓬安县| 射洪县| 荣成市| 长岛县| 樟树市| 阳谷县| 二连浩特市| 三门县| 新竹县| 东港市| 张家口市| 会理县| 鸡西市| 田阳县| 永年县| 灵山县| 汤原县| 凤山县| 广河县| 浑源县| 攀枝花市| 称多县| 义乌市| 治多县| 凤山市| 巴彦淖尔市| 宁陵县| 昌都县| 泗洪县| 如皋市| 康乐县| 名山县| 拉萨市| 湟中县| 阜新| 龙胜| 图木舒克市| 逊克县| 邮箱| 博乐市|