Module 是 Terraform 组合多种资源的配置形态。在部分多资源场景下,使用 Module 能够更好地抽象业务,减少配置成本。您可将 Github 中的 Modules 发布到 terraform 仓库。本文介绍如何创建及发布 Terraform TencentCloud Module。
在 GitHub 中新建代码仓库。
命名格式为 terraform-<provider>-<name>
,例如 terraform-tencentcloud-vpc。
一个基本的 Module 需包含以下文件:
.
├── main.tf # 编写模块资源
├── variables.tf # 声明模块变量
├── outputs.tf # 声明模块输出
├── LICENCE # 声明许可
└── README.md # 自述文件
说明:
建议添加 example 目录,存放该模块引入和使用示例。您可参考 examples 进行添加。
登录 registry.terraform.io ,选择页面右上角的 Publish,并在下拉列表中单击 Module。如下图所示:
在页面中展开 “Select Repository on GitHub” 下拉列表,可在列表中查看个人账户下有管理权限的 Modules 仓库,选择需发布的 Module。如下图所示:
注意:
Module 可以使用个人 GitHub 仓库发布。若仓库名称符合terraform-tencentcloud-<name>
,则该 Modules 也会收录在 tencentcloud 的 Modules 中。
勾选 “ I agree to the Terms of Use.”后,单击 PUBLISH MODULE。
该仓库将会在几分钟后,自动同步到 terraform registry 中。如下图所示:
若您的 Module 涉及多人协作,则可以借助 GitHub Action 对请求合并的代码做初步检查。
本文以 terraform-tencentcloud-vpc 为例,在仓库根目录下新建 .github/workflow
目录,创建 pull-request.yml
文件。示例代码如下:
name: MR_CHECK
on:
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: hashicorp/setup-terraform@v1
- name: Module Files Checking
run: |
files=(
LICENSE
main.tf
version.tf
variables.tf
outputs.tf
README.md
)
test -d examples || echo "[WARN] Missing ./examples in modules directory, we strongly recommend you to provide example usage of this module."
for i in ${files[@]} ; do
fileCount=$(find ./ -name $i | wc -l)
if [[ $fileCount -gt 0 ]]; then
echo "[INFO] File: $i exist."
else
echo "[ERROR] Missing $i, a recommend module should include these files:\n ${files[@]}"
exit -1
fi
done
- name: Terraform Validate
run: |
terraform init
terraform validate
- name: Terraform Format Check
run: |
terraform fmt -diff -check -recursive
说明如下:
Module Files Checking
:检查该目录下是否包含上文中需要的文件。
Terraform Validate
:进行 Module 参数检查。
Terraform Format Check
:校验 Module 中的 tf 代码格式。
本页内容是否解决了您的问题?