Как игнорировать изменение атрибута в блоке
Я развертываю веб-приложения в Azure и хочу игнорировать изменения атрибута scm_type в блоке site_config.
Во время развертывания атрибут scm_type имеет значение None, а позже мы меняем его на что-то другое в портале Azure.
Мой текущий код TF выглядит так:
resource "azurerm_app_service" "web_app" {
count = length(var.app_names)
name = var.app_names[count.index]
location = data.azurerm_resource_group.app_resource_group.location
resource_group_name = data.azurerm_resource_group.app_resource_group.name
app_service_plan_id = azurerm_app_service_plan.app_plan.id
tags = var.tags
app_settings = var.app_settings[count.index]
site_config {
always_on = true
websockets_enabled = var.websockets_enabled[count.index]
use_32_bit_worker_process = var.use_32_bit_worker_process
scm_type = "None"
}
lifecycle {
ignore_changes = [
site_config.0.scm_type
]
}
}
Я ожидаю, что план terraform будет игнорировать изменения в scm_type во время обновления инфраструктуры, но он пытается вернуть его обратно в None. Линия от выхода плана terraform:
~ scm_type = "BitbucketGit" -> "None"
4 ответа
Я думаю, вам нужно исправить свой синтаксис в игнорировании изменений. Это должно выглядеть так, или, по крайней мере, из того, что я смог получить на работу.
lifecycle {
ignore_changes = [
site_config["scm_type"],
]
}
Вот документы, которые имеют синтаксис.
Это была ошибка terraform: https://github.com/hashicorp/terraform/issues/21433 Мой синтаксис правильный, в версии 0.12.4 он снова работает.
lifecycle {
ignore_changes = [
site_config["scm_type"]
]
}
здесьsite_config["scm_type"]
без запятой(,) тоже будет работать
Вот документы, которые имеют синтаксис.
Кажется, синтаксис изменился. М_дк подтвердил этоsite_config["scm_type"]
не работает в терраформе. И в версии то же самое1.3.9
. Что еще хуже, он не выдает ошибок.
Он игнорирует все
site_config
, что эффективно блокирует изменение сайта.
Для версии1.1.5
и выше правильный синтаксис:
lifecycle {
ignore_changes = [
site_config[0].scm_type
]
}