Terraform with Cisco ACI - Associate Contract to EPG - Invalid Index - TechRepublic
General discussion
January 17, 2023 at 12:20 PM
ammusk354

Terraform with Cisco ACI – Associate Contract to EPG – Invalid Index

by ammusk354 . Updated 3 years, 4 months ago

0

Still fairly new with programming, and diving into the deep end of terraform. I am working through learning ACI with Terraform and getting a error. I think i am just declaring my objects wrong, but can’t figure it out. i have tried to leave out a lot of redundant config and errors for brevity.

│ Error: Invalid index

│ on ../modules/tenant/contracts.tf line 38, in resource “aci_epg_to_contract” “terraform_epgweb_contract”:
│ 38: application_epg_dn = aci_application_epg.epga[each.key].id
│ ├────────────────
│ │ aci_application_epg.epga is object with 2 attributes
│ │ each.key is “terraform_three”

│ The given key does not identify an element in this collection value.
Problem: Assign 3 contracts, to each EPG (2 epgs in each App profile).

For App A that I created, I have epga which consists of a Web_EPG and DB EPG. For App B that I created, I have epgb which consists of a Web_EPG and DB EPG.

module “my_tenant” {
source = “../modules/tenant”
epga = {
web_epg = {
name = “web_epg”
application_profile = “app_a_ap”
bridge_domain = “app_a_bd”
},
db_epg = {
name = “db_epg”
application_profile = “app_a_ap”
bridge_domain = “app_a_bd”
}
}
For the contracts I am using two different epg contracts – epga_contracts and epgb_contracts.

epga_contracts = {
terraform_one = {
epg = “web_epg”,
contract = “contract_sql”,
contract_type = “consumer”
},
terraform_two = {
epg = “db_epg”,
contract = “contract_sql”,
contract_type = “provider”
},
terraform_three = {
epg = “web_epg”,
contract = “contract_web”,
contract_type = “provider”
}
}

to assign them i am trying to loop through both of the web contracts and both of the db contracts that are already created to assign them to the EPG’s

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

resource “aci_epg_to_contra

This discussion is locked

All Comments