diff --git a/docs/vyos.vyos.vyos_vrf_module.rst b/docs/vyos.vyos.vyos_vrf_module.rst index 0b2e6dfe..2d6a071b 100644 --- a/docs/vyos.vyos.vyos_vrf_module.rst +++ b/docs/vyos.vyos.vyos_vrf_module.rst @@ -1,2580 +1,5141 @@ .. _vyos.vyos.vyos_vrf_module: ****************** vyos.vyos.vyos_vrf ****************** **VRF resource module** Version added: 1.0.0 .. contents:: :local: :depth: 1 Synopsis -------- - This module manages vrf configuration on devices running Vyos Parameters ---------- .. raw:: html - + - - - - - - - - - - - - - - - - - - + - - + - - - + - - + - - - + - - + + - - - - + - - - - - - - - + - + - + + - + + - - + + - - - - - - + - - - + - - - + - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - + - - - - + - - - - - - - - - + - - - - - + - - - + + + + + + + + - + + + - - - - - - - - - + - - - - - - - + - - - - - - - - - + - - + + + + - - - - + - + + - - - + + + + - + + + + - + + + + + + + + - - - -
ParameterParameter Choices/Defaults Comments
+
config
dictionary
List of vrf configuration.
+
bind_to_all
boolean
    Choices:
  • no ←
  • yes
Enable binding services to all VRFs
+
instances
list / elements=dictionary
Virtual Routing and Forwarding instance
+
address_family
list / elements=dictionary
Address family configuration
+
afi
string
    Choices:
  • ipv4
  • ipv6
Address family identifier
+
disable_forwarding
boolean
    Choices:
  • no ←
  • yes
Disable forwarding for this address family
+
nht_no_resolve_via_default
boolean
    Choices:
  • no ←
  • yes
Disable next-hop resolution via default route
+
route_maps
list / elements=dictionary
List of route maps for this address family
+
protocol
string
    Choices:
  • any
  • babel
  • bgp
  • connected
  • eigrp
  • isis
  • kernel
  • ospf
  • rip
  • static
  • table
Protocol to which the route map applies
+
rm_name
string / required
Route map name
+
description
string
Description
+
disable
boolean
    Choices:
  • no ←
  • yes
Administratively disable interface

aliases: disabled
+
name
string / required
VRF instance name
+
protocols
- dictionary + list / elements=dictionary
Protocol configuration
+
bgp
dictionary
BGP configuration
+
- address_family + as_number
- list - / elements=dictionary + integer
-
BGP address-family parameters.
+
AS number.
+
- afi + bgp_params
- string + dictionary
-
    Choices: -
  • ipv4
  • -
  • ipv6
  • -
-
BGP address family settings.
+
BGP parameters
+
- aggregate_address + always_compare_med
- list - / elements=dictionary + boolean
+
    Choices: +
  • no
  • +
  • yes
  • +
-
BGP aggregate network.
+
Always compare MEDs from different neighbors
+
- as_set + bestpath
- boolean + dictionary
-
    Choices: -
  • no
  • -
  • yes
  • -
-
Generate AS-set path information for this aggregate address.
+
Default bestpath selection mechanism
+
- prefix + as_path
string
+
    Choices: +
  • confed
  • +
  • ignore
  • +
-
BGP aggregate network.
+
AS-path attribute comparison parameters
+
- summary_only + compare_routerid
boolean
    Choices:
  • no
  • yes
-
Announce the aggregate summary network only.
+
Compare the router-id for identical EBGP paths
- networks + med
- list - / elements=dictionary + string
+
    Choices: +
  • confed
  • +
  • missing-as-worst
  • +
-
BGP network
+
MED attribute comparison parameters
+
- backdoor + cluster_id
- boolean + string
-
    Choices: -
  • no
  • -
  • yes
  • -
-
Network as a backdoor route.
+
Route-reflector cluster-id
+
- path_limit + confederation
- integer + list + / elements=dictionary
-
AS path hop count limit
+
AS confederation parameters
+
- prefix + identifier
- string + integer
-
BGP network address
+
Confederation AS identifier
+
- route_map + peers
- string + integer
-
Route-map to modify route attributes
+
Peer ASs in the BGP confederation
+
- redistribute + dampening
- list - / elements=dictionary + dictionary
-
Redistribute routes from other protocols into BGP
+
Enable route-flap dampening
+
- metric + half_life
integer
-
Metric for redistributed routes.
+
Half-life penalty in seconds
+
- protocol + max_suppress_time
- string + integer
-
    Choices: -
  • connected
  • -
  • kernel
  • -
  • ospf
  • -
  • ospfv3
  • -
  • rip
  • -
  • ripng
  • -
  • static
  • -
-
types of routes to be redistributed.
+
Maximum duration to suppress a stable route
+
- route_map + re_use
- string + integer
-
Route map to filter redistributed routes
+
Time to start reusing a route
+
- table + start_suppress_time
- string + integer
-
Redistribute non-main Kernel Routing Table.
+
When to start suppressing a route
- as_number + default
- integer + dictionary
-
AS number
+
BGP defaults
+
- neighbors + local_pref
- list - / elements=dictionary + integer
-
BGP neighbor
+
Default local preference
- address_family + no_ipv4_unicast
- list - / elements=dictionary + boolean
+
    Choices: +
  • no
  • +
  • yes
  • +
-
address family.
+
Deactivate IPv4 unicast for a peer by default + Deprecated: Unavailable after 1.4
+
- afi + deterministic_med
- string + boolean
    Choices: -
  • ipv4
  • -
  • ipv6
  • +
  • no
  • +
  • yes
-
BGP neighbor parameters.
+
Compare MEDs between different peers in the same AS
+
- allowas_in + disable_network_import_check
- integer + boolean
+
    Choices: +
  • no
  • +
  • yes
  • +
-
Number of occurrences of AS number.
+
Disable IGP route check for network statements
+
- as_override + distance
- boolean + list + / elements=dictionary
-
    Choices: -
  • no
  • -
  • yes
  • -
-
AS for routes sent to this neighbor to be the local AS.
+
Administrative distances for BGP routes
+
- attribute_unchanged + prefix
- dictionary + integer
-
BGP attributes are sent unchanged.
+
Administrative distance for a specific BGP prefix
+
- as_path + type
- boolean + string
    Choices: -
  • no
  • -
  • yes
  • +
  • external
  • +
  • internal
  • +
  • local
-
as_path attribute
+
Type of route
+
- med + value
- boolean + integer
-
    Choices: -
  • no
  • -
  • yes
  • -
-
med attribute
+
distance
+
- next_hop + enforce_first_as
boolean
    Choices:
  • no
  • yes
-
next_hop attribute
+
Require first AS in the path to match peer's AS
+
- capability + graceful_restart
- dictionary + integer
-
Advertise capabilities to this neighbor.
+
Maximum time to hold onto restarting peer's stale paths
+
- dynamic + log_neighbor_changes + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Log neighbor up/down changes and reset reason
+
+
+ no_client_to_client_reflection + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable client to client route reflection
+
+
+ no_fast_external_failover + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable immediate session reset if peer's connected link goes down
+
+
+ router_id + +
+ string +
+
+ +
BGP router-id
+
+
+ scan_time + +
+ integer +
+
+ +
BGP route scanner interval
+
+
+ neighbor + +
+ list + / elements=dictionary +
+
+ +
BGP neighbor
+
+
+ address + +
+ string +
+
+ +
BGP neighbor address (v4/v6).
+
+
+ advertisement_interval + +
+ integer +
+
+ +
Minimum interval for sending routing updates.
+
+
+ capability + +
+ dictionary +
+
+ +
Advertise capabilities to this neighbor.
+
+
+ dynamic
boolean
    Choices:
  • no
  • yes
