2016-05-17 209 views
1

我以模塊化方式使用Terraform以構建我的基礎結構。我通過在不同模塊中調用配置文件來實現這一點。我想傳遞一個基礎結構變量,該變量挑選應用程序應構建的Github存儲庫的標記版本。最重要的是,我試圖弄清楚如何在配置文件的「source」變量中進行串聯。Terraform - 將變量傳遞給「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}" 

} 

我想它來編譯和源看起來像這樣(例如):混帳:: https://github.com/ORG/REPONAME.git?ref=v1

人對如何使這項工作有什麼想法?

感謝, 可人

+0

P.S.抱歉可怕的格式化...無法提交此代碼塊bc堆棧溢出抱怨格式化... – Keren

+0

它尚未支持。請檢查 - https://github.com/hashicorp/terraform/issues/1439 – Baskar

回答

0

這是不可能的目前Terraform本身。

實現此目的的唯一方法是使用單獨的腳本與git存儲庫進行交互,該git存儲庫將Terraform克隆到.terraform/modules目錄的子目錄中,並根據您需要的版本將其切換到不同的標記。這是非理想的,因爲Terraform會根據模塊路徑的散列將它們組織到目錄中,但是如果您可以識別相關模塊,只要您以後不再運行terraform get,則可以安全地在這些存儲庫中運行git checkout

有關此問題的更多詳細信息和討論,請參閱issue #1439 in Terraform's issue tracker,請求此功能。

+0

好的,謝謝你的信息。我最終運行了幾個bash命令,根據我傳入的內容使用特定標記覆蓋源URL的末尾。 – Keren