#terraform #google-kubernetes-engine #dynatrace #helmfile
#terraform #google-kubernetes-engine #dynatrace
Вопрос:
resource "kubernetes_namespace" "app_dynatrace_namespace" {
count = var.application_cluster_dynatrace ? 1 : 0
# provider = kubernetes
metadata {
name = var.splitter_dynatrace_namespace
}
depends_on = [null_resource.cluster_creation]
}
resource "helm_release" "application_cluster_dynatrace" {
count = var.application_cluster_dynatrace ? 1 : 0
# provider = helm
repository = "https://raw.githubusercontent.com/Dynatrace/helm-charts/master/repos/stable/"
chart = "dynatrace-oneagent-operator"
name = "dynatrace-oneagent-operator"
namespace = var.app_dynatrace_namespace
values = [
var.application_cluster_dynatrace ? "${file("dev/dynatrace/dynatrace.yaml")}" : null
]
depends_on = [kubernetes_namespace.app_dynatrace_namespace]
}
Файл переменных содержит следующее содержимое:
variable "application_cluster_dynatrace" {}
variable "app_dynatrace_namespace" { default = "devns" }
Я использую приведенный выше сценарий terraform для создания пространства имен в кластере kubernetes, а затем устанавливаю helm chart для dynatrace agent. Когда я запускаю скрипт и указываю «0» или false во время выполнения, terraform уничтожает пространство имен и конфигурацию dynatrace. Есть ли в terraform способ не уничтожать пространство имен (игнорировать шаги), когда во время выполнения передается «0» или false?
Terraform v0.12.26
- provider.google v3.24.0
- provider.google-бета версия версии v3.33.0
- поставщик.helm v1.2.2
- provider.kubernetes v1.11.3
- provider.null v2.1.2
Ответ №1:
прежде всего, это ожидаемое поведение terraform — если вы изменили count с 1 на 0, для terraform это означает «должно быть развернуто 0 ресурсов», и terraform удаляет это.
Я думаю, вы можете использовать разные переменные для параметров «count». Например, для app_dynatrace_namespace вы можете установить «application_cluster_dynatrace_namespace», а для application_cluster_dynatrace оставить application_cluster_dynatrace.