Terraform是一个开源的自动化资源编排工具。资源编排服务ROS(Resource Orchestration Service)为Terraform提供了托管的能力,您可以创建Terraform类型的模板和资源栈,编排阿里云、AWS或Azure的资源。Terraform功能兼容ROS API,您只需创建Terraform类型模板,即可调用ROS API实现相应功能。

使用限制

关于Terraform对ROS功能和资源的支持情况,请参见Terraform支持的功能和资源

开发方式

建议您使用熟悉的开发方式编写和测试Terraform代码。您可以采用以下开发方式:

通过ROS使用Terraform的优势

通过ROS使用Terraform相较直接使用Terraform CLI,增加了很多额外的能力,让用户拥有更好的体验,具体有以下几点:

  • 和ROS模板一致的控制台体验

    ROS 控制台提供了一致的用户体验,与ROS模板的管理方式相同,使用户能够在一个集中化的平台上管理所有资源。下图中展示了在ROS控制台和本地Terraform CLI中部署同一个 Terraform 模板的对比图:

    image

    image

    image

    image

  • 支持参数/属性的动态查询和选择

    image

    ROS可以在模板参数配置中指定AssociationProperty以获取所选地域下对应的资源,指定 AssociationPropertyMetadata 对不同参数添加筛选条件,以便在控制台动态选择参数配置。

    image

  • 根据模板询价

    在部署前,ROS 可以根据您的 Terraform 模板自动计算并显示预计的成本,帮助您更好地进行预算规划。

    image

  • 产品开通和角色检查

    • 自动检查:ROS会自动检查Terraform模板中涉及的产品是否已开通,所需的角色和权限是否存在,确保部署前的准备工作完善。image

    • 提示引导:如果发现未开通的产品或缺失的角色,ROS会提供明确的提示和引导,帮助用户快速完成必要的配置。

      image

  • 风险检查

    比如在删除资源(如安全组)时,ROS会自动检查可能带来的风险,帮助您避免潜在的问题。

    image

  • 支持模板版本管理和共享

    image

  • 标签和资源组传递

    可将标签、资源组一次性传递给模板中所有资源。

应用场景

创建Terraform类型资源栈

如果您希望在多个云平台(例如AWS、Azure等)或非云平台上创建并管理资源,Terraform可以帮助您实现跨云平台的资源编排和管理,您可以通过创建Terraform类型资源栈统一管理不同云平台上的资源。具体操作,请参见创建Terraform类型资源栈

创建Terraform类型模板

如果您希望在阿里云平台上创建并管理多云平台(AWS、Azure等)的资源,您可以在模板中定义多云平台的资源以及资源之间的依赖关系,方便您进行多云环境下的资源管理。具体操作,请参见创建Terraform类型模板

模板结构

Terraform类型模板是资源编排服务ROS(Resource Orchestration Service)托管Terraform后支持的模板,用于编排阿里云、AWS或Azure的资源。您可以在模板中定义资源、参数以及资源间的依赖关系。更多信息,请参见Terraform类型模板结构。关于如何定义模板中的参数,请参见Terraform产品介绍

开发建议

资源编排为Terraform提供了托管能力,当您了解了Terraform和Terraform托管方式,需要开发Terraform代码并在ROS中使用时,可以采用以下建议。更多信息,请参见Terraform代码开发方式和建议

  • 细化变量定义。

  • 建议指定Provider版本。

  • 通过伪参数获取资源栈信息。

  • 控制参数(变量)在控制台的输入方式。

  • 建议使用Aliyun::Terraform-v1.0及其以上版本。

  • 使用Metadata控制参数(变量)在控制台的显示。

  • 把仅供本地使用的代码放入以.debug.tf结尾的文件。

  • 不建议在.tf文件中声明阿里云(alicloud)Provider。

  • 不建议使用.tfvars文件,而是通过ROS参数传递变量值。

Terraform模板示例

关于Terraform的更多模板示例,请参见Terraform模板示例