Advertise dynamic capability to this neighbor.
+ +
+ extended_nexthop + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Advertise extended nexthop capability to this neighbor.
+
+
+ default_originate + +
+ string +
+
+ +
Send default route to this neighbor
+
+
+ description + +
+ string +
+
+ +
Description of the neighbor
+
+
+ disable_capability_negotiation + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disbale capability negotiation with the neighbor
+
+
+ disable_connected_check + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable check to see if EBGP peer's address is a connected route.
+
+
+ disable_send_community + +
+ string +
+
+
    Choices: +
  • extended
  • +
  • standard
  • +
+
+
Disable sending community attributes to this neighbor.
+
+
+ ebgp_multihop + +
+ integer +
+
+ +
Allow this EBGP neighbor to not be on a directly connected network. Specify the number hops.
+
+
+ local_as + +
+ integer +
+
+ +
local as number not to be prepended to updates from EBGP peers
+
+
+ override_capability + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Ignore capability negotiation with specified neighbor.
+
+
+ passive + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not initiate a session with this neighbor
+
+
+ password + +
+ string +
+
+ +
BGP MD5 password
+
+
+ peer_group + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
True if all the configs under this neighbor key is for peer group template.
+
+
+ peer_group_name + +
+ string +
+
+ +
IPv4 peer group for this peer
+
+
+ port + +
+ integer +
+
+ +
Neighbor's BGP port
+
+
+ remote_as + +
+ integer +
+
+ +
Neighbor BGP AS number
+
+
+ shutdown + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Administratively shut down neighbor
+
+
+ solo + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send back prefixes learned from the neighbor
+
+
+ strict_capability_match + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable strict capability negotiation
+
+
+ timers + +
+ dictionary +
+
+ +
Neighbor timers
+
+
+ connect + +
+ integer +
+
+ +
BGP connect timer for this neighbor.
+
+
+ holdtime + +
+ integer +
+
+ +
BGP hold timer for this neighbor
+
+
+ keepalive + +
+ integer +
+
+ +
BGP keepalive interval for this neighbor
+
+
+ ttl_security + +
+ integer +
+
+ +
Number of the maximum number of hops to the BGP peer
+
+
+ update_source + +
+ string +
+
+ +
Source IP of routing updates
+
+
+ timers + +
+ dictionary +
+
+ +
BGP protocol timers
+
+
+ holdtime + +
+ integer +
+
+ +
Hold time interval
+
+
+ keepalive + +
+ integer +
+
+ +
Keepalive interval
+
+
+ ospf + +
+ dictionary +
+
+ +
OSPFv2 configuration
+
+
+ areas + +
+ list + / elements=dictionary +
+
+ +
OSPFv2 area.
+
+
+ area_id + +
+ string +
+
+ +
OSPFv2 area identity.
+
+
+ area_type + +
+ dictionary +
+
+ +
Area type.
+
+
+ normal + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Normal OSPFv2 area.
+
+
+ nssa + +
+ dictionary +
+
+ +
NSSA OSPFv2 area.
+
+
+ default_cost + +
+ integer +
+
+ +
Summary-default cost of NSSA area.
+
+
+ no_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not inject inter-area routes into stub.
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enabling NSSA.
+
+
+ translate + +
+ string +
+
+
    Choices: +
  • always
  • +
  • candidate
  • +
  • never
  • +
+
+
NSSA-ABR.
+
+
+ stub + +
+ dictionary +
+
+ +
Stub OSPFv2 area.
+
+
+ default_cost + +
+ integer +
+
+ +
Summary-default cost of stub area.
+
+
+ no_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not inject inter-area routes into stub.
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enabling stub.
+
+
+ authentication + +
+ string +
+
+
    Choices: +
  • plaintext-password
  • +
  • md5
  • +
+
+
OSPFv2 area authentication type.
+
+
+ network + +
+ list + / elements=dictionary +
+
+ +
OSPFv2 network.
+
+
+ address + +
+ string + / required +
+
+ +
OSPFv2 IPv4 network address.
+
+
+ range + +
+ list + / elements=dictionary +
+
+ +
Summarize routes matching prefix (border routers only).
+
+
+ address + +
+ string +
+
+ +
border router IPv4 address.
+
+
+ cost + +
+ integer +
+
+ +
Metric for this range.
+
+
+ not_advertise + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Don't advertise this range.
+
+
+ substitute + +
+ string +
+
+ +
Announce area range (IPv4 address) as another prefix.
+
+
+ shortcut + +
+ string +
+
+
    Choices: +
  • default
  • +
  • disable
  • +
  • enable
  • +
+
+
Area's shortcut mode.
+
+
+ virtual_link + +
+ list + / elements=dictionary +
+
+ +
Virtual link address.
+
+
+ address + +
+ string +
+
+ +
virtual link address.
+
+
+ authentication + +
+ dictionary +
+
+ +
OSPFv2 area authentication type.
+
+
+ md5 + +
+ list + / elements=dictionary +
+
+ +
MD5 key id based authentication.
+
+
+ key_id + +
+ integer +
+
+ +
MD5 key id.
+
+
+ md5_key + +
+ string +
+
+ +
MD5 key.
+
+
+ plaintext_password + +
+ string +
+
+ +
Plain text password.
+
+
+ dead_interval + +
+ integer +
+
+ +
Interval after which a neighbor is declared dead.
+
+
+ hello_interval + +
+ integer +
+
+ +
Interval between hello packets.
+
+
+ retransmit_interval + +
+ integer +
+
+ +
Interval between retransmitting lost link state advertisements.
+
+
+ transmit_delay + +
+ integer +
+
+ +
Link state transmit delay.
+
+
+ auto_cost + +
+ dictionary +
+
+ +
Calculate OSPFv2 interface cost according to bandwidth.
+
+
+ reference_bandwidth + +
+ integer +
+
+ +
Reference bandwidth cost in Mbits/sec.
+
+
+ default_information + +
+ dictionary +
+
+ +
Control distribution of default information.
+
+
+ originate + +
+ dictionary +
+
+ +
Distribute a default route.
+
+
+ always + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Always advertise default route.
+
+
+ metric + +
+ integer +
+
+ +
OSPFv2 default metric.
+
+
+ metric_type + +
+ integer +
+
+ +
OSPFv2 Metric types for default routes.
+
+
+ route_map + +
+ string +
+
+ +
Route map references.
+
+
+ default_metric + +
+ integer +
+
+ +
Metric of redistributed routes
+
+
+ distance + +
+ dictionary +
+
+ +
Administrative distance.
+
+
+ global + +
+ integer +
+
+ +
Global OSPFv2 administrative distance.
+
+
+ ospf + +
+ dictionary +
+
+ +
OSPFv2 administrative distance.
+
+
+ external + +
+ integer +
+
+ +
Distance for external routes.
+
+
+ inter_area + +
+ integer +
+
+ +
Distance for inter-area routes.
+
+
+ intra_area + +
+ integer +
+
+ +
Distance for intra-area routes.
+
+
+ log_adjacency_changes + +
+ string +
+
+
    Choices: +
  • detail
  • +
+
+
Log changes in adjacency state.
+
+
+ max_metric + +
+ dictionary +
+
+ +
OSPFv2 maximum/infinite-distance metric.
+
+
+ router_lsa + +
+ dictionary +
+
+ +
Advertise own Router-LSA with infinite distance (stub router).
+
+
+ administrative + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Administratively apply, for an indefinite period.
+
+
+ on_shutdown + +
+ integer +
+
+ +
Time to advertise self as stub-router.
+
+
+ on_startup + +
+ integer +
+
+ +
Time to advertise self as stub-router
+
+
+ mpls_te + +
+ dictionary +
+
+ +
MultiProtocol Label Switching-Traffic Engineering (MPLS-TE) parameters.
+
+
+ enabled + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable MPLS-TE functionality.
+
+
+ router_address + +
+ string +
+
+ +
Stable IP address of the advertising router.
+
+
+ neighbor + +
+ list + / elements=dictionary +
+
+ +
Neighbor IP address.
+
+
+ neighbor_id + +
+ string +
+
+ +
Identity (number/IP address) of neighbor.
+
+
+ poll_interval + +
+ integer +
+
+ +
Seconds between dead neighbor polling interval.
+
+
+ priority + +
+ integer +
+
+ +
Neighbor priority.
+
+
+ parameters + +
+ dictionary +
+
+ +
OSPFv2 specific parameters.
+
+
+ abr_type + +
+ string +
+
+
    Choices: +
  • cisco
  • +
  • ibm
  • +
  • shortcut
  • +
  • standard
  • +
