vyos.vyos.vyos_route_maps – Route Map Resource Module.

Note

This plugin is part of the vyos.vyos collection (version 2.5.1).

To install it use: ansible-galaxy collection install vyos.vyos.

To use it in a playbook, specify: vyos.vyos.vyos_route_maps.

New in version 2.3.0: of vyos.vyos

Synopsis

  • This module manages route map configurations on devices running VYOS.

Parameters

Parameter Choices/Defaults Comments
config
list / elements=dictionary
A list of route-map configuration.
entries
list / elements=dictionary
Route Map rules.

aliases: rules
action
string
    Choices:
  • deny
  • permit
Action for matching routes
call
string
Route map name
continue_sequence
integer
Continue on a different entry within the route-map.
description
string
Description for the rule.
match
dictionary
Route parameters to match.
as_path
string
Set as-path.
community
dictionary
BGP community attribute.
community_list
string
BGP community-list to match
exact_match
boolean
    Choices:
  • no
  • yes
BGP community-list to match
extcommunity
string
Extended community name.
interface
string
First hop interface of a route to match.
ip
dictionary
IP prefix parameters to match.
address
dictionary
IP address of route to match.
list_type
string
    Choices:
  • access-list
  • prefix-list
type of list
value
string
value of access-list and prefix list
next_hop
dictionary
next hop prefix list.
list_type
string
    Choices:
  • access-list
  • prefix-list
type of list
value
string
value of access-list and prefix list
route_source
dictionary
IP route-source to match
list_type
string
    Choices:
  • access-list
  • prefix-list
type of list
value
string
value of access-list and prefix list
ipv6
dictionary
IPv6 prefix parameters to match.
address
dictionary
IPv6 address of route to match.
list_type
string
    Choices:
  • access-list
  • prefix-list
type of list
value
string
value of access-list and prefix list
next_hop
string
next-hop ipv6 address IPv6 <h:h:h:h:h:h:h:h>.
large_community_large_community_list
string
BGP large-community-list to match.
metric
integer
Route metric <1-65535>.
origin
string
    Choices:
  • ebgp
  • ibgp
  • incomplete
bgp origin.
peer
string
Peer IP address <x.x.x.x>.
rpki
string
    Choices:
  • notfound
  • invalid
  • valid
RPKI validation value.
on_match
dictionary
Exit policy on matches.
goto
integer
Rule number to goto on match <1-65535>.
next
boolean
    Choices:
  • no
  • yes
Next sequence number to goto on match.
sequence
integer
Route map rule number <1-65535>.
set
dictionary
Route parameters.
aggregator
dictionary
Border Gateway Protocol (BGP) aggregator attribute.
as
string
AS number of an aggregation.
ip
string
IP address.
as_path_exclude
string
BGP AS path exclude string ex "456 64500 45001"
as_path_prepend
string
Prepend string for a Border Gateway Protocol (BGP) AS-path attribute.
atomic_aggregate
boolean
    Choices:
  • no
  • yes
Border Gateway Protocol (BGP) atomic aggregate attribute.
bgp_extcommunity_rt
string
ExtCommunity in format AS:value
comm_list
dictionary
Border Gateway Protocol (BGP) communities matching a community-list.
comm_list
string
BGP communities with a community-list.
delete
boolean
    Choices:
  • no
  • yes
Delete BGP communities matching the community-list.
community
dictionary
Border Gateway Protocol (BGP) community attribute.
value
string
Community in 4 octet AS:value format or it can be from local-AS, no-advertise,no-expert,internet,additive,none.
extcommunity_rt
string
Set route target value.ASN:nn_or_IP_address:nn VPN extended community.
extcommunity_soo
string
Set Site of Origin value. ASN:nn_or_IP_address:nn VPN extended community
ip_next_hop
string
IP address.
ipv6_next_hop
dictionary
Nexthop IPv6 address.
ip_type
string
    Choices:
  • global
  • local
Global or Local
value
string
ipv6 address
large_community
string
Set BGP large community value.
local_preference
string
Border Gateway Protocol (BGP) local preference attribute.Example <0-4294967295>.
metric
string
Destination routing protocol metric. Example <0-4294967295>.
metric_type
string
    Choices:
  • type-1
  • type-2
