【问题标题】:Terraform module - add git source with PAT ( As env variable)Terraform 模块 - 添加带有 PAT 的 git 源(作为 env 变量)
【发布时间】:2020-10-21 06:34:23
【问题描述】:

我们正在使用 BitBucket,我们决定将我们的模块移动到不同的存储库。 现在我想使用 PAT 来克隆 repo。

例子:

module "vpc" {
  source            = "git::ssh://git@<URL>/<Project>/<Repo>.git//bla/bla2"
  module_enabled    = var.create_vpc
  region            = var.region
  deploy_name       = var.deploy_name
  vpc_cidr          = var.vpc_cidr
  subnet_prefixes   = var.subnet_prefixes
  ssh_source_ranges = var.ssh_source_ranges
  environment       = var.environment
  subnet_names      = var.subnet_names
  //  app_names              = "${var.app_names}"
  //  natgw_private_ip       = "${module.natgw.private_ip}"
  //  nat_subnets            = "${var.nat_subnets}"
}

我需要使用环境变量将 PAT 添加到 git URL

我试图做类似的事情:

 "git::ssh://${blabla}@<URL>/<Project>/<Repo>.git//bla/bla2"

得到了这个错误: "模块源中不允许插值"

更新 #1: 澄清一下 - 没有 PAT 变量的 URL 工作正常

更多信息: TF 版本:0.12.20

谢谢, 阿米特

【问题讨论】:

  • 什么是PAT?您能否扩展您的问题以解释它和/或链接到更多信息?
  • 当然。 PAT = 个人访问令牌。你可以通过多种方式克隆你的仓库(SSH / HTTP / PAT)

标签: bitbucket terraform


【解决方案1】:

您不能在模块源代码行中使用除 refs 以外的任何东西(如标签等)。例如,它不允许使用变量。

这样做的原因是在查看变量之前查看模块源。如果您尝试使用 git 存储库中的子目录 - 这就是它的样子,您有两个选择:

  1. 使用 local-exec 配置器来克隆 repo - 虽然我从来没有这样做过,需要测试以确保正确的顺序

  2. 将您的模块放在它自己的存储库中(正确答案)

【讨论】:

  • 不确定我是否理解。我们所有的模块都位于带有子目录的不同存储库中。你是说我需要将每个模块放在不同的仓库中?
  • 如果是这样的话 - 我仍然需要使用 PAT 令牌。问题不在于子目录,而是我在 Docker 映像上运行 terraform,我需要 PAT 进行 git 身份验证。
  • 好吧,直到有新东西。 ssh 类型只需要安装一个 ssh 密钥。您可以使用ssh-keygen 生成一个,然后将公钥上传到您的 vcs 主机中允许的 ssh 密钥列表中吗?
  • 根据我的经验,PAT 用于基于 https 的身份验证。您可以通过多种方法传递您的 http 用户名/密码,git-scm.com/book/en/v2/Git-Tools-Credential-Storage
  • 是的,但是可以在 terraform 模块块中添加 ENV VARIABLE 吗?
【解决方案2】:

当 Terraform 从 Git 存储库中检索模块源代码时,它会直接运行 git 命令,以便它能够获取您在周围环境中拥有的凭据,这通常允许您运行直接git,无需明确提供凭据。 Terraform 通常不应直接处理您的 Git 凭据。

如果您在自动化系统中运行 Terraform,那么您可能需要 configure a different credentials storage method 以授予 Git 访问凭据的权限。

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 2019-03-03
    • 2020-07-08
    • 2021-01-11
    • 2021-04-01
    • 2011-01-11
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多