Terraform "value of 'count' cannot be computed: why?

Viewed 2286

I have the following resource specification in my templates:

resource "azurerm_sql_firewall_rule" "allow_app_server" {
  count = "${length(split(",", azurerm_app_service.backend.outbound_ip_addresses))}"

  depends_on = ["azurerm_app_service.backend"]

  name                = "${format("Allow App Service Plan %d", count.index)}"
  start_ip_address    = "${element(split(",", azurerm_app_service.backend.possible_outbound_ip_addresses), count.index)}"
  end_ip_address      = "${element(split(",", azurerm_app_service.backend.possible_outbound_ip_addresses), count.index)}"
  resource_group_name = "${var.environment_resource_group_name}"
  server_name         = "${var.db_server_name}"
}

resource "azurerm_app_service" "backend" {
   # properties ommitted for brevity
}

Now when I run terraform plan, it errors with the message

azurerm_sql_firewall_rule.allow_app_server: value of 'count' cannot be computed

Why? What can I do to fix this (that doesn't require me to partially deploy the template)?

2 Answers

you have double quotes issue, try this:

count = "${length(split(',', azurerm_app_service.backend.outbound_ip_addresses))}"

Have you tried to wrap with brackets ?

resource "azurerm_sql_firewall_rule" "allow_app_server" {
  count = "${length([split(",", azurerm_app_service.backend.outbound_ip_addresses)])}"

  depends_on = ["azurerm_app_service.backend"]

  name                = "${format("Allow App Service Plan %d", count.index)}"
  start_ip_address    = "${element(split(",", azurerm_app_service.backend.possible_outbound_ip_addresses), count.index)}"
  end_ip_address      = "${element(split(",", azurerm_app_service.backend.possible_outbound_ip_addresses), count.index)}"
  resource_group_name = "${var.environment_resource_group_name}"
  server_name         = "${var.db_server_name}"
}

resource "azurerm_app_service" "backend" {
   # properties ommitted for brevity
}
`

Related