Open Shortest Path First (OSPF) external metric-type.
origin
string
    Choices:
  • egp
  • igp
  • incomplete
Set bgp origin.
originator_id
string
Border Gateway Protocol (BGP) originator ID attribute. Originator IP address.
src
string
Source address for route. Example <x.x.x.x> IP address.
tag
string
Tag value for routing protocol. Example <1-65535>
weight
string
Border Gateway Protocol (BGP) weight attribute. Example <0-4294967295>
route_map
string
Route map name.
running_config
string
This option is used only with state parsed.
The value of this option should be the output received from the VYOS device by executing the command show configuration commands | grep route-map.
The state parsed reads the configuration from show configuration commands | grep route-map option and transforms it into Ansible structured data as per the resource module's argspec and the value is then returned in the parsed key within the result.
state
string
    Choices:
  • deleted
  • merged ←
  • overridden
  • replaced
  • gathered
  • rendered
  • parsed
The state the configuration should be left in.

Notes

Note

  • Tested against vyos 1.2.

  • This module works with connection network_cli.

Examples

# Using merged
# Before state

# [email protected]:~$ show configuration commands |  match "set policy route-map"
# [email protected]:~$
    - name: Merge the provided configuration with the existing running configuration
      register: result
      vyos.vyos.vyos_route_maps: &id001
        config:
          - route_map: test1
            entries:
              - sequence: 1
                description: "test"
                action: permit
                continue: 2
                on_match:
                  next: True
          - route_map: test3
            entries:
              - sequence: 1
                action: permit
                match:
                  rpki: invalid
                  metric: 1
                  peer: 192.0.2.32
                set:
                  local_preference: 4
                  metric: 5
                  metric_type: "type-1"
                  origin: egp
                  originator_id: 192.0.2.34
                  tag: 5
                  weight: 4
        state: merged
# After State
# [email protected]:~$ show configuration commands |  match "set policy route-maps"
#   set policy route-map test1 rule 1 description test
#   set policy route-map test1 rule 1 action permit
#   set policy route-map test1 rule 1 continue 2
#   set policy route-map test1 rule 1 on-match next
#   set policy route-map test3 rule 1 action permit
#   set policy route-map test3 rule 1 set local-preference 4
#   set policy route-map test3 rule 1 set metric 5
#   set policy route-map test3 rule 1 set metric-type type-1
#   set policy route-map test3 rule 1 set origin egp
#   set policy route-map test3 rule 1 set originator-id 192.0.2.34
#   set policy route-map test3 rule 1 set tag 5
#   set policy route-map test3 rule 1 set weight 4
#   set policy route-map test3 rule 1 match metric 1
#   set policy route-map test3 rule 1 match peer 192.0.2.32
#   set policy route-map test3 rule 1 match rpki invalid