+
+
OSPFv2 ABR Type.
+
+
+ opaque_lsa + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable the Opaque-LSA capability (rfc2370).
+
+
+ rfc1583_compatibility + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable rfc1583 criteria for handling AS external routes.
+
+
+ router_id + +
+ string +
+
+ +
Override the default router identifier.
+
+
+ passive_interface + +
+ list + / elements=string +
+
+ +
Suppress routing updates on an interface.
+
+
+ passive_interface_exclude + +
+ list + / elements=string +
+
+ +
Interface to exclude when using passive-interface default.
+
+
+ redistribute + +
+ list + / elements=dictionary +
+
+ +
Redistribute information from another routing protocol.
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistribution routes.
+
+
+ metric_type + +
+ integer +
+
+ +
OSPFv2 Metric types.
+
+
+ route_map + +
+ string +
+
+ +
Route map references.
+
+
+ route_type + +
+ string +
+
+
    Choices: +
  • bgp
  • +
  • connected
  • +
  • kernel
  • +
  • rip
  • +
  • static
  • +
+
+
Route type to redistribute.
+
+
+ route_map + +
+ list + / elements=string +
+
+ +
Filter routes installed in local route map.
+
+
+ timers + +
+ dictionary +
+
+ +
Adjust routing timers.
+
+
+ refresh + +
+ dictionary +
+
+ +
Adjust refresh parameters.
+
+
+ timers + +
+ integer +
+
+ +
refresh timer.
+
+
+ throttle + +
+ dictionary +
+
+ +
Throttling adaptive timers.
+
+
+ spf + +
+ dictionary +
+
+ +
OSPFv2 SPF timers.
+
+
+ delay + +
+ integer +
+
+ +
Delay (msec) from first change received till SPF calculation.
+
+
+ initial_holdtime + +
+ integer +
+
+ +
Initial hold time(msec) between consecutive SPF calculations.
+
+
+ max_holdtime + +
+ integer +
+
+ +
maximum hold time (sec).
+
- orf + ospfv3
- string + dictionary
-
    Choices: -
  • send
  • -
  • receive
  • -
-
Advertise ORF capability to this neighbor.
+
OSPFv3 configuration
+
- default_originate + areas
- string + list + / elements=dictionary
-
Send default route to this neighbor
+
OSPFv3 area.
+
- distribute_list + area_id
- list - / elements=dictionary + string
-
Access-list to filter route updates to/from this neighbor.
+
OSPFv3 Area name/identity.
+
- acl + export_list
- integer + string
-
Access-list number.
+
Name of export-list.
+
- action + import_list
string
-
    Choices: -
  • export
  • -
  • import
  • -
-
Access-list to filter outgoing/incoming route updates to this neighbor
+
Name of import-list.
+
- filter_list + interface
list / elements=dictionary
-
As-path-list to filter route updates to/from this neighbor.
+
Enable OSPVv3 on an interface for this area.
+

aliases: interfaces
+
- action + name
string
-
    Choices: -
  • export
  • -
  • import
  • -
-
filter outgoing/incoming route updates
+
Interface name.
+
- path_list + range
- string + list + / elements=dictionary
-
As-path-list to filter
+
Summarize routes matching prefix (border routers only).
+
- maximum_prefix + address
- integer + string
-
Maximum number of prefixes to accept from this neighbor nexthop-self Nexthop for routes sent to this neighbor to be the local router.
+
border router IPv4 address.
+
- nexthop_local + advertise
boolean
    Choices:
  • no
  • yes
-
Nexthop attributes.
+
Advertise this range.
+
- nexthop_self + not_advertise
boolean
    Choices:
  • no
  • yes
-
Nexthop for routes sent to this neighbor to be the local router.
+
Don't advertise this range.
+
+ parameters + +
+ dictionary +
+
+ +
OSPFv3 specific parameters.
+
+
- peer_group + router_id
string
-
IPv4 peer group for this peer
+
Override the default router identifier.
+
- prefix_list + redistribute
list / elements=dictionary
-
Prefix-list to filter route updates to/from this neighbor.
+
Redistribute information from another routing protocol.
+
- action + route_map
string
-
    Choices: -
  • export
  • -
  • import
  • -
-
filter outgoing/incoming route updates
+
Route map references.
+
- prefix_list + route_type
string
+
    Choices: +
  • bgp
  • +
  • connected
  • +
  • kernel
  • +
  • ripng
  • +
  • static
  • +
-
Prefix-list to filter
+
Route type to redistribute.
+
- remove_private_as + static
- boolean + list + / elements=dictionary
-
    Choices: -
  • no
  • -
  • yes
  • -
-
Remove private AS numbers from AS path in outbound route updates
+
Static routes configuration
+
- route_map + address_families
list / elements=dictionary
-
Route-map to filter route updates to/from this neighbor.
+
A dictionary specifying the address family to which the static route(s) belong.
+
- action + afi
string + / required
    Choices: -
  • export
  • -
  • import
  • +
  • ipv4
  • +
  • ipv6
-
filter outgoing/incoming route updates
+
Specifies the type of route.
+
- route_map + routes
- string + list + / elements=dictionary
-
route-map to filter
+
A dictionary that specify the static route configurations.
+
- route_reflector_client + blackhole_config
- boolean + dictionary
-
    Choices: -
  • no
  • -
  • yes
  • -
-
Neighbor as a route reflector client
+
Configured to silently discard packets.
- route_server_client + distance
- boolean + integer
-
    Choices: -
  • no
  • -
  • yes
  • -
-
Neighbor is route server client
+
Distance for the route.
- soft_reconfiguration + type
- boolean + string
-
    Choices: -
  • no
  • -
  • yes
  • -
-
Soft reconfiguration for neighbor
+
This is to configure only blackhole.
+
- unsupress_map + dest
string + / required
-
Route-map to selectively unsuppress suppressed routes
+
An IPv4/v6 address in CIDR notation that specifies the destination network for the static route.
+
- weight + next_hops
- integer + list + / elements=dictionary
-
Default weight for routes from this neighbor
+
Next hops to the specified destination.
+
- neighbor_address + admin_distance
- string + integer
-
BGP neighbor address (v4/v6).
+
Distance value for the route.
+
- ospf + enabled
- dictionary - / elements=dictionary + boolean
+
    Choices: +
  • no
  • +
  • yes
  • +
