Terraform | The "count" object can be used only in "resource" and "data" blocks,

7,632

The resource "azurerm_network_interface_backend_address_pool_association" "network_interface" block doesn't have the count argument set, so count.index is not meaningful in that block.

Given the specific pair of resource types you're using here, I expect your intent was to create one association for each network interface, in which case you'd add the following count argument to the second block:

  count = length(azurerm_network_interface.network_interface)

Although this didn't return an error on Terraform 0.11, it did not behave as I expect you intended: it would've created only one azurerm_network_interface_backend_address_pool_association for the first network interface, and left the others unassociated.


If associating only the first one was your intent instead, then replace the count.index in the second block with 0 to be explicit that it's using only the first one:

  network_interface_id    = azurerm_network_interface.network_interface[0]
Share:
7,632

Related videos on Youtube

Admin
Author by

Admin

Updated on September 18, 2022

Comments

  • Admin
    Admin over 1 year

    I'm trying to upgrade out Terraform seeing as 0.12 (stable) came out recently. I've ran into some issues with a certain pair of resource blocks. I'm getting the below error message when trying to do terraform plan, if I remove the count index it gives me a different error and says that I need the count index but that gives this error:

    The "count" object can be used only in "resource" and "data" blocks, and only
    when the "count" argument is set.
    

    Here is the terraform stripped down to only the relevant parts.

    resource "azurerm_network_interface" "network_interface" {
        count                             = "${var.vm_server_count}"
        location                          = "${var.location}"
        }
    }
    Problematic resource block
    
    resource "azurerm_network_interface_backend_address_pool_association" "network_interface" {
      network_interface_id    = "${azurerm_network_interface.network_interface[count.index]}"
      ip_configuration_name   = "example"
      backend_address_pool_id = "${azurerm_lb_backend_address_pool.network_interface.id}"
    }
    

    What am I missing here? This is Terraform 0.12 stable using Azure as the provider.

  • Admin
    Admin almost 5 years
    Thank you I ended up finding other stuff online related but this confirmed what I found