У меня есть 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.
Как я могу дать этому ресурсу команду запускать только средство создания времени при обновлении существующего ресурса?