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



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

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

这将通过运行"terraform apply"为我创建s3 bucket。

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

我看了一下这一页:https://www.terraform.io/docs/modules/sources.html,它说我也可以指定一个github url,但它不起作用,因为我的地形代码还没有合并到开发分支中,而且它似乎无法识别代码,我现在该怎么办?希望这是合理的,谢谢。

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

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

如果你想把它们分开,假设其中一个将被视为";上游依赖性";另一个的,所以您将分别对它们进行更改。下游版本通常取决于上游版本的特定版本,因此您可以在不立即被下游采用的情况下对上游进行更改,然后在准备将依赖版本更改为使用新版本时单独更改下游版本。如果你使用的是Git模块源代码,那么你可以指定一个特定的";版本";使用源URL中的ref参数,可以将其设置为提交id、分支名称或标记名称。

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

这是您可以通过--terragrunt-source选项对Terragrunt执行的操作。Terragrunt是Terraform的附加功能包装。

Terragrunt CLI选项

最新更新