Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform 0.11中区分根模块提供程序和调用模块提供程序_Terraform - Fatal编程技术网

Terraform 0.11中区分根模块提供程序和调用模块提供程序

Terraform 0.11中区分根模块提供程序和调用模块提供程序,terraform,Terraform,我有一个Terraform模块(我们称之为module1),它利用了google和google beta版本2.20的提供者 我打算从另一个模块(我们称之为module2)调用此模块,该模块(出于某种原因)对google和google beta提供商的配置有限制,如下所示: provider "google-beta" { version = "< 2.12" } provider "google" { version = "< 2.12" } …同时,module1可以

我有一个Terraform模块(我们称之为
module1
),它利用了
google
google beta
版本
2.20
的提供者

我打算从另一个模块(我们称之为
module2
)调用此模块,该模块(出于某种原因)对
google
google beta
提供商的配置有限制,如下所示:

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

provider "google" {
  version = "< 2.12"
}
…同时,
module1
可以保留自己版本的
google
providers?

您可以

module2
中定义另外两个具有别名和适当版本的提供程序,然后显式使用这些提供程序调用
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"
}
模块mymodule{
source=“../../../path/to/module1”
提供者={
google beta=“google beta.newer”
google=“google.newer”
}
}
提供商“谷歌测试版”{
version=“<2.12”
}
提供商“谷歌”{
version=“<2.12”
}
提供商“谷歌测试版”{
version=“~>2.20”
alias=“更新”
}
提供商“谷歌”{
version=“~>2.20”
alias=“更新”
}

这失败了,因为以下
没有提供程序“google beta”插件满足约束“<2.12,~>2.20,~>2.20”。
不知道为什么会出现错误,特别是当我们使用伪代码时,您是否在
模块1
中定义了空的提供程序块?我链接到的文档部分的最后一段提到了terraform 0.11的一些要求,当显式传递时,需要在子模块中使用空的提供者块
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"
}