Template Structure

Templates are blueprints for describing infrastructure and architecture and can be used to create stacks. The compiler defines resource requirements and configuration details in the template and describes the dependency between resources.

A template must be in the YAML format and consists of the following parts:

heat_template_version: xxxx-xx-xx
# Indicates the template version. This field is mandatory.
description:
# Provides template information, template application scenarios, and architecture. This field is optional.
parameter_groups:
# Indicates the parameter groups and parameter sequence. This field is optional.
parameters:
# Indicates the parameters to be input. Using parameters improves template flexibility and reusability. This field is optional.
resources:
# Indicates user-defined resources (such as VMs, networks, and volumes), dependencies among resources, and configuration details. This field is optional.
outputs:
# Indicates outputs of the created resources. This field is optional.
conditions:
# Indicates the conditions that stack creation time and update time must meet. This field is optional.

The following is an example template for creating an ECS.

heat_template_version: 2013-05-23

description: Simple template to deploy a single compute instance

parameters:
  key_name:
    type: string
    label: Key Name
    description: Name of key-pair to be used for compute instance
  image_id:
    type: string
    label: Image ID
    description: Image to be used for compute instance
  instance_type:
    type: string
    label: Instance Type
    description: Type of instance (flavor) to be used
  net_id:
    type: string
    label: Network UUID
    description: The network to be used

resources:
  my_instance:
    type: OS::Nova::Server
    properties:
      key_name: { get_param: key_name }
      image: { get_param: image_id }
      flavor: { get_param: instance_type }
      networks: [ { network: { get_param: net_id } } ]

Description:

  • heat_template_version: indicates the HOT template version. The value is a specified version. For details, see Template Version.

  • description: describes resources to be created using the template. This field is optional and can be user-defined.

  • parameters: defines some parameters, which are used in function get_param to define resource attributes. This field is optional.

  • resources: defines all resources to be created by RTS and dependencies between these resources. This field is the core of the template. type: indicates the resource type.