如果我不想使用本地路径,如何在模块中指定 'source'

how to specify 'source' in module if I don't want to use local path

我有两个存储库(由于我的管道设置必须是两个),一个存储库包含创建 S3 存储桶所需的 terraform 脚本(非常简单),另一个存储库包含后端设置,当我在本地测试,我可以使用以下命令在第一个 repo 中下载模型:

module "xxxxxx-sagemaker" {
  source                         = "../../the_first_repo_name/terraform"
 }

这将通过 运行 'terraform apply' 为我创建 s3 存储桶。

但是现在如果我不想使用这个本地路径 ../../the_first_repo_name/terraform,我需要 Concourse 管道为我应用 terraform,我如何修改这个本地路径以便 Concourse 可以找到 terraform 脚本和下载了吗?

我查看了这个页面:https://www.terraform.io/docs/modules/sources.html,它说我也可以指定 github url,但它不起作用,因为我的地形代码没有合并进入develop分支,好像无法识别代码,请问怎么办?希望这是有道理的,谢谢。

您可以通过 --terragrunt-source 选项对 Terragrunt 执行此操作。 Terragrunt 是 Terraform 的包装器,用于提供额外的功能。

Terragrunt CLI options

此处 Terraform 设计的一般假设是,如果您有两个通常(或总是)一起更改的模块,那么您会将它们保存在同一个存储库中,因为通常的约定是单独的代码存储库表示软件独立发布

如果您通常希望同时更改两个模块,那么到目前为止,最简单的方法是将它们放在同一个存储库中,以便特定的 git 提交始终描述特定的组合两者中的一个,您可以通过代码审查等方式一起发送您的更改。

如果您希望将它们分开,假设其中一个将被视为另一个的“上游依赖项”,因此您将分别对它们进行更改。下游通常会依赖于上游的特定版本,因此您可以对上游进行更改,而无需立即被下游采用,然后当您准备更改它以使用新版本时,分别更改下游的依赖版本。如果您使用 Git 模块源,那么您可以使用源 URL 中的 ref 参数指定上游的特定“版本”,您可以将其设置为提交 ID,分支名称或标签名称。

将上游模块本身视为一个系统确实意味着您可能需要做一些额外的工作以使其作为一个独立的可维护系统自包含,例如在其中编写特殊的测试配置模块的存储库,以便您能够单独测试它。这些测试配置将使您在合并更改之前确信您的更改是正确的,这样您就可以独立于任何特定的下游模块测试上游。