0

我有两个存储库(由于我的管道设置,它必须是两个),一个存储库包含创建 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,但它不起作用,因为我的terraform代码没有合并到还没有开发分支,而且似乎无法识别代码,我现在该怎么办?希望这是有道理的,谢谢。

4

2 回答 2

1

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

Terragrunt CLI 选项

于 2020-12-07T12:25:44.230 回答
1

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

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

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

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

于 2020-12-07T22:52:17.600 回答