【问题标题】:how to specify 'source' in module if I don't want to use local path如果我不想使用本地路径,如何在模块中指定“源”
【发布时间】:2020-12-06 17:25:16
【问题描述】:

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

【问题讨论】:

  • 你所说的“两个 repos”是什么意思,你的 terraform 代码没有合并?您不能将第一个响应(使用 teraform 脚本)定义为您的大厅管道中的资源?

标签: terraform concourse terraform-modules concourse-pipeline concourse-task


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    Terragrunt CLI options

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 2021-12-05
      • 2022-08-16
      • 1970-01-01
      相关资源
      最近更新 更多