Различия между root и поставщиками вызывающих модулей в Terraform 0.11 - PullRequest
0 голосов
/ 26 января 2020

У меня есть модуль Terraform (назовем его module1), который использует google и google-beta провайдера версии 2.20.

Я собираюсь вызвать этот модуль из другого (давайте Назовите это module2), что (по какой-то причине) имеет ограничение на конфигурацию провайдеров google и google-beta, как указано ниже:

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

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

Есть ли способ заставить module2 создать экземпляр module1 (более или менее следующим образом) и сохранить ограничения своих провайдеров?

(предположим, что приведенный ниже фрагмент взят из main.tf из module2


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

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

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

... в то же время module1 получает собственную версию google провайдеров?

1 Ответ

0 голосов
/ 26 января 2020

Вы можете явно передавать провайдеров при вызове модулей

В 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"
}
...