How to ignore change of an attribute in block

szymon picture szymon · Jul 11, 2019 · Viewed 12.3k times · Source

I'm deploying web apps in Azure and I'd like to ignore changes to scm_type attribute within site_config block.

During deployment the scm_type attribute set to None and later we are changing it to something different in Azure Portal.

My current TF code looks like this:

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
    ]
  }
}

I expect terraform plan to ignore changes in scm_type during infrastructure updates, but it's trying to revert it back to None. Line from terraform plan output:

~ scm_type = "BitbucketGit" -> "None"

Answer

szymon picture szymon · Jul 12, 2019

It was a terraform bug: https://github.com/hashicorp/terraform/issues/21433 My syntax is correct, in version 0.12.4 it's working again.