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

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.

主站蜘蛛池模板: 大姚县| 城市| 乌拉特后旗| 自贡市| 宣威市| 慈利县| 井冈山市| 车致| 日照市| 岳普湖县| 夏河县| 吉安市| 肃南| 英山县| 阿克陶县| 蒙城县| 云龙县| 绥江县| 潍坊市| 英德市| 芒康县| 咸阳市| 乾安县| 永春县| 潜江市| 德庆县| 英德市| 新津县| 喜德县| 盐源县| 曲阜市| 金昌市| 玛沁县| 綦江县| 常德市| 绍兴县| 清流县| 永寿县| 连江县| 扬中市| 前郭尔|