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
Original file line number Diff line number Diff line change
@@ -1,85 +1,99 @@
{# Auto-generated NDFC MSD network_attach_groups_dict config data structure for fabric {{ vxlan.fabric.name }} #}
{% if MD_Extended.vxlan.multisite.overlay.networks is defined and MD_Extended.vxlan.multisite.overlay.networks %}
{% set networks = MD_Extended.vxlan.multisite.overlay.networks %}
{# Merged NDFC MSD Parent Fabric Network config with embedded child fabric configurations #}
{# Use MD_Multisite data which contains the processed overlay_attach_groups.networks with child_fabrics #}
{% if MD_Multisite.overlay_attach_groups.networks is defined and MD_Multisite.overlay_attach_groups.networks %}
{% set networks = MD_Multisite.overlay_attach_groups.networks %}
{% else %}
{% set networks = [] %}
{% endif %}
{% for net in networks %}
- net_name: {{ net['name'] }}
{# ------------------------------------------------------ #}
{# Properties Section #}
{# Parent Fabric Properties Section #}
{# These are only allowed on parent fabrics #}
{# ------------------------------------------------------ #}
is_l2only: {{ net['is_l2_only'] | default(defaults.vxlan.overlay.networks.is_l2_only) }}
vrf_name: {{ net['vrf_name'] | default(omit) }}
net_template: {{ net['net_template'] | default('Default_Network_Universal') }}
net_extension_template: {{ net['net_extension_template'] | default('Default_Network_Extension_Universal') }}
net_id: {{ net['net_id'] | default(omit) }}
vlan_id: {{ net['vlan_id'] | default(omit) }}
vlan_name: {{ net['vlan_name'] | default(omit) }}
gw_ip_subnet: {{ net['gw_ip_address'] | default(omit) }}
routing_tag: {{ net['route_tag'] | default(defaults.vxlan.overlay.networks.route_tag) }}
int_desc: {{ net['int_desc'] | default(defaults.vxlan.overlay.networks.net_description) }}
mtu_l3intf: {{ net['mtu_l3intf'] | default(defaults.vxlan.overlay.networks.mtu_l3intf) }}
is_l2only: {{ net['is_l2_only'] | default(defaults.vxlan.overlay.networks.is_l2_only) }}
arp_suppress: {{ net['arp_suppress'] | default(defaults.vxlan.overlay.networks.arp_supress) }}
gw_ipv6_subnet: {{ net['gw_ipv6_address'] | default(omit) }}
route_target_both: {{ net['route_target_both'] | default(defaults.vxlan.overlay.networks.route_target_both) }}
intfvlan_nf_monitor: {{ net['intfvlan_nf_monitor'] | default(omit) }}
{% if net.secondary_ip_addresses is defined %}
{% if net.secondary_ip_addresses | length == 1 %}
secondary_ip_gw1: {{ net['secondary_ip_addresses'][0]['ip_address'] }}
{% elif net.secondary_ip_addresses | length == 2 %}
secondary_ip_gw1: {{ net['secondary_ip_addresses'][0]['ip_address'] }}
secondary_ip_gw2: {{ net['secondary_ip_addresses'][1]['ip_address'] }}
{% elif net.secondary_ip_addresses | length == 3 %}
secondary_ip_gw1: {{ net['secondary_ip_addresses'][0]['ip_address'] }}
secondary_ip_gw2: {{ net['secondary_ip_addresses'][1]['ip_address'] }}
secondary_ip_gw3: {{ net['secondary_ip_addresses'][2]['ip_address'] }}
{% elif net.secondary_ip_addresses | length == 4 %}
{% if net.secondary_ip_addresses | length >= 1 %}
secondary_ip_gw1: {{ net['secondary_ip_addresses'][0]['ip_address'] }}
{% endif %}
{% if net.secondary_ip_addresses | length >= 2 %}
secondary_ip_gw2: {{ net['secondary_ip_addresses'][1]['ip_address'] }}
{% endif %}
{% if net.secondary_ip_addresses | length >= 3 %}
secondary_ip_gw3: {{ net['secondary_ip_addresses'][2]['ip_address'] }}
{% endif %}
{% if net.secondary_ip_addresses | length >= 4 %}
secondary_ip_gw4: {{ net['secondary_ip_addresses'][3]['ip_address'] }}
{% endif %}
{% endif %}
arp_suppress: {{ net['arp_suppress'] | default(defaults.vxlan.overlay.networks.arp_supress) }}
gw_ipv6_subnet: {{ net['gw_ipv6_address'] | default(omit) }}
int_desc: {{ net['int_desc'] | default(defaults.vxlan.overlay.networks.net_description) }}
mtu_l3intf: {{ net['mtu_l3intf'] | default(defaults.vxlan.overlay.networks.mtu_l3intf) }}
route_target_both: {{ net['route_target_both'] | default(defaults.vxlan.overlay.networks.route_target_both) }}
routing_tag: {{ net['route_tag'] | default(defaults.vxlan.overlay.networks.route_tag) }}
{% if net.child_fabrics is defined and net.child_fabrics %}
{% set child_fabrics = net.child_fabrics %}
{# ------------------------------------------------------ #}
{# Child Fabric Configuration Section #}
{# These parameters are NOT allowed directly on parent fabrics #}
{# but can be specified per child fabric in child_fabric_config #}
{# Pull child fabric data from MD_Multisite data structure #}
{# ------------------------------------------------------ #}
{% if net.child_fabrics is defined and net.child_fabrics | length > 0 %}
# NOTE: trm_enable, l3gw_on_border, netflow_enable are NOT allowed on parent fabrics
child_fabric_config:
{% else %}
{% set child_fabrics = [] %}
{% endif %}
{% for child_fabric in child_fabrics %}
- fabric_name: {{ child_fabric['name'] | default(omit) }}
{% if (MD_Multisite.child_fabrics_data[child_fabric['name']]['attributes']['REPLICATION_MODE'] | lower) == 'multicast' %}
multicast_group_address: {{ child_fabric['multicast_group_address'] | default(omit) }}
{% endif %}
dhcp_loopback_id: {{ child_fabric['dhcp_loopback_id'] | default(omit) }}
{% if child_fabric.dhcp_servers is defined %}
{% if child_fabric.dhcp_servers | length == 1 %}
dhcp_srvr1_ip: {{ child_fabric['dhcp_servers'][0]['ip_address'] }}
dhcp_srvr1_vrf: {{ child_fabric['dhcp_servers'][0]['vrf'] }}
{% elif child_fabric.dhcp_servers | length == 2 %}
dhcp_srvr1_ip: {{ child_fabric['dhcp_servers'][0]['ip_address'] }}
dhcp_srvr1_vrf: {{ child_fabric['dhcp_servers'][0]['vrf'] }}
dhcp_srvr2_ip: {{ child_fabric['dhcp_servers'][1]['ip_address'] }}
dhcp_srvr2_vrf: {{ child_fabric['dhcp_servers'][1]['vrf'] }}
{% elif child_fabric.dhcp_servers | length == 3 %}
dhcp_srvr1_ip: {{ child_fabric['dhcp_servers'][0]['ip_address'] }}
dhcp_srvr1_vrf: {{ child_fabric['dhcp_servers'][0]['vrf'] }}
dhcp_srvr2_ip: {{ child_fabric['dhcp_servers'][1]['ip_address'] }}
dhcp_srvr2_vrf: {{ child_fabric['dhcp_servers'][1]['vrf'] }}
dhcp_srvr3_ip: {{ child_fabric['dhcp_servers'][2]['ip_address'] }}
dhcp_srvr3_vrf: {{ child_fabric['dhcp_servers'][2]['vrf'] }}
{% endif %}
{% endif %}
trm_enable: {{ child_fabric['trm_enable'] | default(omit) }}
{# trmv6_enable: {{ child_fabric['trmv6_enable'] | default(omit) }} #}
l3gw_on_border: {{ child_fabric['l3gw_on_border'] | default(omit) }}
netflow_enable: {{ child_fabric['netflow_enable'] | default(omit) }}
{% if child_fabric['netflow_enable'] is defined and child_fabric['netflow_enable'] | bool %}
vlan_nf_monitor: {{ child_fabric['vlan_netflow_monitor'] | default(omit) }}
{% for child_config in net.child_fabrics %}
- fabric: {{ child_config.name }}
# Child fabric allows these specific parameters
{% if child_config.netflow_enable is defined %}
netflow_enable: {{ child_config.netflow_enable }}
{% endif %}
{% if child_config.l3gw_on_border is defined %}
l3gw_on_border: {{ child_config.l3gw_on_border }}
{% endif %}
{% if child_config.trm_enable is defined %}
trm_enable: {{ child_config.trm_enable }}
{% endif %}
{# trmv6_enable: {{ child_config.trmv6_enable | default(omit) }} #}
{% if child_config.dhcp_loopback_id is defined %}
dhcp_loopback_id: {{ child_config.dhcp_loopback_id }}
{% endif %}
{% if child_config.multicast_group_address is defined %}
multicast_group_address: '{{ child_config.multicast_group_address }}'
{% endif %}
{% if child_config.vlan_nf_monitor is defined %}
vlan_nf_monitor: '{{ child_config.vlan_nf_monitor }}'
{% endif %}
{% if child_config.dhcp_srvr1_ip is defined %}
dhcp_srvr1_ip: '{{ child_config.dhcp_srvr1_ip }}'
{% endif %}
{% if child_config.dhcp_srvr1_vrf is defined %}
dhcp_srvr1_vrf: '{{ child_config.dhcp_srvr1_vrf }}'
{% endif %}
{% if child_config.dhcp_srvr2_ip is defined %}
dhcp_srvr2_ip: '{{ child_config.dhcp_srvr2_ip }}'
{% endif %}
{% if child_config.dhcp_srvr2_vrf is defined %}
dhcp_srvr2_vrf: '{{ child_config.dhcp_srvr2_vrf }}'
{% endif %}
{% if child_config.dhcp_srvr3_ip is defined %}
dhcp_srvr3_ip: '{{ child_config.dhcp_srvr3_ip }}'
{% endif %}
{% if child_config.dhcp_srvr3_vrf is defined %}
dhcp_srvr3_vrf: '{{ child_config.dhcp_srvr3_vrf }}'
{% endif %}
{% endfor %}
{% endif %}
{# ------------------------------------------------------ #}
{# Attach Group Section #}
{# ------------------------------------------------------ #}
{# Don't need to attach vrfs if there are no msd_switches #}
{% if net['network_attach_group'] is defined %}
attach:
{% if MD_Multisite.overlay_attach_groups.network_attach_groups_dict is defined and MD_Multisite.overlay_attach_groups.network_attach_groups_dict %}
Expand All @@ -91,6 +105,6 @@
ports: {{ attach['ports'] }}
{% endif %}
{% endfor %}
deploy: false
{% endif %}
{% endfor %}
deploy: false
{% endfor %}
6 changes: 3 additions & 3 deletions roles/dtc/create/tasks/msd/vrfs_networks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -183,9 +183,9 @@
child_fabrics_vrfs_networks_changed: "{{ vrf_changed | ansible.builtin.union(network_changed) }}"
vars:
vrf_changed: "{{ child_fabric_vrf_results.child_fabrics_changed | default([]) }}"
network_changed: "{{ child_fabric_network_results.child_fabrics_changed | default([]) }}"
network_changed: "{{ manage_network_result.changed | default([]) }}"
when: >
(child_fabric_vrf_results.child_fabrics_changed is defined and
child_fabric_vrf_results.child_fabrics_changed | length > 0) or
(child_fabric_network_results.child_fabrics_changed is defined and
child_fabric_network_results.child_fabrics_changed | length > 0)
(manage_network_result.changed is defined and
manage_network_result.changed | length > 0)