Условно удалить блок
Следуя стандартному де-факто способу условного добавления и удаления блоков (1, 2, 3), я столкнулся с трудностями при создании плана, когда блок должен быть удален.
У меня есть следующая конфигурация tf. Обратите вниманиеdynamic
блок:
provider "kubernetes" {}
variable secret {
type = string
}
resource "kubernetes_deployment" "sample-deployment" {
metadata {
name = "sample-deployment"
labels = {
app = "api"
}
}
spec {
selector {
match_labels = {
app = "sample"
}
}
template {
metadata {
labels = {
app = "sample"
}
}
spec {
dynamic image_pull_secrets {
for_each = compact([var.secret])
content {
name = var.secret
}
}
container {
name = "httpenv"
image = "jpetazzo/httpenv:latest"
}
}
}
}
}
Затем я запускаю 3 команды, одну за другой:
Изначально создайте ресурс:
terraform apply -var secret=
Развертывание создано, и
image_pull_secret
нет в разнице.Установите секрет и обновите ресурс:
terraform apply -var secret=my-secret
Разница для обновления содержит:
+ image_pull_secrets { + name = "my-secret" }
Удалите секрет и снова обновите ресурс:
terraform apply -var secret=
Вывод пустой:
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Ясно, что я что-то упускаю, иначе я бы подумал, что эта проблема уже поднялась бы. Что мне не хватает?
Я использую версию terraform: v0.12.16
.
Обновить.
После запуска:
env TF_LOG=TRACE TF_LOG_PATH=logs.txt terraform apply -var secret=
Я заметил это в
logs.txt
:2019/12/01 12:17:34 [WARN] Provider "kubernetes" produced an invalid plan for kubernetes_deployment.sample-deployment, but we are tolerating it because it is using the legacy plugin SDK. The following problems may be the cause of any confusing errors from downstream operations: - .spec[0].template[0].spec[0].image_pull_secrets: block count in plan (1) disagrees with count in config (0) - .spec[0].template[0].spec[0].container[0].resources: block count in plan (1) disagrees with count in config (0) - .spec[0].strategy: block count in plan (1) disagrees with count in config (0)
Может ли это быть связано с проблемой, с которой я столкнулся?
выглядит как части сообщения, в которых упоминается
block
исходят из кода терраформирования. Таким образом, проблема, которую я вижу, не должна быть строго связана с поставщиком кубернетов. Или это?