Диаграмма руля с использованием провайдера руля Terraform - ошибка при выполнении последовательных диаграмм - PullRequest
1 голос
/ 20 января 2020

Мне нужно установить рулевые карты, используя провайдера рулевого Terraform. Я попытался ввести задержку после выполнения первого, так как существует условие для завершения sh установки первой диаграммы и зависимости до установки второй диаграммы управления. С помощью приведенного ниже сценария обеспечения:

resource "helm_release" "istio-init" {
  name       = "istio-init"
  repository = "${data.helm_repository.istio.metadata.0.name}"
  chart      = "istio-init"
  version    = "${var.istio_version}"
  namespace  = "${var.istio_namespace}"
}

resource "null_resource" "delay" {
  provisioner "local-exec" {
    command = "sleep 200"
  }

  depends_on = ["helm_release.istio-init"]
}

resource "helm_release" "istio" {
  name       = "istio"
  repository = "${data.helm_repository.istio.metadata.0.name}"
  chart      = "istio"
  version    = "${var.istio_version}"
  namespace  = "${var.istio_namespace}"
}

Я вижу, что модуль задержки "null_resource" запускается при инициализации terraform в первый раз. При попытке удаления ресурсов и повторного запуска скрипта Terraform я вижу, что модуль null_resource больше никогда не запускается и ошибки инициализации исчезают. Разработчики Terraform предназначены для запуска только один раз?

1 Ответ

2 голосов
/ 20 января 2020

У Helm есть дополнительный флаг ожидания, который фактически блокирует выпуск, пока все ресурсы не закончатся. Если вы укажете переменную wait в своем ресурсе helm_release, Terraform (и Helm под капотом) будут ждать, пока все ресурсы не будут задействованы.

Например:

resource "helm_release" "istio-init" {
  name       = "istio-init"
  repository = "${data.helm_repository.istio.metadata.0.name}"
  chart      = "istio-init"
  version    = "${var.istio_version}"
  namespace  = "${var.istio_namespace}"
  wait       = true
  timeout    = 200
}
...