CiscoDevNet / terraform-provider-aci

Terraform Cisco ACI provider
https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs
Mozilla Public License 2.0
84 stars 99 forks source link

aci_epg_to_static_path path type selection port/pc/vpc #925

Closed ucdericd closed 1 year ago

ucdericd commented 1 year ago

Community Note

There does not appear to be a "path type" in the aci_epg_to_static_path resource. Need to be able to select port/pc/vpc. it appears this resource is assuming a port binding and requiring a like formated dn. Need it to accept a vpc dn like "uni/infra/funcprof/accbundle-115-116_port_1_1_10zigamc_polgrp)"

New or Affected Resource(s) + ACI Class(es): aci_epg_to_static_path

APIC version and APIC Platform

Potential Terraform Configuration


module "aci_application_profile" {
    source = "../../modules/aci_application_profile"
    tenant_dn  = data.aci_tenant.tenant.id #aci_tenant.dev_tenant.id
    name       = local.aci_application_profile_name
    annotation = null
    description = local.aci_application_profile_description
    name_alias = local.aci_application_profile_name_alias
    prio       = null
}

# create epg, associate to bd, associate to vmm or phys domain
module "aci_application_epg" {
    source = "../../modules/aci_application_epg"
    depends_on = [
      module.aci_application_profile
          ]
    for_each = local.application_epgs

    application_profile_dn  = module.aci_application_profile.aci_application_profile.id
    name = each.key
    description = each.value.description
    annotation = each.value.annotation
    exception_tag = each.value.exception_tag
    flood_on_encap = each.value.flood_on_encap
    fwd_ctrl = each.value.fwd_ctrl
    has_mcast_source = each.value.has_mcast_source
    is_attr_based_epg = each.value.is_attr_based_epg
    match_t = each.value.match_t
    name_alias = each.value.name_alias
    pc_enf_pref = each.value.pc_enf_pref
    pref_gr_memb = each.value.pref_gr_memb
    prio = each.value.prio
    shutdown = each.value.shutdown
    relation_fv_rs_bd = data.aci_bridge_domain.bd.id

}
resource "aci_epg_to_domain" "epg_to_domain" {
    #source = "../../modules/aci_epg_to_domain"
    for_each = local.application_epgs
    application_epg_dn    = module.aci_application_epg[each.key].aci_application_epg.id
    tdn                   = module.aci_physical_domain.aci_physical_domain.id

}
module "aci_epg_to_static_path" {
    source = "../../modules/aci_epg_to_static_path"
    depends_on = [module.aci_application_epg]
    for_each = local.application_epgs
    application_epg_dn  = module.aci_application_epg[each.key].aci_application_epg.id
    tdn  = module.aci_leaf_access_bundle_policy_group.aci_leaf_access_bundle_policy_group.id 
    annotation = null
    encap  = local.epg_static_path_encap
    instr_imedcy = "lazy"
    mode  = local.epg_static_path_encap_mode
    primary_encap = null
}
module "aci_leaf_interface_profile" {
    source      = "../../modules/aci_leaf_interface_profile"
    description = ""
    name        = "${local.leaf_vpc_pair}_${local.aci_tenant_name}_${local.servername}_profile_ifselector"
    annotation  = null
    name_alias  = "${local.leaf_vpc_pair}_${local.aci_tenant_name}_${local.servername}_profile_ifselector"
}
module "aci_access_port_selector" {
    source                      = "../../modules/aci_access_port_selector"
    depends_on                  = [module.aci_leaf_interface_profile]
    leaf_interface_profile_dn   = module.aci_leaf_interface_profile.aci_leaf_interface_profile.id
    name                        = "${local.leaf_vpc_pair}_port_${local.assigned_interface_underscore}_${local.aci_tenant_name}_${local.servername}"
    access_port_selector_type   = "range"
    annotation                  = null
    description                 = "${local.servername} interfaces"
    name_alias                  = "${local.leaf_vpc_pair}_port_${local.assigned_interface_underscore}_${local.aci_tenant_name}_${local.servername}"
    relation_infra_rs_acc_base_grp = module.aci_leaf_access_bundle_policy_group.aci_leaf_access_bundle_policy_group.id
}
module "aci_access_port_block" {
    source = "../../modules/aci_access_port_block"
    depends_on = [module.aci_access_port_selector]
    access_port_selector_dn = module.aci_access_port_selector.aci_access_port_selector.id
    description             = ""
    name                    = local.assigned_interface_underscore
    annotation              = null
    from_card               = null
    from_port               = local.from_port
    name_alias              = local.assigned_interface_underscore
    to_card                 = null
    to_port                 = local.to_port

}
                # aep policies
module "aci_attachable_access_entity_profile" {
    source                  = "../../modules/aci_attachable_access_entity_profile"
    description             = "${local.servername} on ${local.assigned_interface}"
    name                    = "${local.servername}_aep_e${local.assigned_interface_underscore}"
    annotation              = null
    name_alias              = "${local.servername}_aep_e${local.assigned_interface_underscore}"
    relation_infra_rs_dom_p = [module.aci_physical_domain.aci_physical_domain.id]
}   
module "aci_leaf_access_bundle_policy_group" {
    source                                  = "../../modules/aci_leaf_access_bundle_policy_group"
    #depends_on                              = [module.aci_access_port_selector_firewalls]
    name                                    = "${local.leaf_vpc_pair}_port_${local.assigned_interface_underscore}_${local.servername}_polgrp"
    annotation                              = null
    description                             = "${local.servername} on ${local.assigned_interface} policy group"
    lag_t                                   = "node" #this is for vpc - link for pc
    name_alias                              = "${local.leaf_vpc_pair}_port_${local.assigned_interface_underscore}_${local.servername}_polgrp"
    relation_infra_rs_att_ent_p             = module.aci_attachable_access_entity_profile.aci_attachable_access_entity_profile.id
    relation_infra_rs_cdp_if_pol            = null
    relation_infra_rs_lldp_if_pol           = "uni/infra/lldpIfP-system-lldp-enabled"
    #relation_infra_rs_netflow_monitor_pol   = [null]  need to fix this
    relation_infra_rs_lacp_pol              = local.lacp_or_not 
}
output "aci_leaf_access_bundle_policy_group" {
    value = module.aci_leaf_access_bundle_policy_group 
}
module "aci_physical_domain" {
    source = "../../modules/aci_physical_domain"
    name = "${local.aci_tenant_name}_${local.servername}"
    annotation = null
    name_alias = "${local.aci_tenant_name}_${local.servername}"
    relation_infra_rs_vlan_ns = data.aci_vlan_pool.vlan_pool.id # build dynamic vlan pool in global fabric policy and associate
}
resource "aci_leaf_profile" "leaf_profile" {
  name        = "vpc_${local.leaf_vpc_pair}_${local.aci_tenant_name}_${local.servername}"
  description = "for server ${local.servername} in tenant ${local.aci_tenant_name} for application ${local.aci_application_profile_name_alias} "
  name_alias  = "vpc_${local.leaf_vpc_pair}_${local.aci_tenant_name}_${local.servername}"
  relation_infra_rs_acc_port_p = [module.aci_leaf_interface_profile.aci_leaf_interface_profile.id]
  leaf_selector {
    name                    = "vpc_${local.leaf_vpc_pair}_${local.aci_tenant_name}_${local.servername}_selector"
    switch_association_type = "range"
    node_block {
      name  = "blk1"
      from_ = local.from_leaf
      to_   = local.to_leaf
    }
  }
} 

References

ucdericd commented 1 year ago

This was a misunderstanding on my part. I was using the variable incorrectly. Closing