In my terraform azure code, when I run the plan, it says it will replace the resource but I can’t seem to find the issue.
My code creates load balancer, lb rule, lb probe, backend pools etc. The error is specifically in the below block
Wherever it’s calling data azurerm_lb_backend_address_pool, it’s saying ‘known after apply’ and recreating it
locals {
backend_pool_add = flatten([
for lb in var.load_balancer:
[
for vm in lb.backend_pool:
[
for ip in vm.ip_address:
{
lb_name = lb.lb_name
backend_address_pool_name = vm.backend_address_pool_name
ip_address = ip
nic_name = vm.ip_address != null ? "nic" : null
}
] if vm.vm_nic_name == null
]
])
backend_pool_add_ori = flatten([
for lb in var.load_balancer:
[
for vm in lb.backend_pool:
{
lb_name = lb.lb_name
backend_address_pool_name = vm.backend_address_pool_name
nic_name = vm.ip_address != null ? "nic" : null
}
if vm.vm_nic_name == null
]
]) }
data "azurerm_lb_backend_address_pool" "bap_pool_ipname_ori" {
for_each = { for bap in local.backend_pool_add_ori : "${bap.backend_address_pool_name}-${bap.lb_name}" => bap if bap.nic_name != null}
name = each.value.backend_address_pool_name
loadbalancer_id = azurerm_lb.lb[each.value.lb_name].id
}
resource "azurerm_lb_backend_address_pool_address" "bap_address" {
for_each = { for idx , bp in local.backend_pool_add : idx => bp if bp.nic_name != null}
name = data.azurerm_lb_backend_address_pool.bap_pool_ipname_ori["${each.value.backend_address_pool_name}-${each.value.lb_name}"].backend_address[each.key % 2].name
backend_address_pool_id = azurerm_lb_backend_address_pool.bap_pool_ip[each.value.ip_address].id
virtual_network_id = data.azurerm_virtual_network.vnet_backend_address_pool[each.value.lb_name].id
ip_address = each.value.ip_address
depends_on = [ azurerm_lb.lb, azurerm_lb_backend_address_pool.bap_pool_ip]
}
I tried to get the output of data block and that too says “known after apply”
Issue:
" # module.load_balancer.azurerm_lb_backend_address_pool_address.bap_address[\"3\"] must be replaced",
"-/+ resource \"azurerm_lb_backend_address_pool_address\" \"bap_address\" {",
" ~ id = \"/subscriptions/subscription_id/resourceGroups/rg-smartops-prod-att-appaccess-prod-nx01/providers/Microsoft.Network/loadBalancers/lb_name/backendAddressPools/pool_name/addresses/xxxxx-xx-yyyy\" -> (known after apply)",
" ~ inbound_nat_rule_port_mapping = [] -> (known after apply)",
" ~ name = \"xxxxx-xx-xxx-yyyyy\" -> (known after apply) # forces replacement",
" # (3 unchanged attributes hidden)",
" }",
Expectation:
No Changes.
Please let me know how it can be solved and if any details required