Terraform 如何忽略块中属性的更改
我正在Azure中部署web应用,我想忽略对site_config块中scm_type属性的更改 在部署期间,scm_type属性设置为None,稍后我们将在Azure Portal中将其更改为其他属性 我当前的TF代码如下所示:Terraform 如何忽略块中属性的更改,terraform,terraform-provider-azure,terraform0.12+,Terraform,Terraform Provider Azure,Terraform0.12+,我正在Azure中部署web应用,我想忽略对site_config块中scm_type属性的更改 在部署期间,scm_type属性设置为None,稍后我们将在Azure Portal中将其更改为其他属性 我当前的TF代码如下所示: resource "azurerm_app_service" "web_app" { count = length(var.app_names) name = var.app_names[count.i
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 plan在基础设施更新期间忽略scm_类型的更改,但它试图将其恢复为无。来自地形平面图的线输出:
~scm\u type=“BitbucketGit”->“无”
这是一个地形错误:
我的语法是正确的,在版本0.12.4中它再次工作。我认为您需要在忽略更改中修复语法。它应该是这样的,或者至少从我工作的情况来看是这样的
lifecycle {
ignore_changes = [
site_config["scm_type"],
]
}
以下是具有语法的文档
值得注意的是,0.12:and(应该在中修复)中存在一些错误。我惊讶地发现您的语法是正确的,因为它似乎在任何地方都没有文档记录!但FWIW对未来的答案搜索者来说——显然,资源定义中的块被引用为列表(可能是为了支持同一块多次出现的情况),因此确实需要这种数字索引语法来引用嵌套键:
block_name[0]。嵌套_键
,上面链接的评论中的语法对我不起作用,但@mltsy的评论中的语法对我起作用。下面是一个示例,它也显示了所使用的语法。