File: //lib/python3.9/site-packages/ansible_collections/dellemc/os10/roles/os10_vrf/templates/os10_vrf.j2
#jinja2: trim_blocks: True,lstrip_blocks: True
{################################
Purpose:
Configure VRF on os10 Devices.
os10_vrf:
vrfdetails:
-vrf_name: "os10vrf"
state: "present"
ip_route_import:
community_value: 10:15
state: "absent"
route_map_value: test1
ip_route_export:
commnity_value: 20:30
state: "present"
route_map_value: test2
ipv6_route_import:
community_value: 10:15
state: "present"
route_map_value: test3
ipv6_route_export:
commnity_value: 20:30
state: "present"
route_map_value: test4
map_ip_interface:
-intf_id : loopback6
state : "present"
upd_src_ip_loopback_id: 5
-vrf_name: "os10vrf1"
state: "absent"
################################}
{% if (os10_vrf is defined and os10_vrf) %}
{% if os10_vrf.vrfdetails is defined %}
{% for vrf in os10_vrf.vrfdetails %}
{% if vrf.vrf_name is defined %}
{% if vrf.vrf_name %}
{% if vrf.state is defined and vrf.state == 'absent' %}
no ip vrf {{ vrf.vrf_name }}
{% else %}
ip vrf {{ vrf.vrf_name }}
{% if vrf.ip_route_import is defined and vrf.ip_route_import %}
{% set route_vars = vrf.ip_route_import %}
{% if route_vars.community_value is defined and route_vars.community_value %}
{% if route_vars.state == 'present' %}
{% if route_vars.route_map_value is defined and route_vars.route_map_value %}
ip route-import {{ route_vars.community_value }} route-map {{ route_vars.route_map_value }}
{% else %}
ip route-import {{ route_vars.community_value }}
{% endif %}
{% else %}
no ip route-import {{ route_vars.community_value }}
{% endif %}
{% endif %}
{% endif %}
{% if vrf.ipv6_route_import is defined and vrf.ipv6_route_import %}
{% set route_vars = vrf.ipv6_route_import %}
{% if route_vars.community_value is defined and route_vars.community_value %}
{% if route_vars.state == 'present' %}
{% if route_vars.route_map_value is defined and route_vars.route_map_value %}
ipv6 route-import {{ route_vars.community_value }} route-map {{ route_vars.route_map_value }}
{% else %}
ipv6 route-import {{ route_vars.community_value }}
{% endif %}
{% else %}
no ipv6 route-import {{ route_vars.community_value }}
{% endif %}
{% endif %}
{% endif %}
{% if vrf.ip_route_export is defined and vrf.ip_route_export %}
{% set route_vars = vrf.ip_route_export %}
{% if route_vars.community_value is defined and route_vars.community_value %}
{% if route_vars.state == 'present' %}
{% if route_vars.route_map_value is defined and route_vars.route_map_value %}
ip route-export {{ route_vars.community_value }} route-map {{ route_vars.route_map_value }}
{% else %}
ip route-export {{ route_vars.community_value }}
{% endif %}
{% else %}
no ip route-export {{ route_vars.community_value }}
{% endif %}
{% endif %}
{% endif %}
{% if vrf.ipv6_route_export is defined and vrf.ipv6_route_export %}
{% set route_vars = vrf.ipv6_route_export %}
{% if route_vars.community_value is defined and route_vars.community_value %}
{% if route_vars.state == 'present' %}
{% if route_vars.route_map_value is defined and route_vars.route_map_value %}
ipv6 route-export {{ route_vars.community_value }} route-map {{ route_vars.route_map_value }}
{% else %}
ipv6 route-export {{ route_vars.community_value }}
{% endif %}
{% else %}
no ipv6 route-export {{ route_vars.community_value }}
{% endif %}
{% endif %}
{% endif %}
{% if vrf.map_ip_interface is defined and vrf.map_ip_interface %}
exit
{% for map_ip_interface in vrf.map_ip_interface %}
{% if map_ip_interface.intf_id is defined and map_ip_interface.intf_id %}
interface {{ map_ip_interface.intf_id }}
{% if map_ip_interface.state is defined and map_ip_interface.state == "absent" %}
no ip vrf forwarding
{% else %}
ip vrf forwarding {{ vrf.vrf_name }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% if vrf.upd_src_ip_loopback_id is defined %}
{% if vrf.upd_src_ip_loopback_id %}
update-source-ip loopback{{ vrf.upd_src_ip_loopback_id}}
{% else %}
no update-source-ip loopback
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}