# "after": [
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "continue_sequence": 2,
#                     "description": "test",
#                     "on_match": {
#                         "next": true
#                     },
#                     "sequence": 1
#                 }
#             ],
#             "route_map": "test1"
#         },
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "match": {
#                         "metric": 1,
#                         "peer": "192.0.2.32",
#                         "rpki": "invalid"
#                     },
#                     "sequence": 1,
#                     "set": {
#                         "local_preference": "4",
#                         "metric": "5",
#                         "metric_type": "type-1",
#                         "origin": "egp",
#                         "originator_id": "192.0.2.34",
#                         "tag": "5",
#                         "weight": "4"
#                     }
#                 }
#             ],
#             "route_map": "test3"
#         }
#     ],
#     "before": [],
#     "changed": true,
#     "commands": [
#         "set policy route-map test1 rule 1 description test",
#         "set policy route-map test1 rule 1 action permit",
#         "set policy route-map test1 rule 1 continue 2",
#         "set policy route-map test1 rule 1 on-match next",
#         "set policy route-map test3 rule 1 action permit",
#         "set policy route-map test3 rule 1 set local-preference 4",
#         "set policy route-map test3 rule 1 set metric 5",
#         "set policy route-map test3 rule 1 set metric-type type-1",
#         "set policy route-map test3 rule 1 set origin egp",
#         "set policy route-map test3 rule 1 set originator-id 192.0.2.34",
#         "set policy route-map test3 rule 1 set tag 5",
#         "set policy route-map test3 rule 1 set weight 4",
#         "set policy route-map test3 rule 1 match metric 1",
#         "set policy route-map test3 rule 1 match peer 192.0.2.32",
#         "set policy route-map test3 rule 1 match rpki invalid"
#     ],

# Using replaced:
# --------------

# Before state:
# [email protected]:~$ show configuration commands |  match "set route-map policy"
# set policy route-map test2 rule 1 action 'permit'
# set policy route-map test2 rule 1 description 'test'
# set policy route-map test2 rule 1 on-match next
# set policy route-map test2 rule 2 action 'permit'
# set policy route-map test2 rule 2 on-match goto '4'
# set policy route-map test3 rule 1 action 'permit'
# set policy route-map test3 rule 1 match metric '1'
# set policy route-map test3 rule 1 match peer '192.0.2.32'
# set policy route-map test3 rule 1 match rpki 'invalid'
# set policy route-map test3 rule 1 set community 'internet'
# set policy route-map test3 rule 1 set ip-next-hop '192.0.2.33'
# set policy route-map test3 rule 1 set local-preference '4'
# set policy route-map test3 rule 1 set metric '5'
# set policy route-map test3 rule 1 set metric-type 'type-1'
# set policy route-map test3 rule 1 set origin 'egp'
# set policy route-map test3 rule 1 set originator-id '192.0.2.34'
# set policy route-map test3 rule 1 set tag '5'
# set policy route-map test3 rule 1 set weight '4'
#
#     - name: Replace  the provided configuration with the existing running configuration
#       register: result
#       vyos.vyos.vyos_route_maps: &id001
#         config:
#           - route_map: test3
#             entries:
#               - sequence: 1
#                 action: permit
#                 match:
#                   rpki: invalid
#                   metric: 3
#                   peer: 192.0.2.35
#                 set:
#                   local_preference: 6
#                   metric: 4
#                   metric_type: "type-1"
#                   origin: egp
#                   originator_id: 192.0.2.34
#                   tag: 4
#                   weight: 4
#         state: replaced
# After state:

# [email protected]:~$ show configuration commands |  match "set policy route-map"
# set policy route-map test3 rule 1 set local-preference 6
# set policy route-map test3 rule 1 set metric 4
# set policy route-map test3 rule 1 set tag 4
# set policy route-map test3 rule 1 match metric 3
# set policy route-map test3 rule 1 match peer 192.0.2.35
# [email protected]:~$
#
#
# Module Execution:
#
# "after": [
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "description": "test",
#                     "on_match": {
#                         "next": true
#                     },
#                     "sequence": 1
#                 },
#                 {
#                     "action": "permit",
#                     "on_match": {
#                         "goto": 4
#                     },
#                     "sequence": 2
#                 }
#             ],
#             "route_map": "test2"
#         },
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "match": {
#                         "metric": 3,
#                         "peer": "192.0.2.35",
#                         "rpki": "invalid"
#                     },
#                     "sequence": 1,
#                     "set": {
#                         "local_preference": "6",
#                         "metric": "4",
#                         "metric_type": "type-1",
#                         "origin": "egp",
#                         "originator_id": "192.0.2.34",
#                         "tag": "4",
#                         "weight": "4"
#                     }
#                 }
#             ],
#             "route_map": "test3"
#         }
#     ],
#     "before": [
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "description": "test",
#                     "on_match": {
#                         "next": true
#                     },
#                     "sequence": 1
#                 },
#                 {
#                     "action": "permit",
#                     "on_match": {
#                         "goto": 4
#                     },
#                     "sequence": 2
#                 }
#             ],
#             "route_map": "test2"
#         },
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "match": {
#                         "metric": 1,
#                         "peer": "192.0.2.32",
#                         "rpki": "invalid"
#                     },
#                     "sequence": 1,
#                     "set": {
#                         "community": {
#                             "value": "internet"
#                         },
#                         "ip_next_hop": "192.0.2.33",
#                         "local_preference": "4",
#                         "metric": "5",
#                         "metric_type": "type-1",
#                         "origin": "egp",
#                         "originator_id": "192.0.2.34",
#                         "tag": "5",
#                         "weight": "4"
#                     }
#                 }
#             ],
#             "route_map": "test3"
#         }
#     ],
#     "changed": true,
#     "commands": [
#         "delete policy route-map test3 rule 1 set ip-next-hop 192.0.2.33",
#         "set policy route-map test3 rule 1 set local-preference 6",
#         "set policy route-map test3 rule 1 set metric 4",
#         "set policy route-map test3 rule 1 set tag 4",
#         "delete policy route-map test3 rule 1 set community internet",
#         "set policy route-map test3 rule 1 match metric 3",
#         "set policy route-map test3 rule 1 match peer 192.0.2.35"
#     ],
#
# Using deleted:
# -------------

# Before state:
# [email protected]:~$ show configuration commands |  match "set policy route-map"
# set policy route-map test3 rule 1 set local-preference 6
# set policy route-map test3 rule 1 set metric 4
# set policy route-map test3 rule 1 set tag 4
# set policy route-map test3 rule 1 match metric 3
# set policy route-map test3 rule 1 match peer 192.0.2.35
# [email protected]:~$
#
# - name: Delete the provided configuration
#   register: result
#   vyos.vyos.vyos_route_maps:
#     config:
#     state: deleted
# After state:

# [email protected]:~$ show configuration commands |  match "set policy route-map"
# [email protected]:~$
#
#
# Module Execution:
#
# "after": [],
#     "before": [
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "match": {
#                         "metric": 3,
#                         "peer": "192.0.2.35",
#                     },
#                     "sequence": 1,
#                     "set": {
#                         "local_preference": "6",
#                         "metric": "4",
#                         "tag": "4",
#                     }
#                 }
#             ],
#             "route_map": "test3"
#         }
#     ],
#     "changed": true,
#     "commands": [
#         "delete policy route-map test3"
#     ],
#
# using gathered:
# --------------
#
# Before state:
# [email protected]:~$ show configuration commands |  match "set policy route-maps"
#   set policy route-map test1 rule 1 description test
#   set policy route-map test1 rule 1 action permit
#   set policy route-map test1 rule 1 continue 2
#   set policy route-map test1 rule 1 on-match next
#   set policy route-map test3 rule 1 action permit
#   set policy route-map test3 rule 1 set local-preference 4
#   set policy route-map test3 rule 1 set metric 5
#   set policy route-map test3 rule 1 set metric-type type-1
#   set policy route-map test3 rule 1 set origin egp
#   set policy route-map test3 rule 1 set originator-id 192.0.2.34
#   set policy route-map test3 rule 1 set tag 5
#   set policy route-map test3 rule 1 set weight 4
#   set policy route-map test3 rule 1 match metric 1
#   set policy route-map test3 rule 1 match peer 192.0.2.32
#   set policy route-map test3 rule 1 match rpki invalid
#
# - name: gather configs
#     vyos.vyos.vyos_route_maps:
#       state: gathered

# "gathered": [
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "continue_sequence": 2,
#                     "description": "test",
#                     "on_match": {
#                         "next": true
#                     },
#                     "sequence": 1
#                 }
#             ],
#             "route_map": "test1"
#         },
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "match": {
#                         "metric": 1,
#                         "peer": "192.0.2.32",
#                         "rpki": "invalid"
#                     },
#                     "sequence": 1,
#                     "set": {
#                         "local_preference": "4",
#                         "metric": "5",
#                         "metric_type": "type-1",
#                         "origin": "egp",
#                         "originator_id": "192.0.2.34",
#                         "tag": "5",
#                         "weight": "4"
#                     }
#                 }
#             ],
#             "route_map": "test3"
#         }
#     ]

# Using parsed:
# ------------

# parsed.cfg
# set policy route-map test1 rule 1 description test
# set policy route-map test1 rule 1 action permit
# set policy route-map test1 rule 1 continue 2
# set policy route-map test1 rule 1 on-match next
# set policy route-map test3 rule 1 action permit
# set policy route-map test3 rule 1 set local-preference 4
# set policy route-map test3 rule 1 set metric 5
# set policy route-map test3 rule 1 set metric-type type-1
# set policy route-map test3 rule 1 set origin egp
# set policy route-map test3 rule 1 set originator-id 192.0.2.34
# set policy route-map test3 rule 1 set tag 5
# set policy route-map test3 rule 1 set weight 4
# set policy route-map test3 rule 1 match metric 1
# set policy route-map test3 rule 1 match peer 192.0.2.32
# set policy route-map test3 rule 1 match rpki invalid
#
# - name: parse configs
#   vyos.vyos.vyos_route_maps:
#     running_config: "{{ lookup('file', './parsed.cfg') }}"
#     state: parsed
#   tags:
#     - parsed
#
# Module execution:
# "parsed": [
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "continue_sequence": 2,
#                     "description": "test",
#                     "on_match": {
#                         "next": true
#                     },
#                     "sequence": 1
#                 }
#             ],
#             "route_map": "test1"
#         },
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "match": {
#                         "metric": 1,
#                         "peer": "192.0.2.32",
#                         "rpki": "invalid"
#                     },
#                     "sequence": 1,
#                     "set": {
#                         "local_preference": "4",
#                         "metric": "5",
#                         "metric_type": "type-1",
#                         "origin": "egp",
#                         "originator_id": "192.0.2.34",
#                         "tag": "5",
#                         "weight": "4"
#                     }
#                 }
#             ],
#             "route_map": "test3"
#         }
#     ]
#
#
# Using rendered:
# --------------
# - name: Structure provided configuration into device specific commands
#       register: result
#       vyos.vyos.vyos_route_maps: &id001
#         config:
#           - route_map: test1
#             entries:
#               - sequence: 1
#                 description: "test"
#                 action: permit
#                 continue_sequence: 2
#                 on_match:
#                   next: True
#           - route_map: test3
#             entries:
#               - sequence: 1
#                 action: permit
#                 match:
#                   rpki: invalid
#                   metric: 1
#                   peer: 192.0.2.32
#                 set:
#                   local_preference: 4
#                   metric: 5
#                   metric_type: "type-1"
#                   origin: egp
#                   originator_id: 192.0.2.34
#                   tag: 5
#                   weight: 4
#         state: rendered
# Module Execution:
# "rendered": [
#         "set policy route-map test1 rule 1 description test",
#         "set policy route-map test1 rule 1 action permit",
#         "set policy route-map test1 rule 1 continue 2",
#         "set policy route-map test1 rule 1 on-match next",
#         "set policy route-map test3 rule 1 action permit",
#         "set policy route-map test3 rule 1 set local-preference 4",
#         "set policy route-map test3 rule 1 set metric 5",
#         "set policy route-map test3 rule 1 set metric-type type-1",
#         "set policy route-map test3 rule 1 set origin egp",
#         "set policy route-map test3 rule 1 set originator-id 192.0.2.34",
#         "set policy route-map test3 rule 1 set tag 5",
#         "set policy route-map test3 rule 1 set weight 4",
#         "set policy route-map test3 rule 1 match metric 1",
#         "set policy route-map test3 rule 1 match peer 192.0.2.32",
#         "set policy route-map test3 rule 1 match rpki invalid"
#     ]
#
#
# Using overridden:
# --------------
# Before state:
# [email protected]:~$ show configuration commands |  match "set policy route-map"
# set policy route-map test2 rule 1 action 'permit'
# set policy route-map test2 rule 1 description 'test'
# set policy route-map test2 rule 1 on-match next
# set policy route-map test2 rule 2 action 'permit'
# set policy route-map test2 rule 2 on-match goto '4'
# set policy route-map test3 rule 1 action 'permit'
# set policy route-map test3 rule 1 match metric '1'
# set policy route-map test3 rule 1 match peer '192.0.2.32'
# set policy route-map test3 rule 1 match rpki 'invalid'
# set policy route-map test3 rule 1 set community 'internet'
# set policy route-map test3 rule 1 set ip-next-hop '192.0.2.33'
# set policy route-map test3 rule 1 set local-preference '4'
# set policy route-map test3 rule 1 set metric '5'
# set policy route-map test3 rule 1 set metric-type 'type-1'
# set policy route-map test3 rule 1 set origin 'egp'
# set policy route-map test3 rule 1 set originator-id '192.0.2.34'
# set policy route-map test3 rule 1 set tag '5'
# set policy route-map test3 rule 1 set weight '4'
#
#     - name: Override the existing configuration with the provided running configuration
#       register: result
#       vyos.vyos.vyos_route_maps: &id001
#         config:
#           - route_map: test3
#             entries:
#               - sequence: 1
#                 action: permit
#                 match:
#                   rpki: invalid
#                   metric: 3
#                   peer: 192.0.2.35
#                 set:
#                   local_preference: 6
#                   metric: 4
#                   metric_type: "type-1"
#                   origin: egp
#                   originator_id: 192.0.2.34
#                   tag: 4
#                   weight: 4
#         state: overridden
# After state:

# [email protected]:~$ show configuration commands |  match "set policy route-map"
# set policy route-map test3 rule 1 set metric-type 'type-1'
# set policy route-map test3 rule 1 set origin 'egp'
# set policy route-map test3 rule 1 set originator-id '192.0.2.34'
# set policy route-map test3 rule 1 set weight '4'
# set policy route-map test3 rule 1 set local-preference 6
# set policy route-map test3 rule 1 set metric 4
# set policy route-map test3 rule 1 set tag 4
# set policy route-map test3 rule 1 match metric 3
# set policy route-map test3 rule 1 match peer 192.0.2.35
# set policy route-map test3 rule 1 match rpki 'invalid'

# Module Execution:
# "after": [
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "match": {
#                         "metric": 3,
#                         "peer": "192.0.2.35",
#                         "rpki": "invalid"
#                     },
#                     "sequence": 1,
#                     "set": {
#                         "local_preference": "6",
#                         "metric": "4",
#                         "metric_type": "type-1",
#                         "origin": "egp",
#                         "originator_id": "192.0.2.34",
#                         "tag": "4",
#                         "weight": "4"
#                     }
#                 }
#             ],
#             "route_map": "test3"
#         }
#     ],
#     "before": [
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "description": "test",
#                     "on_match": {
#                         "next": true
#                     },
#                     "sequence": 1
#                 },
#                 {
#                     "action": "permit",
#                     "on_match": {
#                         "goto": 4
#                     },
#                     "sequence": 2
#                 }
#             ],
#             "route_map": "test2"
#         },
#         {
#             "entries": [
#                 {
#                     "action": "permit",
#                     "match": {
#                         "metric": 1,
#                         "peer": "192.0.2.32",
#                         "rpki": "invalid"
#                     },
#                     "sequence": 1,
#                     "set": {
#                         "community": {
#                             "value": "internet"
#                         },
#                         "ip_next_hop": "192.0.2.33",
#                         "local_preference": "4",
#                         "metric": "5",
#                         "metric_type": "type-1",
#                         "origin": "egp",
#                         "originator_id": "192.0.2.34",
#                         "tag": "5",
#                         "weight": "4"
#                     }
#                 }
#             ],
#             "route_map": "test3"
#         }
#     ],
#     "changed": true,
#     "commands": [
#         "delete policy route-map test2",
#         "delete policy route-map test3 rule 1 set ip-next-hop 192.0.2.33",
#         "set policy route-map test3 rule 1 set local-preference 6",
#         "set policy route-map test3 rule 1 set metric 4",
#         "set policy route-map test3 rule 1 set tag 4",
#         "delete policy route-map test3 rule 1 set community internet",
#         "set policy route-map test3 rule 1 match metric 3",
#         "set policy route-map test3 rule 1 match peer 192.0.2.35"
#     ],
#

Authors

  • Ashwini Mhatre (@amhatre)