Скажите Terraform не уничтожать и создавать при обновлении null_resource - PullRequest
1 голос
/ 15 апреля 2020

У меня есть null_resource, который используется для установки / удаления манифестов YAML Kubernetes и выглядит следующим образом:

resource "null_resource" "manifest_provisioner" {
  count = var.enabled ? 1 : 0

  triggers = {
    manifest_file = <actual_content_of_the_yaml_manifest>
  }

  # Create-time provisioner
  provisioner "local-exec" {
    command = "kubectl apply -f -<<EOF\n${self.triggers.manifest_file}\nEOF"
  }

  # Destroy-time provisioner
  provisioner "local-exec" {
    when = destroy
    command = "kubectl delete -f -<<EOF\n${self.triggers.manifest_file}\nEOF"
  }
}

При добавлении нового манифеста или запросе его удаления ресурс работает как Ожидается.

Однако всякий раз, когда я хочу обновить существующий манифест, Terraform сначала уничтожает, а затем создает ресурс, что означает, что обновление всегда приведет к полному удалению объектов Kubernetes, что проблематично c.

Как я могу дать этому ресурсу команду запускать только средство создания времени при обновлении существующего ресурса?

...