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。
- 路径分隔符正斜线(/)之间的值不能为空、
.
或..
。
- 文件内容
- 不能使用Provisioner功能和Backend功能。
- 可以使用Module Source功能,但只能为Workspace内的相对引用。必须以
./
开头,路径分隔符正斜线(/)之间的值不能为空、.
或..
。 - 可以使用Provider功能,但Provider只能为alicloud、aws或azurerm。