管理模板

更新时间:
复制 MD 格式

模板用于保存和版本化Terraform代码,供任务和资源栈复用。使用模板可以统一维护基础设施代码,并通过已发布版本控制不同执行对象使用的代码内容。本文说明如何创建模板、编辑和发布版本,以及更新或删除模板。

适用场景

本文适用于在自动化服务台中创建、编辑、发布、更新或删除Terraform模板的场景。创建的模板可以供任务和资源栈引用。

前提条件

当前登录身份已具备管理自动化服务台模板所需的RAM权限。

创建模板

创建模板前,准备Terraform代码或确定代码来源。

选择模板来源

自动化服务台支持以下模板来源:

模板来源

适用场景

是否支持在线编辑

代码更新方式

空白模板

在控制台中从零编写Terraform代码

编辑草稿并手动发布版本

文件上传

将本地Terraform代码以ZIP包形式上传

上传后编辑草稿并手动发布版本

工作空间

复用Registry与工作空间中已有的模块版本

在工作空间中发布模块版本,再更新模板引用的模块版本

OSS导入

OSS公网访问地址导入Terraform代码ZIP

上传新的ZIP包并更新模板的OSS来源路径

资源导出

使用存量资源导出任务生成的Terraform代码

执行资源导出任务,再更新模板引用的成功导出版本

说明

文件上传和OSS导入使用的ZIP包中应包含Terraform代码文件,例如main.tfvariables.tf。避免在ZIP包中增加无必要的顶层目录。OSS导入仅支持OSS公网访问地址,不支持VPC内网访问地址。

在控制台创建模板

  1. 登录自动化服务台控制台

  2. 在左侧导航栏选择模板 > 模板管理

  3. 单击新建模板

  4. 选择模板来源,然后单击下一步

  5. 配置模板。

    配置项

    是否必填

    说明

    模板名称

    输入当前账号下唯一的模板名称。

    模板描述

    说明模板的用途。

    标签

    添加用于分类和筛选模板的标签。

    来源配置

    根据模板来源上传ZIP包、选择工作空间模块版本、填写OSS来源路径或选择资源导出任务及版本。空白模板无需配置代码来源。

  6. 单击提交

创建成功后,系统生成模板ID并进入模板详情页。空白模板和文件上传模板可以继续编辑草稿;其他来源的代码在模板中只读。

说明

每个阿里云账号默认最多创建50个模板,实际配额以控制台显示为准。达到配额后,在配额中心申请提升配额,或删除不再使用的模板。

编辑代码并发布版本

空白模板和文件上传模板支持在控制台中编辑和发布。工作空间、OSS导入和资源导出来源的代码在模板中只读,需要从相应来源更新代码。

保存草稿

每个可编辑模板维护一份草稿。保存草稿不会生成正式版本,也不会改变任务或资源栈当前使用的代码。

  1. 进入模板详情页。

  2. 在代码编辑区域打开编辑开关。

  3. 修改Terraform代码。

  4. 单击保存

发布新版本

代码完成检查后,将草稿发布为不可修改的版本:

警告

如果关联任务的触发模式为模板新版本触发,发布版本后系统会自动启动该任务。发布前检查关联任务及其执行方式,避免非预期的云资源变更。

  1. 在模板详情页单击发布新版本

  2. 配置版本信息。

    配置项

    是否必填

    说明

    版本名称

    输入用于标识本次发布的名称。

    版本描述

    说明本次代码变更。

  3. 单击确定

系统按照v1v2v3的顺序生成版本号。发布成功后,可以在版本列表中查看代码和变量信息。

重要

已发布版本不可修改,也不能单独删除。后续代码变更需要修改草稿并发布新版本。

发布动作本身不直接修改云资源。除模板新版本触发的任务外,其他任务继续使用其配置的模板版本;资源栈只有在获取最新配置并部署后,才会使用模板的最新发布版本。

基于历史版本修改

要基于历史版本继续开发,执行以下操作:

  1. 在模板详情页的版本列表中选择目标版本。

  2. 单击Fork,将该版本的代码复制到当前草稿。

  3. 修改并保存草稿。

  4. 发布新版本。

Fork不会修改原版本。新版本号继续按照当前模板的版本序列递增。

声明敏感变量

不要在模板代码中写入密码、AccessKey或令牌等敏感值。可以将输入变量声明为敏感变量:

variable "db_password" {
  description = "Database password"
  type        = string
  sensitive   = true
}
重要

sensitive = true用于标识敏感变量和隐藏相关展示内容,不会保护写入代码中的默认值。实际敏感值应由参数集、任务参数或资源栈输入提供。

在自动化服务台中保存敏感参数值前,先在系统设置 > 密钥设置中完成密钥与加密配置。系统可以使用服务密钥或用户管理的KMS密钥。

更新模板

模板创建后,可以更新基本信息。不同来源的代码更新方式不同。

更新基本信息

  1. 进入模板详情页的基本信息区域。

  2. 单击编辑

  3. 修改模板名称、模板描述或标签。

  4. 保存修改。

模板ID、模板来源和所有者创建后不能修改。

更新只读来源

工作空间、OSS导入和资源导出来源不支持直接编辑代码:

  • 工作空间:在工作空间中发布新的模块版本,然后更新模板引用的模块版本。

  • OSS导入:将新ZIP包上传到新的OSS路径,然后更新模板的OSS来源路径。仅覆盖原路径中的对象不会可靠地产生新的模板版本。

  • 资源导出:执行资源导出任务并生成成功版本,然后更新模板引用的导出版本。

更新来源后,在模板版本列表中确认是否已经生成新版本,再让任务或资源栈使用该版本。

删除模板

删除模板会同时删除草稿和全部已发布版本,但不会销毁由任务或资源栈创建的云资源。

警告

删除前确认任务和资源栈不再需要该模板。模板被任务引用时,系统会拒绝删除;资源栈仍引用该模板时,删除后将无法继续获取该模板的新配置。

  1. 在模板列表中找到目标模板。

  2. 单击操作列的删除

  3. 在确认对话框中单击确定

要同时释放云资源,需要在对应任务或资源栈中执行Destroy。删除模板本身不会执行Destroy。

常见问题

模板和Terraform模块是同一个对象吗?

不是。模板是自动化服务台中保存和版本化Terraform代码的对象。Terraform模块是Terraform代码中的可复用单元,也可以发布到Registry与工作空间中供模板引用。

覆盖OSS中原路径的ZIP包会自动生成模板版本吗?

不能依赖该行为。OSS导入模板根据配置的来源路径获取代码。要生成新版本,将ZIP包上传到新的OSS路径并更新模板的来源路径,然后检查模板版本列表。

删除模板会同时销毁云资源吗?

不会。删除模板只删除模板及其版本,不会执行Terraform Destroy。需要在对应任务或资源栈中销毁云资源。