2

Terraform apply error 'The number of path segments is not divisible by 2' for Azure App Feature Flag

Why am I seeing this error? Hard to find any answer to this anywhere. I am using Terraform v2.93.0 and I also tried 2.90.0 and 2.56.0, and got the same problem. I was adding configs just fine but as soon as I tried to configure a Feature Flag, it breaks the Terraform project AND I am forced to rebuild re-init from scratch. Terraform is not able to recover on its own if I remove the config and running plan again.

╷
│ Error: while parsing resource ID: while parsing resource ID:  
| The number of path segments is not divisible by 2 in 
|  "subscriptions/{key}/resourceGroups/my-config-test/providers/Microsoft.AppConfiguration/configurationStores/my-app-configuration/AppConfigurationFeature/.appconfig.featureflag/DEBUG/Label/my-functions-test"
│ 
│ while parsing resource ID: while parsing resource ID: 
| The number of path segments is not divisible by 2 in
│ "subscriptions/{key}/resourceGroups/my-config-test/providers/Microsoft.AppConfiguration/configurationStores/my-app-configuration/AppConfigurationFeature/.appconfig.featureflag/DEBUG/Label/my-functions-test"
╵
╷
│ Error: obtaining auth token for "https://my-app-configuration.azconfig.io": getting authorization token for endpoint https://my-app-configuration.azconfig.io: 
|  obtaining Authorization Token from the Azure CLI: parsing json result from the Azure CLI: waiting for the Azure CLI: exit status 1: ERROR: The command failed with an unexpected error. Here is the traceback:
│ ERROR: [Errno 2] No such file or directory

WHY is the slash missing from the front of the ID????

And here is the config that breaks it:

resource "azurerm_app_configuration_feature" "my_functions_test_DEBUG" {
  configuration_store_id = azurerm_app_configuration.my_app_configuration.id
  description            = "Debug Flag"
  name                   = "DEBUG"
  label                  = "my-functions-test"
  enabled                = false
}

When it is healthy, the apply on configs works, and looks like this:

Plan: 4 to add, 0 to change, 0 to destroy.

Do you want to perform these actions in workspace "my-app-config-test"?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

azurerm_resource_group.my_config_rg_test: Creating...
azurerm_resource_group.my_config_rg_test: Creation complete after 0s [id=/subscriptions/{key}/resourceGroups/my-config-test]
djangofan
  • 28,471
  • 61
  • 196
  • 289
  • Please see this https://stackoverflow.com/questions/53950204/error-importing-existing-resources-into-terraform-state-file – scorpio Jan 22 '22 at 15:29
  • Yes, I saw that answer but it doesn't answer my question since I do not know why the slash is missing from the front of my key. You can see I commented on that previously. How can I configure to add that slash-prefix??? Is it a bug? – djangofan Jan 23 '22 at 18:22
  • 1
    Figured it out. I was mistakenly thinking the implementation for configs worked the same as feature flags, but it is actually suttly different. – djangofan Jan 25 '22 at 16:41

1 Answers1

1

Ok, I figured it out. There is a bug: when create a azurerm_app_configuration_key resource, the key can be like so key = "/application/config.EXSTREAM_DOMAIN" BUT when you create a azurerm_app_configuration_feature, you will HOSE your terraform config if you try to set the name field to name = .appconfig.featureflag/DEBUG. Instead, just set the name field to DEBUG. If you don't do that, you have to completely reset your terraform and re-initialize all the resources. Had to learn the hard way. There error message was not helpful but could be updated to be helpful in this respect.

djangofan
  • 28,471
  • 61
  • 196
  • 289