Terraform - 将变量传递给"来源"参数

时间:2016-05-17 14:59:33

标签: github terraform

我以模块化的方式使用Terraform来构建我的基础架构。我这样做是通过一个调用不同模块的配置文件来实现的。我想传递一个基础结构变量,它可以获取应用程序应该构建的Github存储库的标记版本。最重要的是,我试图弄清楚如何在" source"中发生字符串串联。配置文件的变量。

module "athenaelb" {

   source = "${concat("git::https://github.com/ORG/REPONAME.git?ref=",var.infra_version)}"

   aws_access_key = "${var.aws_access_key}"

   aws_secret_key = "${var.aws_secret_key}"

   aws_region = "${var.aws_region}"

   availability_zones = "${var.availability_zones}"

   subnet_id = "${var.subnet_id}"

   security_group = "${var.athenaelb_security_group}"

   branch_name = "${var.branch_name}"

   env = "${var.env}"

   sns_topic = "${var.sns_topic}"

   s3_bucket = "${var.elb_s3_bucket}"

   athena_elb_sns_topic = "${var.athena_elb_sns_topic}"

   infra_version = "${var.infra_version}"

}

我希望它能够编译,并且源代码看起来像这样(例如):git :: https://github.com/ORG/REPONAME.git?ref=v1

有人对如何使这项工作有任何想法吗?

谢谢, 可人

1 个答案:

答案 0 :(得分:1)

目前Terraform本身无法做到这一点。

实现这样的目的的唯一方法是使用单独的脚本与git存储库交互,Terraform克隆到.terraform/modules目录的子目录中,并根据您需要的版本将其切换到不同的标记。这是不理想的,因为Terraform根据模块路径的哈希将这些组织到目录中,但是如果您可以识别相关模块,只要您不运行git checkout就可以安全地在这些存储库中运行terraform get之后再次{1}}。

有关此问题的详细信息和讨论,请参阅issue #1439 in Terraform's issue tracker,其中请求了此功能。