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集群中创建一个名称空间,然后为dynatrace代理安装头盔图表。当我运行脚本并在运行时提及“ 0”或false时,terraform会破坏名称空间和dynatrace配置。在terraform中,是否有一种方法可以在运行时传递“ 0”或false时不破坏名称空间(忽略步骤)?
Terraform v0.12.26
答案 0 :(得分:1)
首先,这是terraform的预期行为-如果将count从1更改为0,对于terraform,这意味着“应部署0资源”,然后terraform删除它。
我认为您可以对“ count”参数使用不同的变量。例如,对于app_dynatrace_namespace,您可以设置“ application_cluster_dynatrace_namespace”,对于application_cluster_dynatrace,请保留application_cluster_dynatrace。