Как использовать пока недоступную информацию в последующих шагах Terraform? - PullRequest
1 голос
/ 29 июня 2019

Я создаю кластер GKE, подобный этому, со следующими настройками аутентификации:

master_auth {
    # Setting an empty username and password explicitly disables basic auth
    username = ""
    password = ""

    # Whether client certificate authorization is enabled for this cluster.
    client_certificate_config {
      issue_client_certificate = false
    }
  }

После создания кластера я использую другого провайдера для установки диаграмм управления:

provider "helm" {
  kubernetes {
    host = ...
  }
  tiller_image = "gcr.io/kubernetes-helm/tiller:v2.14.1"
}

Мой вопрос: как заполнить блок kubernetes информацией об аутентификации, предположительно получаемой на этапе создания кластера?

1 Ответ

1 голос
/ 30 июня 2019

Вы можете интерполировать значения, чтобы настроить провайдера так же, как и для всего остального в Terraform.

Так что в вашем случае вы можете использовать что-то вроде следующего:

resource "google_container_cluster" "cluster" {
  # ...
}

provider "helm" {
    kubernetes {
        host     = "https://${google_container_cluster.cluster.endpoint}"
        username = "${google_container_cluster.cluster.master_auth.0.username}"
        password = "${google_container_cluster.cluster.master_auth.0.password}"

        client_certificate     = "${google_container_cluster.cluster.master_auth.0.client_certificate}"
        client_key             = "${google_container_cluster.cluster.master_auth.0.client_key}"
        cluster_ca_certificate = "${google_container_cluster.cluster.master_auth.0.cluster_ca_certificate}"
    }
}

Обратите внимание, что не все поставщики могут выполнять интерполяцию из несуществующего ресурса, поскольку некоторые поставщики выполняют обнаружение функций во время инициализации поставщика, которая происходит до того, как граф зависимостей должен использовать поставщика. Поставщик Postgresql является примером этого. Эти поставщики могут по-прежнему работать с ресурсом после его создания или использовать источник данных для доступа к информации, если зависимый ресурс был создан в другом файле контекста / состояния.

...