在Terraform 0.11中区分根模块提供者和调用模块提供者

时间:2020-01-26 13:35:18

标签: terraform

我有一个Terraform模块(我们将其称为module1),该模块利用版本google的{​​{1}}和google-beta提供程序。

我打算从另一个(由于某种原因)对2.20module2提供者的配置有限制的模块中调用该模块(我们称其为google),如下所示:

google-beta

是否有一种方法可以使provider "google-beta" { version = "< 2.12" } provider "google" { version = "< 2.12" } 实例化module2(或多或少如下)并保持其提供者的限制?

(假设下面的摘录来自module1的{​​{1}}

main.tf

...同时,module2是否保留自己的 module mymodule { source = "../../../path/to/module1" } provider "google-beta" { version = "< 2.12" } provider "google" { version = "< 2.12" } 提供程序版本?

1 个答案:

答案 0 :(得分:0)

您可以pass providers explicitly when calling modules

module2中再定义2个具有别名和适当版本的提供程序,然后使用这些提供程序显式调用module1

module mymodule {
  source        = "../../../path/to/module1"

  providers = {
    google-beta = "google-beta.newer"
    google      = "google.newer"
  }
}

provider "google-beta" {
  version = "< 2.12"
}

provider "google" {
  version = "< 2.12"
}

provider "google-beta" {
  version = "~> 2.20"
  alias   = "newer"
}

provider "google" {
  version = "~> 2.20"
  alias   = "newer"
}