如何将Terraform模板转换为ROS支持的Terraform类型模板?

ROS不支持传递Terraform模板,本文为您介绍如何将Terraform模板转换为ROS支持的Terraform类型模板。

前提条件

请提前安装alibabacloud-ros-tran。

具体操作,请参见ROS Template Transformer

Terraform模板

Terraform模板相关内容,请参见什么是Terraform

main.tf

# Configure the AliCloud Provider
provider "alicloud" {}

# Create VPC and VSwitch
resource "alicloud_vpc" "myvpc" {
  cidr_block = "172.16.0.0/12"
  name       = "myvpc"
}

resource "alicloud_vswitch" "myvswitch" {
  vpc_id            = alicloud_vpc.myvpc.id
  cidr_block        = "172.16.0.0/21"
  availability_zone = "cn-beijing-g"
  name              = "myvswitch"
}

output.tf

output "vpc_id" {
  value = alicloud_vpc.myvpc.id
}

output "vswitch_id" {
  value = alicloud_vswitch.myvswitch.id
}

转换步骤

您可以通过如下命令将Terraform模板转换成ROS支持的Terraform类型模板。

rostran transform templates/terraform/alicloud -S terraform  --compatible

参数说明

  • templates/terraform/alicloud:本地Terraform模板所在地址。

  • -S:源模板文件的格式,这里指定为Terraform格式。支持auto(默认值)、terraform、excel和cloudformation,默认根据SOURCE_PATH后缀确定源文件格式。

  • --compatible:Terraform模板转换为ROS支持的Terraform类型模板时是否使用兼容模式。如果兼容,则将Terraform文件内容保留在已经生成的ROS模板中,否则转换为使用ROS语法的模板。此选项只适用于Terraform模板文件。

Terraform类型模板

Terraform模板转换成ROS支持的Terraform类型的模板如下所示。Terraform类型模板结构,请参见Terraform类型模板结构

ROSTemplateFormatVersion: '2015-09-01'
Transform: Aliyun::Terraform-v1.2
Workspace:
  main.tf: |
    # Configure the AliCloud Provider
    provider "alicloud" {}

    # Create VPC and VSwitch
    resource "alicloud_vpc" "myvpc" {
      cidr_block = "172.16.0.0/12"
      name       = "myvpc"
    }

    resource "alicloud_vswitch" "myvswitch" {
      vpc_id            = alicloud_vpc.myvpc.id
      cidr_block        = "172.16.0.0/21"
      availability_zone = "cn-beijing-g"
      name              = "myvswitch"
    }
  output.tf: |
    output "vpc_id" {
      value = alicloud_vpc.myvpc.id
    }

    output "vswitch_id" {
      value = alicloud_vswitch.myvswitch.id
    }