我们正在使用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)
答案 0 :(得分:0)
您不能在模块源代码行中使用引用(例如标记等)以外的任何东西。例如,它不允许使用变量。
这样做的原因是在查看变量之前先查看模块源。如果您尝试使用git存储库中的子目录-看起来像这样,则有两个选择:
使用本地执行配置器来克隆存储库-尽管我从未这样做过,并且需要进行测试以确保正确的顺序
将模块放在自己的存储库中(正确答案)
答案 1 :(得分:0)
当Terraform从Git存储库中检索模块源代码时,它直接运行git
命令,以使其随后能够获取您在周围环境中拥有的凭据,这通常会使您直接运行git
而不显式提供凭据。 Terraform通常不应直接处理您的Git凭证。
如果您在自动化系统中运行Terraform,则可能需要configure a different credentials storage method才能授予Git访问凭据的权限。