Resource module to configure static routes.
Version added: 1.0.0
- This module configures and manages the static routes on IOS platforms.
Note
- Tested against Cisco IOSXE Version 17.3 on CML.
- This module works with connection
network_cli
. See https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html - The module examples uses callback plugin (stdout_callback = yaml) to generate task output in yaml format.
# Using merged
# Before state:
# -------------
#
# vios#show running-config | include ip route|ipv6 route
- name: Merge provided configuration with device configuration
cisco.ios.ios_static_routes:
config:
- vrf: blue
address_families:
- afi: ipv4
routes:
- dest: 192.0.2.0/24
next_hops:
- forward_router_address: 192.0.2.1
name: merged_blue
tag: 50
track: 150
- address_families:
- afi: ipv4
routes:
- dest: 198.51.100.0/24
next_hops:
- forward_router_address: 198.51.101.1
name: merged_route_1
distance_metric: 110
tag: 40
multicast: true
- forward_router_address: 198.51.101.2
name: merged_route_2
distance_metric: 30
- forward_router_address: 198.51.101.3
name: merged_route_3
- afi: ipv6
routes:
- dest: 2001:DB8:0:3::/64
next_hops:
- forward_router_address: 2001:DB8:0:3::2
name: merged_v6
tag: 105
state: merged
# Task Output
# -----------
#
# before:
# - {}
# commands:
# - ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name merged_v6
# - ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name merged_route_1 multicast
# - ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name merged_route_2
# - ip route 198.51.100.0 255.255.255.0 198.51.101.3 name merged_route_3
# - ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name merged_blue track 150
# after:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: merged_route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: merged_route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: merged_route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: merged_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: merged_blue
# tag: 50
# track: 150
# vrf: blue
# After state:
# ------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name merged_blue track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name merged_route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name merged_route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name merged_route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name merged_v6
# Using replaced
# Before state:
# -------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name merged_blue track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name merged_route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name merged_route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name merged_route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name merged_v6
- name: Replace provided configuration with device configuration
cisco.ios.ios_static_routes:
config:
- address_families:
- afi: ipv4
routes:
- dest: 198.51.100.0/24
next_hops:
- forward_router_address: 198.51.101.1
name: replaced_route
distance_metric: 175
tag: 70
multicast: true
state: replaced
# Task Output
# -----------
#
# before:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: merged_route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: merged_route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: merged_route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: merged_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: merged_blue
# tag: 50
# track: 150
# vrf: blue
# commands:
# - ip route 198.51.100.0 255.255.255.0 198.51.101.1 175 tag 70 name replaced_route multicast
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name merged_route_3
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name merged_route_2
# after:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - distance_metric: 175
# forward_router_address: 198.51.101.1
# multicast: true
# name: replaced_route
# tag: 70
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: merged_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: merged_blue
# tag: 50
# track: 150
# vrf: blue
# After state:
# ------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name merged_blue track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 175 tag 70 name replaced_route multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name merged_v6
# Using overridden
# Before state:
# -------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name merged_blue track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 175 tag 70 name replaced_route multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name merged_v6
- name: Override provided configuration with device configuration
cisco.ios.ios_static_routes:
config:
- vrf: blue
address_families:
- afi: ipv4
routes:
- dest: 192.0.2.0/24
next_hops:
- forward_router_address: 192.0.2.1
name: override_vrf
tag: 50
track: 150
state: overridden
# Task Output
# -----------
#
# before:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - distance_metric: 175
# forward_router_address: 198.51.101.1
# multicast: true
# name: replaced_route
# tag: 70
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: merged_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: merged_blue
# tag: 50
# track: 150
# vrf: blue
# commands:
# - ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name override_vrf track 150
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.1 175 tag 70 name replaced_route multicast
# - no ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name merged_v6
# after:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: override_vrf
# tag: 50
# track: 150
# vrf: blue
# After state:
# ------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name override_vrf track 150
# Using deleted
# Before state:
# -------------
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
- name: Delete the exact static routes, with all the static routes explicitly mentioned in want
cisco.ios.ios_static_routes:
config:
- vrf: blue
address_families:
- afi: ipv4
routes:
- dest: 192.0.2.0/24
next_hops:
- forward_router_address: 192.0.2.1
name: test_vrf
tag: 50
track: 150
- address_families:
- afi: ipv4
routes:
- dest: 198.51.100.0/24
next_hops:
- forward_router_address: 198.51.101.1
name: route_1
distance_metric: 110
tag: 40
multicast: true
- forward_router_address: 198.51.101.2
name: route_2
distance_metric: 30
- forward_router_address: 198.51.101.3
name: route_3
- afi: ipv6
routes:
- dest: 2001:DB8:0:3::/64
next_hops:
- forward_router_address: 2001:DB8:0:3::2
name: test_v6
tag: 105
state: deleted
# Task Output
# -----------
#
# before:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: test_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: test_vrf
# tag: 50
# track: 150
# vrf: blue
# commands:
# - no ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# - no ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
# after: {}
# After state:
# ------------
#
# vios#show running-config | include ip route|ipv6 route
# Using deleted - delete based on specific routes
# Before state:
# -------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
- name: Delete destination specific static routes
cisco.ios.ios_static_routes:
config:
- address_families:
- afi: ipv4
routes:
- dest: 198.51.100.0/24
state: deleted
# Task Output
# -----------
#
# before:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: test_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: test_vrf
# tag: 50
# track: 150
# vrf: blue
# commands:
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# after:
# - address_families:
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: test_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: test_vrf
# tag: 50
# track: 150
# vrf: blue
# After state:
# ------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
# Using deleted - delete based on vrfs
# Before state:
# -------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
- name: Delete vrf specific static routes
cisco.ios.ios_static_routes:
config:
- vrf: blue
state: deleted
# Task Output
# -----------
#
# before:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: test_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: test_vrf
# tag: 50
# track: 150
# vrf: blue
# commands:
# - no ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# after:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: test_v6
# tag: 105
# After state:
# ------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
# Using deleted - delete all
# Before state:
# -------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
- name: Delete ALL configured static routes
cisco.ios.ios_static_routes:
state: deleted
# Task Output
# -----------
#
# before:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: test_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: test_vrf
# tag: 50
# track: 150
# vrf: blue
# commands:
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# - no ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# - no ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
# - no ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# after: {}
# After state:
# -------------
#
# vios#show running-config | include ip route|ipv6 route
# Using gathered
# Before state:
# -------------
#
# vios#show running-config | include ip route|ipv6 route
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
- name: Gather facts of static routes
cisco.ios.ios_static_routes:
config:
state: gathered
# Task Output
# -----------
#
# gathered:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: test_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: test_vrf
# tag: 50
# track: 150
# vrf: blue
# Using rendered
- name: Render the commands for provided configuration
cisco.ios.ios_static_routes:
config:
- vrf: blue
address_families:
- afi: ipv4
routes:
- dest: 192.0.2.0/24
next_hops:
- forward_router_address: 192.0.2.1
name: test_vrf
tag: 50
track: 150
- address_families:
- afi: ipv4
routes:
- dest: 198.51.100.0/24
next_hops:
- forward_router_address: 198.51.101.1
name: route_1
distance_metric: 110
tag: 40
multicast: true
- forward_router_address: 198.51.101.2
name: route_2
distance_metric: 30
- forward_router_address: 198.51.101.3
name: route_3
- afi: ipv6
routes:
- dest: 2001:DB8:0:3::/64
next_hops:
- forward_router_address: 2001:DB8:0:3::2
name: test_v6
tag: 105
state: rendered
# Task Output
# -----------
#
# rendered:
# - ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# - ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# - ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# - ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# - ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
# Using parsed
# File: parsed.cfg
# ----------------
#
# ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150
# ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3
# ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2
# ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast
# ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6
- name: Parse the provided configuration
cisco.ios.ios_static_routes:
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
# Task Output
# -----------
#
# parsed:
# - address_families:
# - afi: ipv4
# routes:
# - dest: 198.51.100.0/24
# next_hops:
# - forward_router_address: 198.51.101.3
# name: route_3
# - distance_metric: 30
# forward_router_address: 198.51.101.2
# name: route_2
# - distance_metric: 110
# forward_router_address: 198.51.101.1
# multicast: true
# name: route_1
# tag: 40
# - afi: ipv6
# routes:
# - dest: 2001:DB8:0:3::/64
# next_hops:
# - forward_router_address: 2001:DB8:0:3::2
# name: test_v6
# tag: 105
# - address_families:
# - afi: ipv4
# routes:
# - dest: 192.0.2.0/24
# next_hops:
# - forward_router_address: 192.0.2.1
# name: test_vrf
# tag: 50
# track: 150
# vrf: blue
Common return values are documented here, the following are the fields unique to this module:
- Sagar Paul (@KB-perByte)
- Sumit Jaiswal (@justjais)