You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform对接Cisco ACI将Contract绑定EPG报Invalid Index错误

问题排查与修复方案

错误根因

  1. aci_application_epg.epga 资源的for_each基于local.epga遍历,生成的资源集合键只有web_epg、db_epg两个值
  2. 绑定Contract的aci_epg_to_contract资源for_each基于var.epga_contracts遍历,遍历的键是terraform_one、terraform_two、terraform_three三个值
  3. 代码中直接用Contract配置的键each.key去索引EPG资源集合,两套键完全不匹配,因此触发索引不存在的报错。同时第二个绑定资源还错误的共用了epga_contracts作为遍历对象,也会导致epgb的绑定逻辑异常。

修复方案

修正绑定资源的索引逻辑,使用Contract配置中指定的epg字段值作为EPG资源的索引键,同时修正epgb绑定资源的遍历对象:

resource "aci_epg_to_contract" "terraform_epgweb_contract" {
    for_each           = var.epga_contracts
    application_epg_dn = aci_application_epg.epga[each.value.epg].id
    contract_dn        = aci_contract.terraform_contract[each.value.contract].id
    contract_type      = each.value.contract_type
}

resource "aci_epg_to_contract" "terraform_epgdb_contract" {
    for_each           = var.epgb_contracts
    application_epg_dn = aci_application_epg.epgb[each.value.epg].id
    contract_dn        = aci_contract.terraform_contract[each.value.contract].id
    contract_type      = each.value.contract_type
}

注意事项

  • 需确保epga_contracts中所有epg字段的取值都存在于epga的键集合中,epgb_contracts同理,否则仍然会触发索引不存在的错误
  • 该写法支持任意数量Contract与EPG的绑定配置,只需在contracts配置中指定对应EPG的键即可

内容的提问来源于stack exchange,提问作者Jason Holt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:45:08