Terraform类型模板是资源编排服务ROS(Resource Orchestration Service)托管Terraform后支持的模板,用于编排阿里云、AWS或Azure的资源。您可以在模板中定义资源、参数以及资源间的依赖关系。

模板结构

ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Terraform-2020-06-18'
Workspace:
  main.tf: |-
    module "my_vpc" {
      source      = "./modules/vpc"
    }
    resource "alicloud_vswitch" "vsw" {
      vpc_id            = "${module.my_vpc.vpc_id}"
      cidr_block        = "172.16.0.0/21"
      availability_zone = "cn-shanghai-b"
    }
    output "vsw_id" {
      value = "${alicloud_vswitch.vsw.id}"
    }
  modules/vpc/main.tf: |-
    resource "alicloud_vpc" "vpc" {
      name       = "tf_test"
      cidr_block = "172.16.0.0/12"
    }
    output "vpc_id" {
      value = "${alicloud_vpc.vpc.id}"
    }

模板说明

Terraform类型模板第一层只能包含ROSTemplateFormatVersion、Transform、Workspace或Description,详情如下表所示:

参数 是否必选 说明
ROSTemplateFormatVersion ROS支持的模板版本号,当前版本号:2015-09-01。
Transform Transform类型模板版本号,当前版本号:Aliyun::Terraform-2020-06-18。
Workspace

描述Terraform Workspace中所有模块的键值对。键为模块文件路径,值为模块文件内容。

Description 模板的描述信息。用于说明模板的适用场景和架构等,帮助您理解模板的内容。

Terraform类型模板语法详情,请参见模板语法

模板限制条件

Workspace包含文件路径和文件内容,限制条件如下:

  • Workspace内容不能为空,且最多指定50个文件。
  • 文件路径
    • 最长为1024个字符,路径中每个文件夹或文件的名字最长为255个字符。
    • 文件路径必须是相对路径,不能以正斜线(/)开头,必须以.tf结尾。
    • 可包含英文字母、数字或如下特殊字符:
       !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
    • 最大深度为5。例如:main.tf深度为1,modules/vpc/main.tf深度为3。
    • 路径分隔符正斜线(/)之间的值不能为空、...
  • 文件内容