Terraform模块-添加带有PAT的git源(作为env变量)

时间:2020-10-20 16:24:47

标签: bitbucket terraform

我们正在使用BitBucket,我们决定将模块移至其他存储库。 现在,我想使用PAT来克隆存储库。

示例:

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}"
}

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

我试图做类似的事情:

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

并收到此错误: “模块源中不允许插值”

更新#1: 需要澄清的是-没有PAT变量的URL正常工作

更多信息: TF版本:0.12.20

谢谢, 阿米特(Amit)

2 个答案:

答案 0 :(得分:0)

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

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

  1. 使用本地执行配置器来克隆存储库-尽管我从未这样做过,并且需要进行测试以确保正确的顺序

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

答案 1 :(得分:0)

当Terraform从Git存储库中检索模块源代码时,它直接运行git命令,以使其随后能够获取您在周围环境中拥有的凭据,这通常会使您直接运行git而不显式提供凭据。 Terraform通常不应直接处理您的Git凭证。

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