-
OSPFv2 configuration
+
Disable IPv4/v6 next-hop static route.
+
- ospfv3 + forward_router_address
- dictionary - / elements=dictionary + string
-
OSPFv3 configuration
+
The IP address of the next hop that can be used to reach the destination network.
+
- static + interface
- dictionary - / elements=dictionary + string
-
Static routes configuration
+
Name of the outgoing interface.
+
table_id
integer
Routing table associated with this instance
+
vni
integer
Virtual Network Identifier
+
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 | match "set vrf".
The states replaced and overridden have identical behaviour for this module.
The state parsed reads the configuration from show configuration commands | match "set vrf" 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.4.2 and 1.5-stream-2025-Q1 - This module works with connection ``network_cli``. Examples -------- .. code-block:: yaml # # ------------------- # # 1. Using merged # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue disable # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # vyos@vyos:~$ # # Task # # ------------- # - name: Merge provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # instances: # - name: "vrf-green" # description: "green-vrf" # table_id: 110 # vni: 1010 # Task output: # ------------- # "after": { # "bind_to_all": false, # "instances": [ # { # "description": "blue-vrf", # "disable": true, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "description": "green-vrf", # "disable": false, # "name": "vrf-green", # "table_id": 110, # "vni": 1010 # } # ] # }, # "before": { # "bind_to_all": false, # "instances": [ # { # "description": "blue-vrf", # "disable": true, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # } # ] # }, # "changed": true, # "commands": [ # "set vrf name vrf-green table 110", # "set vrf name vrf-green vni 1010", # "set vrf name vrf-green description green-vrf" # ] # After state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue disable # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-green description 'green-vrf' # set vrf name vrf-green table '110' # set vrf name vrf-green vni '1010' # vyos@vyos:~$ # # ------------------- # # 2. Using replaced # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # Task # # ------------- # - name: Merge provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # bind_to_all: true # instances: # - name: "vrf-blue" # description: "blue-vrf" # disable: false # table_id: 100 # vni: 1002 # - name: "vrf-red" # description: "red-vrf" # disable: false # table_id: 101 # vni: 1001 # address_family: # - afi: "ipv4" # disable_forwarding: false # route_maps: # - rm_name: "rm1" # protocol: "kernel" # - rm_name: "rm1" # protocol: "ospf" # - afi: "ipv6" # nht_no_resolve_via_default: true # state: replaced # # Task output: # # ------------- # "after": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1002 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": false, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "ospf", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # }, # { # "afi": "ipv6", # "disable_forwarding": false, # "nht_no_resolve_via_default": true # } # ], # "description": "red-vrf", # "disable": false, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "before": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "changed": true, # "commands": [ # "set vrf name vrf-blue vni 1002", # "delete vrf name vrf-red disable", # "set vrf name vrf-red ip protocol ospf route-map rm1", # "delete vrf name vrf-red ip disable-forwarding", # "set vrf name vrf-red ipv6 nht no-resolve-via-default" # ] # After state: # # ------------- # vyos@vyos:~$ # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1002' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol ospf route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red ipv6 nht no-resolve-via-default # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # ------------------- # # 3. Using overridden # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # Task # ------------- # - name: Overridden provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # bind_to_all: true # instances: # - name: "vrf-blue" # description: "blue-vrf" # disable: true # table_id: 100 # vni: 1000 # - name: "vrf-red" # description: "red-vrf" # disable: true # table_id: 101 # vni: 1001 # address_family: # - afi: "ipv4" # disable_forwarding: false # route_maps: # - rm_name: "rm1" # protocol: "kernel" # - rm_name: "rm1" # protocol: "rip" # - afi: "ipv6" # nht_no_resolve_via_default: false # state: overridden # # Task output: # # ------------- # "after": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": true, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": false, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "before": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "changed": true, # "commands": [ # "delete vrf name vrf-blue", # "commit", # "delete vrf name vrf-red", # "commit", # "set vrf name vrf-blue table 100", # "set vrf name vrf-blue vni 1000", # "set vrf name vrf-blue description blue-vrf", # "set vrf name vrf-blue disable", # "set vrf name vrf-red table 101", # "set vrf name vrf-red vni 1001", # "set vrf name vrf-red description red-vrf", # "set vrf name vrf-red disable", # "set vrf name vrf-red ip protocol kernel route-map rm1", # "set vrf name vrf-red ip protocol rip route-map rm1" # ] # After state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue disable # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # 4. Using gathered # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # Task # ------------- # - name: Gather provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # state: gathered # # Task output: # # ------------- # "gathered": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # } # After state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # ------------------- # # 5. Using deleted # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # Task # # ------------- # - name: Replace provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # bind_to_all: false # instances: # - name: "vrf-blue" # state: deleted # # Task output: # # ------------- # "after": { # "bind_to_all": false, # "instances": [ # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "before": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "changed": true, # "commands": [ # "delete vrf bind-to-all", # "delete vrf name vrf-blue" # ] # After state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # ------------------- # # 6. Using rendered # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # Task # ------------- # - name: Render provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # bind_to_all: true # instances: # - name: "vrf-green" # description: "green-vrf" # disabled: true # table_id: 105 # vni: 1000 # - name: "vrf-amber" # description: "amber-vrf" # disable: false # table_id: 111 # vni: 1001 # address_family: # - afi: "ipv4" # disable_forwarding: true # route_maps: # - rm_name: "rm1" # protocol: "kernel" # - rm_name: "rm1" # protocol: "ospf" # - afi: "ipv6" # nht_no_resolve_via_default: false # state: rendered # # Task output: # # ------------- # "rendered": [ # "set vrf bind-to-all", # "set vrf name vrf-green table 105", # "set vrf name vrf-green vni 1000", # "set vrf name vrf-green description green-vrf", # "set vrf name vrf-green disable", # "set vrf name vrf-amber table 111", # "set vrf name vrf-amber vni 1001", # "set vrf name vrf-amber description amber-vrf", # "set vrf name vrf-amber ip protocol kernel route-map rm1", # "set vrf name vrf-amber ip protocol ospf route-map rm1", # "set vrf name vrf-amber ip disable-forwarding" # ] # # ------------------- # # 7. Using parsed # # ------------------- # # vrf_parsed.cfg: # # ------------- # set vrf bind-to-all # set vrf name vrf1 description 'red' # set vrf name vrf1 disable # set vrf name vrf1 table 101 # set vrf name vrf1 vni 501 # set vrf name vrf2 description 'blah2' # set vrf name vrf2 disable # set vrf name vrf2 table 102 # set vrf name vrf2 vni 102 # set vrf name vrf1 ip disable-forwarding # set vrf name vrf1 ip nht no-resolve-via-default # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol ospf route-map 'rm1' # set vrf name vrf-red ipv6 nht no-resolve-via-default # Task: # ------------- # - name: Parse provided configuration with device configuration # vyos.vyos.vyos_vrf: # running_config: "{{ lookup('file', './vrf_parsed.cfg') }}" # state: parsed # # Task output: # # ------------- # "parsed": { # "bind_to_all": true, # "instances": [ # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": true # } # ], # "description": "red", # "disable": true, # "name": "vrf1" # }, # { # "description": "blah2", # "disable": true, # "name": "vrf2" # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": false, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "ospf", # "rm_name": "rm1" # } # ] # }, # { # "afi": "ipv6", # "disable_forwarding": false, # "nht_no_resolve_via_default": true # } # ], # "disable": false, # "name": "vrf-red" # } # ] # } Return Values ------------- Common return values are documented `here `_, the following are the fields unique to this module: .. raw:: html
Key Returned Description
after
dictionary
when changed
The resulting configuration after module execution.

Sample:
This output will always be in the same format as the module argspec.
before
dictionary
when state is merged, replaced, overridden, deleted or purged
The configuration prior to the module execution.

Sample:
This output will always be in the same format as the module argspec.
commands
list
when state is merged, replaced, overridden, deleted or purged
The set of commands pushed to the remote device.

Sample:
['set system ntp server server1 dynamic', 'set system ntp server server1 prefer', 'set system ntp server server2 noselect', 'set system ntp server server2 preempt', 'set system ntp server server_add preempt']
gathered
list
when state is gathered
Facts about the network resource gathered from the remote device as structured data.

Sample:
This output will always be in the same format as the module argspec.
parsed
list
when state is parsed
The device native config provided in running_config option parsed into structured data as per module argspec.

Sample:
This output will always be in the same format as the module argspec.
rendered
list
when state is rendered
The provided configuration in the task rendered in device-native format (offline).

Sample:
['set system ntp server server1 dynamic', 'set system ntp server server1 prefer', 'set system ntp server server2 noselect', 'set system ntp server server2 preempt', 'set system ntp server server_add preempt']


