Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions aci_tenants.tf
Original file line number Diff line number Diff line change
Expand Up @@ -1245,11 +1245,14 @@ locals {
import_route_control = try("${peer.import_route_control}${local.defaults.apic.tenants.policies.route_control_route_maps.name_suffix}", null)
}]
paths = [for path in try(int.paths, []) : {
physical_domain = try(path.physical_domain, null)
vmware_vmm_domain = try(path.vmware_vmm_domain, null)
elag = try(path.elag, null)
floating_ip = path.floating_ip
vlan = try(path.vlan, null)
physical_domain = try(path.physical_domain, null)
vmware_vmm_domain = try(path.vmware_vmm_domain, null)
elag = try(path.elag, null)
floating_ip = path.floating_ip
vlan = try(path.vlan, null)
forge_transmit = try(path.forge_transmit, local.defaults.apic.tenants.l3outs.node_profiles.interface_profiles.interfaces.paths.forge_transmit, null)
mac_address_change = try(path.mac_address_change, local.defaults.apic.tenants.l3outs.node_profiles.interface_profiles.interfaces.paths.mac_address_change, null)
promiscous_mode = try(path.promiscous_mode, local.defaults.apic.tenants.l3outs.node_profiles.interface_profiles.interfaces.paths.promiscous_mode, null)
}]
micro_bfd_destination_ip = try(int.micro_bfd.destination_ip, null)
micro_bfd_start_timer = try(int.micro_bfd.start_timer, null)
Expand Down Expand Up @@ -1409,11 +1412,14 @@ locals {
import_route_control = try("${peer.import_route_control}${local.defaults.apic.tenants.policies.route_control_route_maps.name_suffix}", null)
}]
paths = [for path in try(int.paths, []) : {
physical_domain = try(path.physical_domain, null)
vmware_vmm_domain = try(path.vmware_vmm_domain, null)
elag = try(path.elag, null)
floating_ip = path.floating_ip
vlan = try(path.vlan, null)
physical_domain = try(path.physical_domain, null)
vmware_vmm_domain = try(path.vmware_vmm_domain, null)
elag = try(path.elag, null)
floating_ip = path.floating_ip
vlan = try(path.vlan, null)
forge_transmit = try(path.forge_transmit, local.defaults.apic.tenants.l3outs.node_profiles.interface_profiles.interfaces.paths.forge_transmit)
mac_address_change = try(path.mac_address_change, local.defaults.apic.tenants.l3outs.node_profiles.interface_profiles.interfaces.paths.mac_address_change)
promiscous_mode = try(path.promiscous_mode, local.defaults.apic.tenants.l3outs.node_profiles.interface_profiles.interfaces.paths.promiscous_mode)
}]
micro_bfd_destination_ip = try(int.micro_bfd.destination_ip, null)
micro_bfd_start_timer = try(int.micro_bfd.start_timer, null)
Expand Down
4 changes: 4 additions & 0 deletions defaults/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1015,6 +1015,10 @@ defaults:
multicast_address_family: true
admin_state: true
as_propagate: none
paths:
forge_transmit: false
mac_address_change: false
promiscous_mode: false
micro_bfd:
start_timer: 0
external_endpoint_groups:
Expand Down
2 changes: 1 addition & 1 deletion modules/terraform-aci-l3out-interface-profile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ module "aci_l3out_interface_profile" {
| <a name="input_nd_interface_policy"></a> [nd\_interface\_policy](#input\_nd\_interface\_policy) | ND interface policy. | `string` | `""` | no |
| <a name="input_qos_class"></a> [qos\_class](#input\_qos\_class) | QoS class. Choices: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. | `string` | `"unspecified"` | no |
| <a name="input_custom_qos_policy"></a> [custom\_qos\_policy](#input\_custom\_qos\_policy) | Custom QoS policy name. | `string` | `""` | no |
| <a name="input_interfaces"></a> [interfaces](#input\_interfaces) | List of interfaces. Default value `svi`: false. Default value `floating_svi`: false. Choices `type`. `access`, `pc`, `vpc`. Default value `type`: `access`. Allowed values `vlan`: 1-4096. Format `mac`: `12:34:56:78:9A:BC`. `mtu`: Allowed values are `inherit` or a number between 576 and 9216. Allowed values `node_id`, `node2_id`: 1-4000. Allowed values `pod_id`: 1-255. Default value `pod_id`: 1. Allowed values `module`: 1-9. Default value `module`: 1. Allowed values `port`: 1-127. Default value `bgp_peers.bfd`: false. Allowed values `bgp_peers.ttl`: 1-255. Default value `bgp_peers.ttl`: 1. Allowed values `bgp_peers.weight`: 0-65535. Default value `bgp_peers.weight`: 0. Allowed values `bgp_peers.remote_as`: 0-4294967295. | <pre>list(object({<br/> description = optional(string, "")<br/> type = optional(string, "access")<br/> node_id = number<br/> node2_id = optional(number)<br/> pod_id = optional(number, 1)<br/> module = optional(number, 1)<br/> port = optional(number)<br/> sub_port = optional(number)<br/> channel = optional(string)<br/> ip = optional(string)<br/> svi = optional(bool, false)<br/> autostate = optional(bool, false)<br/> floating_svi = optional(bool, false)<br/> vlan = optional(number)<br/> mac = optional(string, "00:22:BD:F8:19:FF")<br/> mtu = optional(string, "inherit")<br/> mode = optional(string, "regular")<br/> ip_a = optional(string)<br/> ip_b = optional(string)<br/> ip_shared = optional(string)<br/> ip_shared_dhcp_relay = optional(bool, null)<br/> lladdr = optional(string, "::")<br/> scope = optional(string, "local")<br/> multipod_direct = optional(bool, false)<br/> bgp_peers = optional(list(object({<br/> ip = string<br/> remote_as = string<br/> description = optional(string, "")<br/> allow_self_as = optional(bool, false)<br/> as_override = optional(bool, false)<br/> disable_peer_as_check = optional(bool, false)<br/> next_hop_self = optional(bool, false)<br/> send_community = optional(bool, false)<br/> send_ext_community = optional(bool, false)<br/> password = optional(string)<br/> allowed_self_as_count = optional(number, 3)<br/> bfd = optional(bool, false)<br/> disable_connected_check = optional(bool, false)<br/> ttl = optional(number, 1)<br/> weight = optional(number, 0)<br/> remove_all_private_as = optional(bool, false)<br/> remove_private_as = optional(bool, false)<br/> replace_private_as_with_local_as = optional(bool, false)<br/> unicast_address_family = optional(bool, true)<br/> multicast_address_family = optional(bool, true)<br/> admin_state = optional(bool, true)<br/> local_as = optional(number)<br/> as_propagate = optional(string, "none")<br/> peer_prefix_policy = optional(string)<br/> export_route_control = optional(string)<br/> import_route_control = optional(string)<br/> })), [])<br/> paths = optional(list(object({<br/> physical_domain = optional(string)<br/> vmware_vmm_domain = optional(string)<br/> elag = optional(string)<br/> floating_ip = string<br/> vlan = optional(string)<br/> })), [])<br/> micro_bfd_destination_ip = optional(string, "")<br/> micro_bfd_start_timer = optional(number, 0)<br/> }))</pre> | `[]` | no |
| <a name="input_interfaces"></a> [interfaces](#input\_interfaces) | List of interfaces. Default value `svi`: false. Default value `floating_svi`: false. Choices `type`. `access`, `pc`, `vpc`. Default value `type`: `access`. Allowed values `vlan`: 1-4096. Format `mac`: `12:34:56:78:9A:BC`. `mtu`: Allowed values are `inherit` or a number between 576 and 9216. Allowed values `node_id`, `node2_id`: 1-4000. Allowed values `pod_id`: 1-255. Default value `pod_id`: 1. Allowed values `module`: 1-9. Default value `module`: 1. Allowed values `port`: 1-127. Default value `bgp_peers.bfd`: false. Allowed values `bgp_peers.ttl`: 1-255. Default value `bgp_peers.ttl`: 1. Allowed values `bgp_peers.weight`: 0-65535. Default value `bgp_peers.weight`: 0. Allowed values `bgp_peers.remote_as`: 0-4294967295. | <pre>list(object({<br/> description = optional(string, "")<br/> type = optional(string, "access")<br/> node_id = number<br/> node2_id = optional(number)<br/> pod_id = optional(number, 1)<br/> module = optional(number, 1)<br/> port = optional(number)<br/> sub_port = optional(number)<br/> channel = optional(string)<br/> ip = optional(string)<br/> svi = optional(bool, false)<br/> autostate = optional(bool, false)<br/> floating_svi = optional(bool, false)<br/> vlan = optional(number)<br/> mac = optional(string, "00:22:BD:F8:19:FF")<br/> mtu = optional(string, "inherit")<br/> mode = optional(string, "regular")<br/> ip_a = optional(string)<br/> ip_b = optional(string)<br/> ip_shared = optional(string)<br/> ip_shared_dhcp_relay = optional(bool, null)<br/> lladdr = optional(string, "::")<br/> scope = optional(string, "local")<br/> multipod_direct = optional(bool, false)<br/> bgp_peers = optional(list(object({<br/> ip = string<br/> remote_as = string<br/> description = optional(string, "")<br/> allow_self_as = optional(bool, false)<br/> as_override = optional(bool, false)<br/> disable_peer_as_check = optional(bool, false)<br/> next_hop_self = optional(bool, false)<br/> send_community = optional(bool, false)<br/> send_ext_community = optional(bool, false)<br/> password = optional(string)<br/> allowed_self_as_count = optional(number, 3)<br/> bfd = optional(bool, false)<br/> disable_connected_check = optional(bool, false)<br/> ttl = optional(number, 1)<br/> weight = optional(number, 0)<br/> remove_all_private_as = optional(bool, false)<br/> remove_private_as = optional(bool, false)<br/> replace_private_as_with_local_as = optional(bool, false)<br/> unicast_address_family = optional(bool, true)<br/> multicast_address_family = optional(bool, true)<br/> admin_state = optional(bool, true)<br/> local_as = optional(number)<br/> as_propagate = optional(string, "none")<br/> peer_prefix_policy = optional(string)<br/> export_route_control = optional(string)<br/> import_route_control = optional(string)<br/> })), [])<br/> paths = optional(list(object({<br/> physical_domain = optional(string)<br/> vmware_vmm_domain = optional(string)<br/> elag = optional(string)<br/> floating_ip = string<br/> vlan = optional(string)<br/> forge_transmit = optional(bool, false)<br/> mac_address_change = optional(bool, false)<br/> promiscous_mode = optional(bool, false)<br/> })), [])<br/> micro_bfd_destination_ip = optional(string, "")<br/> micro_bfd_start_timer = optional(number, 0)<br/> }))</pre> | `[]` | no |
| <a name="input_multipod"></a> [multipod](#input\_multipod) | Multipod L3out flag. | `bool` | `false` | no |
| <a name="input_remote_leaf"></a> [remote\_leaf](#input\_remote\_leaf) | Remote leaf L3out flag. | `bool` | `false` | no |
| <a name="input_sr_mpls"></a> [sr\_mpls](#input\_sr\_mpls) | SR MPLS L3out flag. | `bool` | `false` | no |
Expand Down
22 changes: 14 additions & 8 deletions modules/terraform-aci-l3out-interface-profile/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -128,11 +128,14 @@ locals {
for path in coalesce(int.paths, []) : {
key = "${int.node_id}/${int.vlan}/${coalesce(path.physical_domain, path.vmware_vmm_domain)}/${path.floating_ip}"
value = {
node = "${int.node_id}/${int.vlan}"
floating_ip = path.floating_ip
domain = path.physical_domain != null ? "phys-${path.physical_domain}" : (path.vmware_vmm_domain != null ? "vmmp-VMware/dom-${path.vmware_vmm_domain}" : "")
elag = path.elag
vlan = path.vlan
node = "${int.node_id}/${int.vlan}"
floating_ip = path.floating_ip
domain = path.physical_domain != null ? "phys-${path.physical_domain}" : (path.vmware_vmm_domain != null ? "vmmp-VMware/dom-${path.vmware_vmm_domain}" : "")
elag = path.elag
vlan = path.vlan
forge_transmit = path.forge_transmit
mac_address_change = path.mac_address_change
promiscous_mode = path.promiscous_mode
}
}
] if int.floating_svi == true
Expand Down Expand Up @@ -407,9 +410,12 @@ resource "aci_rest_managed" "l3extRsDynPathAtt" {
dn = "${aci_rest_managed.l3extVirtualLIfP[each.value.node].dn}/rsdynPathAtt-[uni/${each.value.domain}]"
class_name = "l3extRsDynPathAtt"
content = {
floatingAddr = each.value.floating_ip
tDn = "uni/${each.value.domain}"
encap = each.value.vlan != null && each.value.vlan != "" ? "vlan-${each.value.vlan}" : null
floatingAddr = each.value.floating_ip
tDn = "uni/${each.value.domain}"
encap = each.value.vlan != null && each.value.vlan != "" ? "vlan-${each.value.vlan}" : null
forgedTransmit = each.value.forge_transmit == true ? "Enabled" : "Disabled"
macChange = each.value.mac_address_change == true ? "Enabled" : "Disabled"
promMode = each.value.promiscous_mode == true ? "Enabled" : "Disabled"
}
}

Expand Down
13 changes: 8 additions & 5 deletions modules/terraform-aci-l3out-interface-profile/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -250,11 +250,14 @@ variable "interfaces" {
import_route_control = optional(string)
})), [])
paths = optional(list(object({
physical_domain = optional(string)
vmware_vmm_domain = optional(string)
elag = optional(string)
floating_ip = string
vlan = optional(string)
physical_domain = optional(string)
vmware_vmm_domain = optional(string)
elag = optional(string)
floating_ip = string
vlan = optional(string)
forge_transmit = optional(bool, false)
mac_address_change = optional(bool, false)
promiscous_mode = optional(bool, false)
})), [])
micro_bfd_destination_ip = optional(string, "")
micro_bfd_start_timer = optional(number, 0)
Expand Down