我很难理解 Gitlab 基础设施注册表发布 terraform 模块与仅引用 git 存储库相反的优势。使用上的差异
参考存储库:
.gitlab-ci.yml:
before_script:
- git config --global url."https://oauth2:${GITLAB_ACCESS_TOKEN}@gitlab.com/".insteadOf "https://gitlab.com"
地形:
module "module_test" {
source = "git::https://gitlab.com/terraform-modules/local_file?ref=v0.1.0"
}
使用基础设施注册表
.gitlab-ci.yml
variables:
TF_CLI_CONFIG_FILE: $CI_PROJECT_DIR/.terraformrc
before_script:
- echo -e "credentials \"$CI_SERVER_HOST\" {\n token = \"$CI_JOB_TOKEN\"\n}" > $TF_CLI_CONFIG_FILE
地形:
module "my_module_name" {
source = "gitlab.com/terraform-modules/local_file/local"
version = "0.1.0"
}
那么为什么要费心在基础设施注册表中创建模块呢?我错过了什么?
模块注册表是分发 Terraform 模块以在多个配置中使用的本机方式,使用完全支持模块版本控制的 Terraform 特定协议Gitlab 遵循 Terraform 的模块注册表协议
注册表模块支持版本控制。您可以提供如上面示例所示的特定版本,或使用灵活的版本约束。您可以使用版本,例如在你的版本中.tf
您可以在一个 Terraform 模块注册表中拥有多个模块
通过Registry,您可以指定模块之间的依赖关系。这可确保对一个模块的更改会触发相关模块中的适当更新,从而降低配置漂移的风险。
服务发现。模块注册表必须实现的各种操作。