Status ------ Authors ~~~~~~~ - Evgeny Molotkov (@omnom62) diff --git a/plugins/module_utils/network/vyos/argspec/vrf/vrf.py b/plugins/module_utils/network/vyos/argspec/vrf/vrf.py index 7252adaa..5b46e375 100644 --- a/plugins/module_utils/network/vyos/argspec/vrf/vrf.py +++ b/plugins/module_utils/network/vyos/argspec/vrf/vrf.py @@ -1,132 +1,133 @@ # -*- coding: utf-8 -*- # Copyright 2024 Red Hat # GNU General Public License v3.0+ # (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import absolute_import, division, print_function __metaclass__ = type ############################################# # WARNING # ############################################# # # This file is auto generated by the # cli_rm_builder. # # Manually editing this file is not advised. # # To update the argspec make the desired changes # in the module docstring and re-run # cli_rm_builder. # ############################################# """ The arg spec for the vyos_vrf module """ from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.bgp_global.bgp_global import ( Bgp_globalArgs, ) from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.ospfv2.ospfv2 import ( Ospfv2Args, ) from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.ospfv3.ospfv3 import ( Ospfv3Args, ) from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.static_routes.static_routes import ( Static_routesArgs, ) class VrfArgs(object): # pylint: disable=R0903 """The arg spec for the vyos_vrf module""" bgp_argument_spec = Bgp_globalArgs.argument_spec["config"] static_routes_argument_spec = Static_routesArgs.argument_spec["config"] ospfv2_argument_spec = Ospfv2Args.argument_spec["config"] ospfv3_argument_spec = Ospfv3Args.argument_spec["config"] argument_spec = { "config": { "type": "dict", "options": { "bind_to_all": {"type": "bool", "default": False}, "instances": { "type": "list", "elements": "dict", "options": { "name": {"required": True, "type": "str"}, "description": {"type": "str"}, "disable": { "aliases": ["disabled"], "default": False, "type": "bool", }, "table_id": {"type": "int"}, "vni": {"type": "int"}, "address_family": { "type": "list", "elements": "dict", "options": { "afi": { "type": "str", "choices": ["ipv4", "ipv6"], }, "disable_forwarding": {"type": "bool", "default": False}, "nht_no_resolve_via_default": {"type": "bool", "default": False}, "route_maps": { "type": "list", "elements": "dict", "options": { "rm_name": {"type": "str", "required": True}, "protocol": { "type": "str", "choices": [ "any", "babel", "bgp", "connected", "eigrp", "isis", "kernel", "ospf", "rip", "static", "table", ], }, }, }, }, }, "protocols": { - "type": "dict", + "type": "list", + "elements": "dict", "options": { "bgp": bgp_argument_spec, "ospf": ospfv2_argument_spec, "ospfv3": ospfv3_argument_spec, "static": static_routes_argument_spec, }, }, }, }, }, }, "state": { "type": "str", "choices": [ "deleted", "merged", "replaced", "overridden", "gathered", "rendered", "parsed", ], "default": "merged", }, "running_config": {"type": "str"}, } # pylint: disable=C0301 diff --git a/plugins/modules/vyos_vrf.py b/plugins/modules/vyos_vrf.py index 6531c7bb..0acd13ef 100644 --- a/plugins/modules/vyos_vrf.py +++ b/plugins/modules/vyos_vrf.py @@ -1,1153 +1,1604 @@ #!/usr/bin/python # -*- coding: utf-8 -*- # Copyright 2024 Red Hat # GNU General Public License v3.0+ # (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) """ The module file for vyos_vrf """ from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = """ module: vyos_vrf version_added: 1.0.0 short_description: VRF resource module description: - This module manages vrf configuration on devices running Vyos author: - Evgeny Molotkov (@omnom62) notes: - Tested against vyos 1.4.2 and 1.5-stream-2025-Q1 - This module works with connection C(network_cli). options: config: description: List of vrf configuration. type: dict suboptions: bind_to_all: default: false description: Enable binding services to all VRFs type: bool instances: description: Virtual Routing and Forwarding instance type: list elements: dict suboptions: name: description: VRF instance name required: true type: str description: description: Description type: str disable: default: false description: Administratively disable interface type: bool aliases: ['disabled'] table_id: description: Routing table associated with this instance type: int vni: description: Virtual Network Identifier type: int address_family: type: list elements: dict description: Address family configuration suboptions: afi: description: Address family identifier type: str choices: ['ipv4', 'ipv6'] disable_forwarding: default: False description: Disable forwarding for this address family type: bool nht_no_resolve_via_default: default: False description: Disable next-hop resolution via default route type: bool route_maps: description: List of route maps for this address family type: list elements: dict suboptions: rm_name: description: Route map name type: str required: true protocol: description: Protocol to which the route map applies type: str choices: - any - babel - bgp - connected - eigrp - isis - kernel - ospf - rip - static - table protocols: - type: dict + type: list elements: dict description: Protocol configuration suboptions: bgp: type: dict description: BGP configuration suboptions: as_number: description: - - AS number + - AS number. type: int - address_family: - description: BGP address-family parameters. + #maximum_paths: --> moved to address-family before 1.3 + neighbor: + description: BGP neighbor type: list elements: dict suboptions: - afi: - description: BGP address family settings. + address: + description: + - BGP neighbor address (v4/v6). type: str - choices: ['ipv4', 'ipv6'] - aggregate_address: + advertisement_interval: description: - - BGP aggregate network. - type: list - elements: dict + - Minimum interval for sending routing updates. + type: int + capability: + description: + - Advertise capabilities to this neighbor. + type: dict suboptions: - prefix: - description: BGP aggregate network. - type: str - as_set: - description: Generate AS-set path information for this aggregate address. + dynamic: + description: + - Advertise dynamic capability to this neighbor. type: bool - summary_only: - description: Announce the aggregate summary network only. + extended_nexthop: + description: + - Advertise extended nexthop capability to this neighbor. type: bool - networks: - description: BGP network + default_originate: + description: + - Send default route to this neighbor + type: str + description: + description: + - Description of the neighbor + type: str + disable_capability_negotiation: + description: + - Disbale capability negotiation with the neighbor + type: bool + disable_connected_check: + description: + - Disable check to see if EBGP peer's address is a connected route. + type: bool + disable_send_community: + description: + - Disable sending community attributes to this neighbor. + type: str + choices: ['extended', 'standard'] + ebgp_multihop: + description: + - Allow this EBGP neighbor to not be on a directly connected network. Specify + the number hops. + type: int + local_as: + description: local as number not to be prepended to updates from EBGP peers + type: int + override_capability: + description: Ignore capability negotiation with specified neighbor. + type: bool + passive: + description: Do not initiate a session with this neighbor + type: bool + password: + description: BGP MD5 password + type: str + peer_group_name: + description: IPv4 peer group for this peer + type: str + peer_group: + description: True if all the configs under this neighbor key is for peer group template. + type: bool + port: + description: Neighbor's BGP port + type: int + remote_as: + description: Neighbor BGP AS number + type: int + shutdown: + description: Administratively shut down neighbor + type: bool + solo: # <-- added in 1.3 + description: Do not send back prefixes learned from the neighbor + type: bool + strict_capability_match: + description: Enable strict capability negotiation + type: bool + timers: + description: Neighbor timers + type: dict + suboptions: + connect: + description: BGP connect timer for this neighbor. + type: int + holdtime: + description: BGP hold timer for this neighbor + type: int + keepalive: + description: BGP keepalive interval for this neighbor + type: int + ttl_security: + description: Number of the maximum number of hops to the BGP peer + type: int + update_source: + description: Source IP of routing updates + type: str + timers: + description: BGP protocol timers + type: dict + suboptions: + keepalive: + description: Keepalive interval + type: int + holdtime: + description: Hold time interval + type: int + bgp_params: + description: BGP parameters + type: dict + suboptions: + always_compare_med: + description: Always compare MEDs from different neighbors + type: bool + bestpath: + description: Default bestpath selection mechanism + type: dict + suboptions: + as_path: + description: AS-path attribute comparison parameters + type: str + choices: ['confed', 'ignore'] + compare_routerid: + description: Compare the router-id for identical EBGP paths + type: bool + med: + description: MED attribute comparison parameters + type: str + choices: ['confed', 'missing-as-worst'] + cluster_id: + description: Route-reflector cluster-id + type: str + confederation: + description: AS confederation parameters type: list elements: dict suboptions: - prefix: - description: BGP network address - type: str - path_limit: - description: AS path hop count limit + identifier: + description: Confederation AS identifier + type: int + peers: + description: Peer ASs in the BGP confederation + type: int + dampening: + description: Enable route-flap dampening + type: dict + suboptions: + half_life: + description: Half-life penalty in seconds + type: int + max_suppress_time: + description: Maximum duration to suppress a stable route + type: int + re_use: + description: Time to start reusing a route type: int - backdoor: - description: Network as a backdoor route. + start_suppress_time: + description: When to start suppressing a route + type: int + default: + description: BGP defaults + type: dict + suboptions: + local_pref: + description: Default local preference + type: int + no_ipv4_unicast: + description: | + Deactivate IPv4 unicast for a peer by default + Deprecated: Unavailable after 1.4 type: bool - route_map: - description: Route-map to modify route attributes - type: str - redistribute: - description: Redistribute routes from other protocols into BGP + deterministic_med: + description: Compare MEDs between different peers in the same AS + type: bool + disable_network_import_check: + description: Disable IGP route check for network statements + type: bool + distance: + description: Administrative distances for BGP routes type: list elements: dict suboptions: - protocol: - description: types of routes to be redistributed. - type: str - choices: ['connected', 'kernel', 'ospf', 'ospfv3', 'rip', 'ripng', 'static'] - table: - description: Redistribute non-main Kernel Routing Table. + type: + description: Type of route type: str - route_map: - description: Route map to filter redistributed routes - type: str - metric: - description: Metric for redistributed routes. + choices: ['external', 'internal', 'local'] + value: + description: distance type: int - neighbors: - description: BGP neighbor + prefix: + description: Administrative distance for a specific BGP prefix + type: int + enforce_first_as: + description: Require first AS in the path to match peer's AS + type: bool + graceful_restart: + description: Maximum time to hold onto restarting peer's stale paths + type: int + log_neighbor_changes: + description: Log neighbor up/down changes and reset reason + type: bool + no_client_to_client_reflection: + description: Disable client to client route reflection + type: bool + no_fast_external_failover: + description: Disable immediate session reset if peer's connected link goes down + type: bool + router_id: + description: BGP router-id + type: str + scan_time: + description: BGP route scanner interval + type: int + ospf: + type: dict + description: OSPFv2 configuration + suboptions: + areas: + description: OSPFv2 area. type: list elements: dict suboptions: - neighbor_address: - description: BGP neighbor address (v4/v6). + area_id: + description: OSPFv2 area identity. type: str - address_family: - description: address family. - type: list - elements: dict + area_type: + description: Area type. + type: dict suboptions: - afi: - description: BGP neighbor parameters. - type: str - choices: ['ipv4', 'ipv6'] - allowas_in: - description: Number of occurrences of AS number. - type: int - as_override: - description: AS for routes sent to this neighbor to be the local AS. + normal: + description: Normal OSPFv2 area. type: bool - attribute_unchanged: - description: BGP attributes are sent unchanged. - type: dict - suboptions: - as_path: - description: as_path attribute - type: bool - med: - description: med attribute - type: bool - next_hop: - description: next_hop attribute - type: bool - capability: - description: Advertise capabilities to this neighbor. + nssa: + description: NSSA OSPFv2 area. type: dict suboptions: - dynamic: - description: Advertise dynamic capability to this neighbor. + set: + description: Enabling NSSA. + type: bool + default_cost: + description: Summary-default cost of NSSA area. + type: int + no_summary: + description: Do not inject inter-area routes into stub. type: bool - orf: - description: Advertise ORF capability to this neighbor. + translate: + description: NSSA-ABR. type: str - choices: ['send', 'receive'] - default_originate: - description: Send default route to this neighbor - type: str - distribute_list: - description: Access-list to filter route updates to/from this neighbor. - type: list - elements: dict + choices: [always, candidate, never] + stub: + description: Stub OSPFv2 area. + type: dict suboptions: - action: - description: Access-list to filter outgoing/incoming route updates to this neighbor - type: str - choices: ['export', 'import'] - acl: - description: Access-list number. + set: + description: Enabling stub. + type: bool + default_cost: + description: Summary-default cost of stub area. type: int - filter_list: - description: As-path-list to filter route updates to/from this neighbor. - type: list - elements: dict - suboptions: - action: - description: filter outgoing/incoming route updates - type: str - choices: ['export', 'import'] - path_list: - description: As-path-list to filter - type: str - maximum_prefix: - description: Maximum number of prefixes to accept from this neighbor - nexthop-self Nexthop for routes sent to this neighbor to be the local router. + no_summary: + description: Do not inject inter-area routes into stub. + type: bool + authentication: + description: OSPFv2 area authentication type. + type: str + choices: [plaintext-password, md5] + network: + description: OSPFv2 network. + type: list + elements: dict + suboptions: + address: + required: true + description: OSPFv2 IPv4 network address. + type: str + range: + description: Summarize routes matching prefix (border routers only). + type: list + elements: dict + suboptions: + address: + description: border router IPv4 address. + type: str + cost: + description: Metric for this range. type: int - nexthop_local: - description: Nexthop attributes. - type: bool - nexthop_self: - description: Nexthop for routes sent to this neighbor to be the local router. + not_advertise: + description: Don't advertise this range. type: bool - peer_group: - description: IPv4 peer group for this peer + substitute: + description: Announce area range (IPv4 address) as another prefix. type: str - prefix_list: - description: Prefix-list to filter route updates to/from this neighbor. - type: list - elements: dict - suboptions: - action: - description: filter outgoing/incoming route updates - type: str - choices: ['export', 'import'] - prefix_list: - description: Prefix-list to filter - type: str - remove_private_as: - description: Remove private AS numbers from AS path in outbound route updates - type: bool - route_map: - description: Route-map to filter route updates to/from this neighbor. - type: list - elements: dict + shortcut: + description: Area's shortcut mode. + type: str + choices: [default, disable, enable] + virtual_link: + description: Virtual link address. + type: list + elements: dict + suboptions: + address: + description: virtual link address. + type: str + authentication: + description: OSPFv2 area authentication type. + type: dict suboptions: - action: - description: filter outgoing/incoming route updates - type: str - choices: ['export', 'import'] - route_map: - description: route-map to filter + md5: + description: MD5 key id based authentication. + type: list + elements: dict + suboptions: + key_id: + description: MD5 key id. + type: int + md5_key: + description: MD5 key. + type: str + plaintext_password: + description: Plain text password. type: str - route_reflector_client: - description: Neighbor as a route reflector client - type: bool - route_server_client: - description: Neighbor is route server client + dead_interval: + description: Interval after which a neighbor is declared dead. + type: int + hello_interval: + description: Interval between hello packets. + type: int + retransmit_interval: + description: Interval between retransmitting lost link state advertisements. + type: int + transmit_delay: + description: Link state transmit delay. + type: int + log_adjacency_changes: + description: Log changes in adjacency state. + type: str + choices: [detail] + max_metric: + description: OSPFv2 maximum/infinite-distance metric. + type: dict + suboptions: + router_lsa: + description: Advertise own Router-LSA with infinite distance (stub router). + type: dict + suboptions: + administrative: + description: Administratively apply, for an indefinite period. type: bool - soft_reconfiguration: - description: Soft reconfiguration for neighbor + on_shutdown: + description: Time to advertise self as stub-router. + type: int + on_startup: + description: Time to advertise self as stub-router + type: int + auto_cost: + description: Calculate OSPFv2 interface cost according to bandwidth. + type: dict + suboptions: + reference_bandwidth: + description: Reference bandwidth cost in Mbits/sec. + type: int + default_information: + description: Control distribution of default information. + type: dict + suboptions: + originate: + description: Distribute a default route. + type: dict + suboptions: + always: + description: Always advertise default route. type: bool - unsupress_map: - description: Route-map to selectively unsuppress suppressed routes + metric: + description: OSPFv2 default metric. + type: int + metric_type: + description: OSPFv2 Metric types for default routes. + type: int + route_map: + description: Route map references. type: str - weight: - description: Default weight for routes from this neighbor + default_metric: + description: Metric of redistributed routes + type: int + distance: + description: Administrative distance. + type: dict + suboptions: + global: + description: Global OSPFv2 administrative distance. + type: int + ospf: + description: OSPFv2 administrative distance. + type: dict + suboptions: + external: + description: Distance for external routes. type: int - ospf: - type: dict - description: OSPFv2 configuration - elements: dict + inter_area: + description: Distance for inter-area routes. + type: int + intra_area: + description: Distance for intra-area routes. + type: int + mpls_te: + description: MultiProtocol Label Switching-Traffic Engineering (MPLS-TE) parameters. + type: dict + suboptions: + enabled: + description: Enable MPLS-TE functionality. + type: bool + router_address: + description: Stable IP address of the advertising router. + type: str + neighbor: + description: Neighbor IP address. + type: list + elements: dict + suboptions: + neighbor_id: + description: Identity (number/IP address) of neighbor. + type: str + poll_interval: + description: Seconds between dead neighbor polling interval. + type: int + priority: + description: Neighbor priority. + type: int + parameters: + description: OSPFv2 specific parameters. + type: dict + suboptions: + abr_type: + description: OSPFv2 ABR Type. + type: str + choices: [cisco, ibm, shortcut, standard] + opaque_lsa: + description: Enable the Opaque-LSA capability (rfc2370). + type: bool + rfc1583_compatibility: + description: Enable rfc1583 criteria for handling AS external routes. + type: bool + router_id: + description: Override the default router identifier. + type: str + passive_interface: + description: Suppress routing updates on an interface. + type: list + elements: str + passive_interface_exclude: + description: Interface to exclude when using passive-interface default. + type: list + elements: str + redistribute: + description: Redistribute information from another routing protocol. + type: list + elements: dict + suboptions: + route_type: + description: Route type to redistribute. + type: str + choices: [bgp, connected, kernel, rip, static] + metric: + description: Metric for redistribution routes. + type: int + metric_type: + description: OSPFv2 Metric types. + type: int + route_map: + description: Route map references. + type: str + route_map: + description: Filter routes installed in local route map. + type: list + elements: str + timers: + description: Adjust routing timers. + type: dict + suboptions: + refresh: + description: Adjust refresh parameters. + type: dict + suboptions: + timers: + description: refresh timer. + type: int + throttle: + description: Throttling adaptive timers. + type: dict + suboptions: + spf: + description: OSPFv2 SPF timers. + type: dict + suboptions: + delay: + description: Delay (msec) from first change received till SPF + calculation. + type: int + initial_holdtime: + description: Initial hold time(msec) between consecutive SPF calculations. + type: int + max_holdtime: + description: maximum hold time (sec). + type: int ospfv3: type: dict description: OSPFv3 configuration - elements: dict + suboptions: + areas: + description: OSPFv3 area. + type: list + elements: dict + suboptions: + area_id: + description: OSPFv3 Area name/identity. + type: str + export_list: + description: Name of export-list. + type: str + import_list: + description: Name of import-list. + type: str + interface: + description: Enable OSPVv3 on an interface for this area. + aliases: ['interfaces'] + type: list + elements: dict + suboptions: + name: + description: Interface name. + type: str + range: + description: Summarize routes matching prefix (border routers only). + type: list + elements: dict + suboptions: + address: + description: border router IPv4 address. + type: str + advertise: + description: Advertise this range. + type: bool + not_advertise: + description: Don't advertise this range. + type: bool + parameters: + description: OSPFv3 specific parameters. + type: dict + suboptions: + router_id: + description: Override the default router identifier. + type: str + redistribute: + description: Redistribute information from another routing protocol. + type: list + elements: dict + suboptions: + route_type: + description: Route type to redistribute. + type: str + choices: + - bgp + - connected + - kernel + - ripng + - static + route_map: + description: Route map references. + type: str static: - type: dict + type: list description: Static routes configuration elements: dict + suboptions: + address_families: + description: A dictionary specifying the address family to which the static + route(s) belong. + type: list + elements: dict + suboptions: + afi: + description: + - Specifies the type of route. + type: str + choices: + - ipv4 + - ipv6 + required: true + routes: + description: A dictionary that specify the static route configurations. + type: list + elements: dict + suboptions: + dest: + description: + - An IPv4/v6 address in CIDR notation that specifies the destination + network for the static route. + type: str + required: true + blackhole_config: + description: + - Configured to silently discard packets. + type: dict + suboptions: + type: + description: + - This is to configure only blackhole. + type: str + distance: + description: + - Distance for the route. + type: int + next_hops: + description: + - Next hops to the specified destination. + type: list + elements: dict + suboptions: + forward_router_address: + description: + - The IP address of the next hop that can be used to reach the + destination network. + type: str + enabled: + description: + - Disable IPv4/v6 next-hop static route. + type: bool + admin_distance: + description: + - Distance value for the route. + type: int + interface: + description: + - Name of the outgoing interface. + type: str running_config: description: - This option is used only with state I(parsed). - The value of this option should be the output received from the VYOS device by executing the command B(show configuration commands | match "set vrf"). - The states I(replaced) and I(overridden) have identical behaviour for this module. - The state I(parsed) reads the configuration from C(show configuration commands | match "set vrf") option and transforms it into Ansible structured data as per the resource module's argspec and the value is then returned in the I(parsed) key within the result. type: str state: description: - The state the configuration should be left in. type: str choices: - deleted - merged - overridden - replaced - gathered - rendered - parsed default: merged """ EXAMPLES = """ # # ------------------- # # 1. Using merged # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue disable # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # vyos@vyos:~$ # # Task # # ------------- # - name: Merge provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # instances: # - name: "vrf-green" # description: "green-vrf" # table_id: 110 # vni: 1010 # Task output: # ------------- # "after": { # "bind_to_all": false, # "instances": [ # { # "description": "blue-vrf", # "disable": true, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "description": "green-vrf", # "disable": false, # "name": "vrf-green", # "table_id": 110, # "vni": 1010 # } # ] # }, # "before": { # "bind_to_all": false, # "instances": [ # { # "description": "blue-vrf", # "disable": true, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # } # ] # }, # "changed": true, # "commands": [ # "set vrf name vrf-green table 110", # "set vrf name vrf-green vni 1010", # "set vrf name vrf-green description green-vrf" # ] # After state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue disable # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-green description 'green-vrf' # set vrf name vrf-green table '110' # set vrf name vrf-green vni '1010' # vyos@vyos:~$ # # ------------------- # # 2. Using replaced # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # Task # # ------------- # - name: Merge provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # bind_to_all: true # instances: # - name: "vrf-blue" # description: "blue-vrf" # disable: false # table_id: 100 # vni: 1002 # - name: "vrf-red" # description: "red-vrf" # disable: false # table_id: 101 # vni: 1001 # address_family: # - afi: "ipv4" # disable_forwarding: false # route_maps: # - rm_name: "rm1" # protocol: "kernel" # - rm_name: "rm1" # protocol: "ospf" # - afi: "ipv6" # nht_no_resolve_via_default: true # state: replaced # # Task output: # # ------------- # "after": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1002 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": false, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "ospf", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # }, # { # "afi": "ipv6", # "disable_forwarding": false, # "nht_no_resolve_via_default": true # } # ], # "description": "red-vrf", # "disable": false, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "before": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "changed": true, # "commands": [ # "set vrf name vrf-blue vni 1002", # "delete vrf name vrf-red disable", # "set vrf name vrf-red ip protocol ospf route-map rm1", # "delete vrf name vrf-red ip disable-forwarding", # "set vrf name vrf-red ipv6 nht no-resolve-via-default" # ] # After state: # # ------------- # vyos@vyos:~$ # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1002' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol ospf route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red ipv6 nht no-resolve-via-default # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # ------------------- # # 3. Using overridden # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # Task # ------------- # - name: Overridden provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # bind_to_all: true # instances: # - name: "vrf-blue" # description: "blue-vrf" # disable: true # table_id: 100 # vni: 1000 # - name: "vrf-red" # description: "red-vrf" # disable: true # table_id: 101 # vni: 1001 # address_family: # - afi: "ipv4" # disable_forwarding: false # route_maps: # - rm_name: "rm1" # protocol: "kernel" # - rm_name: "rm1" # protocol: "rip" # - afi: "ipv6" # nht_no_resolve_via_default: false # state: overridden # # Task output: # # ------------- # "after": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": true, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": false, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "before": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "changed": true, # "commands": [ # "delete vrf name vrf-blue", # "commit", # "delete vrf name vrf-red", # "commit", # "set vrf name vrf-blue table 100", # "set vrf name vrf-blue vni 1000", # "set vrf name vrf-blue description blue-vrf", # "set vrf name vrf-blue disable", # "set vrf name vrf-red table 101", # "set vrf name vrf-red vni 1001", # "set vrf name vrf-red description red-vrf", # "set vrf name vrf-red disable", # "set vrf name vrf-red ip protocol kernel route-map rm1", # "set vrf name vrf-red ip protocol rip route-map rm1" # ] # After state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue disable # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # 4. Using gathered # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # Task # ------------- # - name: Gather provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # state: gathered # # Task output: # # ------------- # "gathered": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # } # After state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # ------------------- # # 5. Using deleted # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf bind-to-all # set vrf name vrf-blue description 'blue-vrf' # set vrf name vrf-blue table '100' # set vrf name vrf-blue vni '1000' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # Task # # ------------- # - name: Replace provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # bind_to_all: false # instances: # - name: "vrf-blue" # state: deleted # # Task output: # # ------------- # "after": { # "bind_to_all": false, # "instances": [ # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "before": { # "bind_to_all": true, # "instances": [ # { # "description": "blue-vrf", # "disable": false, # "name": "vrf-blue", # "table_id": 100, # "vni": 1000 # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "rip", # "rm_name": "rm1" # } # ] # } # ], # "description": "red-vrf", # "disable": true, # "name": "vrf-red", # "table_id": 101, # "vni": 1001 # } # ] # }, # "changed": true, # "commands": [ # "delete vrf bind-to-all", # "delete vrf name vrf-blue" # ] # After state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # # ------------------- # # 6. Using rendered # # ------------------- # # Before state: # # ------------- # vyos@vyos:~$ show configuration commands | match 'set vrf' # set vrf name vrf-red description 'red-vrf' # set vrf name vrf-red disable # set vrf name vrf-red ip disable-forwarding # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol rip route-map 'rm1' # set vrf name vrf-red table '101' # set vrf name vrf-red vni '1001' # vyos@vyos:~$ # Task # ------------- # - name: Render provided configuration with device configuration # vyos.vyos.vyos_vrf: # config: # bind_to_all: true # instances: # - name: "vrf-green" # description: "green-vrf" # disabled: true # table_id: 105 # vni: 1000 # - name: "vrf-amber" # description: "amber-vrf" # disable: false # table_id: 111 # vni: 1001 # address_family: # - afi: "ipv4" # disable_forwarding: true # route_maps: # - rm_name: "rm1" # protocol: "kernel" # - rm_name: "rm1" # protocol: "ospf" # - afi: "ipv6" # nht_no_resolve_via_default: false # state: rendered # # Task output: # # ------------- # "rendered": [ # "set vrf bind-to-all", # "set vrf name vrf-green table 105", # "set vrf name vrf-green vni 1000", # "set vrf name vrf-green description green-vrf", # "set vrf name vrf-green disable", # "set vrf name vrf-amber table 111", # "set vrf name vrf-amber vni 1001", # "set vrf name vrf-amber description amber-vrf", # "set vrf name vrf-amber ip protocol kernel route-map rm1", # "set vrf name vrf-amber ip protocol ospf route-map rm1", # "set vrf name vrf-amber ip disable-forwarding" # ] # # ------------------- # # 7. Using parsed # # ------------------- # # vrf_parsed.cfg: # # ------------- # set vrf bind-to-all # set vrf name vrf1 description 'red' # set vrf name vrf1 disable # set vrf name vrf1 table 101 # set vrf name vrf1 vni 501 # set vrf name vrf2 description 'blah2' # set vrf name vrf2 disable # set vrf name vrf2 table 102 # set vrf name vrf2 vni 102 # set vrf name vrf1 ip disable-forwarding # set vrf name vrf1 ip nht no-resolve-via-default # set vrf name vrf-red ip protocol kernel route-map 'rm1' # set vrf name vrf-red ip protocol ospf route-map 'rm1' # set vrf name vrf-red ipv6 nht no-resolve-via-default # Task: # ------------- # - name: Parse provided configuration with device configuration # vyos.vyos.vyos_vrf: # running_config: "{{ lookup('file', './vrf_parsed.cfg') }}" # state: parsed # # Task output: # # ------------- # "parsed": { # "bind_to_all": true, # "instances": [ # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": true, # "nht_no_resolve_via_default": true # } # ], # "description": "red", # "disable": true, # "name": "vrf1" # }, # { # "description": "blah2", # "disable": true, # "name": "vrf2" # }, # { # "address_family": [ # { # "afi": "ipv4", # "disable_forwarding": false, # "nht_no_resolve_via_default": false, # "route_maps": [ # { # "protocol": "kernel", # "rm_name": "rm1" # }, # { # "protocol": "ospf", # "rm_name": "rm1" # } # ] # }, # { # "afi": "ipv6", # "disable_forwarding": false, # "nht_no_resolve_via_default": true # } # ], # "disable": false, # "name": "vrf-red" # } # ] # } """ RETURN = """ before: description: The configuration prior to the module execution. returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged) type: dict sample: > This output will always be in the same format as the module argspec. after: description: The resulting configuration after module execution. returned: when changed type: dict sample: > This output will always be in the same format as the module argspec. commands: description: The set of commands pushed to the remote device. returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged) type: list sample: - set system ntp server server1 dynamic - set system ntp server server1 prefer - set system ntp server server2 noselect - set system ntp server server2 preempt - set system ntp server server_add preempt rendered: description: The provided configuration in the task rendered in device-native format (offline). returned: when I(state) is C(rendered) type: list sample: - set system ntp server server1 dynamic - set system ntp server server1 prefer - set system ntp server server2 noselect - set system ntp server server2 preempt - set system ntp server server_add preempt gathered: description: Facts about the network resource gathered from the remote device as structured data. returned: when I(state) is C(gathered) type: list sample: > This output will always be in the same format as the module argspec. parsed: description: The device native config provided in I(running_config) option parsed into structured data as per module argspec. returned: when I(state) is C(parsed) type: list sample: > This output will always be in the same format as the module argspec. """ from ansible.module_utils.basic import AnsibleModule from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.vrf.vrf import VrfArgs from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.vrf.vrf import Vrf def main(): """ Main entry point for module execution :returns: the result form module invocation """ module = AnsibleModule( argument_spec=VrfArgs.argument_spec, mutually_exclusive=[["config", "running_config"]], required_if=[ ["state", "merged", ["config"]], ["state", "replaced", ["config"]], ["state", "overridden", ["config"]], ["state", "rendered", ["config"]], ["state", "parsed", ["running_config"]], ], supports_check_mode=True, ) + module._undocumented = [ + "config.instances[].protocols.bgp", + "config.instances[].protocols.ospf", + "config.instances[].protocols.ospfv3", + "config.instances[].protocols.static", + ] + result = Vrf(module).execute_module() module.exit_json(**result) if __name__ == "__main__": main()