管理Registry与工作空间
Registry用于保存和版本化可复用的Terraform模块。将团队常用代码发布到工作空间后,可以在创建模板时选择指定的模块版本,也可以将自定义工作空间或模块共享给其他阿里云账号。
适用场景
本文适用于需要创建和维护自定义Terraform模块、跨账号复用模块,或使用Registry模块创建模板的场景。
前提条件
当前登录身份已具备管理Registry工作空间和模块所需的RAM权限。
了解Registry的组织结构
Registry按照工作空间、模块和模块版本三层结构组织Terraform代码:
工作空间:模块的命名空间。工作空间名称全局唯一。
模块:Terraform原生模块在工作空间中的管理对象。模块名称在所属工作空间下唯一。
模块版本:模块代码的一次发布。版本号在所属模块下唯一,发布后不可修改。
Registry包含以下模块类型:
模块类型 | 来源 | 可执行的操作 |
官方模块 | 由平台维护 | 查看和引用 |
自定义模块 | 当前账号创建 | 编辑草稿、发布版本、共享和删除 |
社区模块 | 平台从Terraform Registry同步 | 查看和引用 |
只有自定义模块支持编辑和发布版本。
Registry模块与模板不是同一个对象。Registry模块是可被其他Terraform代码调用的代码单元;模板用于保存和版本化一份可供任务或资源栈使用的Terraform代码。模板可以选择Registry模块版本作为代码来源。
创建工作空间
发布自定义模块前,先创建用于组织模块的工作空间。
登录自动化服务台控制台。
单击工作空间管理。
单击新建工作空间。
配置工作空间:
工作空间名称:输入2~128个字符。仅支持字母、数字、下划线(
_)和短划线(-)。名称全局唯一,创建后不能修改。不能使用iacservice、ros、landingzone、provider、source、name、module、namespace、github或aliyun。工作空间描述:输入工作空间的用途,最多1024个字符。
维护者:输入工作空间的负责人信息。
单击提交。
创建成功后,工作空间类型显示为自定义工作空间。可以进入工作空间详情页创建模块。
创建和发布模块
自定义模块使用草稿保存未发布代码。发布版本时,系统复制当前草稿并解析模块信息。
创建模块
进入自定义工作空间详情页。
单击发布模块。
配置模块:
模块名称:输入2~128个字符。仅支持字母、数字、下划线(
_)和短划线(-)。名称在所属工作空间下唯一,创建后不能修改。描述:输入模块用途,最多1024个字符。
单击提交。
编辑草稿
进入模块详情页的模块管理页签,使用以下任一方式维护草稿:
在线编辑:在代码编辑器中创建或修改文件,适用于少量代码修改。
上传ZIP包:上传包含完整模块代码的ZIP包,适用于导入本地项目中的模块。
草稿至少需要包含有效的Terraform配置。要在模块详情中展示使用说明,在模块根目录中添加README.md文件。
发布版本
在模块详情页选择版本管理页签。
单击发布版本。
输入版本号。版本号必须采用
主版本号.次版本号.修订号格式,例如1.0.0或2.3.1。单击提交。
发布成功后,系统从模块代码中解析README、输入变量、输出值、资源和模块依赖。已发布版本不可修改;后续代码变更需要编辑草稿并发布新的版本号。
验证模块
模块发布后,使用该版本创建模板和任务,并执行Plan。确认Plan能够正常完成且资源变更符合预期后,再将模块提供给其他项目使用。
在模板中引用模块
创建模板时选择一个明确的模块版本。系统会将该版本的代码复制到模板中,后续发布的新模块版本不会自动改变已有模板。
单击新建模板。
选择工作空间模块作为模板来源。
选择工作空间、模块和模块版本。
配置模板名称等信息,然后提交。
也可以在Registry中进入目标模块详情页,通过新建模板入口创建模板。
通过Registry模块创建的模板代码只读。要使用新的模块版本,需要在模板中更新来源版本,并确认模板生成的新版本。删除上游模块或模块版本不会影响已经生成的模板版本,但模板后续将无法再选择已删除的来源版本。
更新工作空间和模块
只能更新自定义工作空间和自定义模块:
工作空间:可以更新描述,不能修改工作空间名称。
模块:可以更新描述,不能修改所属工作空间或模块名称。
模块代码:编辑草稿后发布新的模块版本。已发布版本不能修改。
删除工作空间、模块或版本
删除操作不会检查模板是否仍在引用相应的模块版本。删除前确认不再需要使用该来源创建或更新模板。
可以删除当前账号创建的自定义工作空间、模块或模块版本。官方模块、社区模块和其他账号共享的模块不能删除。
删除工作空间时,该工作空间中的自定义模块也会从Registry中删除。
删除模块时,该模块及其全部版本会从Registry中删除。
删除模块版本时,仅删除所选版本。
已经基于模块版本生成的模板保存独立的代码副本,可以继续执行。删除上游内容后,不能再使用被删除的工作空间、模块或版本创建新模板或更新模板来源。
使用限制
Registry存在以下限制:
每个阿里云账号默认最多创建50个自定义工作空间。
每个阿里云账号默认最多创建100个自定义模块。
工作空间名称全局唯一;模块名称在所属工作空间下唯一。
模块版本号仅支持
x.y.z三段数字格式。
实际配额以控制台显示为准。达到配额后,可以在配额中心申请提升。