vyos.vyos.vyos_bgp_global module – BGP global resource module

Note

This module is part of the vyos.vyos collection (version 6.0.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

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

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

New in vyos.vyos 1.0.0

Synopsis

  • This module manages BGP global configuration of interfaces on devices running VYOS.

  • Tested against VyOS 1.3.8, 1.4.2, the upcoming 1.5, and the rolling release of spring 2025

  • The provided examples of commands are valid for VyOS 1.4+

Parameters

Parameter

Comments

config

dictionary

A dict of BGP global configuration for interfaces.

as_number

integer

AS number.

bgp_params

dictionary

BGP parameters

always_compare_med

boolean

Always compare MEDs from different neighbors

Choices:

  • false

  • true

bestpath

dictionary

Default bestpath selection mechanism

as_path

string

AS-path attribute comparison parameters

Choices:

  • "confed"

  • "ignore"

compare_routerid

boolean

Compare the router-id for identical EBGP paths

Choices:

  • false

  • true

med

string

MED attribute comparison parameters

Choices:

  • "confed"

  • "missing-as-worst"

cluster_id

string

Route-reflector cluster-id

confederation

list / elements=dictionary

AS confederation parameters

identifier

integer

Confederation AS identifier

peers

integer

Peer ASs in the BGP confederation

dampening

dictionary

Enable route-flap dampening

half_life

integer

Half-life penalty in seconds

max_suppress_time

integer

Maximum duration to suppress a stable route

re_use

integer

Time to start reusing a route

start_suppress_time

integer

When to start suppressing a route

default

dictionary

BGP defaults

local_pref

integer

Default local preference

no_ipv4_unicast

boolean

Deactivate IPv4 unicast for a peer by default Deprecated: Unavailable after 1.4

Choices:

  • false

  • true

deterministic_med

boolean

Compare MEDs between different peers in the same AS

Choices:

  • false

  • true

disable_network_import_check

boolean

Disable IGP route check for network statements

Choices:

  • false

  • true

distance

list / elements=dictionary

Administrative distances for BGP routes

prefix

integer

Administrative distance for a specific BGP prefix

type

string

Type of route

Choices:

  • "external"

  • "internal"

  • "local"

value

integer

distance

enforce_first_as

boolean

Require first AS in the path to match peer’s AS

Choices:

  • false

  • true

graceful_restart

integer

Maximum time to hold onto restarting peer’s stale paths

log_neighbor_changes

boolean

Log neighbor up/down changes and reset reason

Choices:

  • false

  • true

no_client_to_client_reflection

boolean

Disable client to client route reflection

Choices:

  • false

  • true

no_fast_external_failover

boolean

Disable immediate session reset if peer’s connected link goes down

Choices:

  • false

  • true

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

Advertise dynamic capability to this neighbor.

Choices:

  • false

  • true

extended_nexthop

boolean

Advertise extended nexthop capability to this neighbor.

Choices:

  • false

  • true

default_originate

string

Send default route to this neighbor

description

string

Description of the neighbor

disable_capability_negotiation

boolean

Disbale capability negotiation with the neighbor

Choices:

  • false

  • true

disable_connected_check

boolean

Disable check to see if EBGP peer’s address is a connected route.

Choices:

  • false

  • true

disable_send_community

string

Disable sending community attributes to this neighbor.

Choices:

  • "extended"

  • "standard"

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

Ignore capability negotiation with specified neighbor.

Choices:

  • false

  • true

passive

boolean

Do not initiate a session with this neighbor

Choices:

  • false

  • true

password

string

BGP MD5 password

peer_group

boolean

True if all the configs under this neighbor key is for peer group template.

Choices:

  • false

  • true

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

Administratively shut down neighbor

Choices:

  • false

  • true

solo

boolean

Do not send back prefixes learned from the neighbor

Choices:

  • false

  • true

strict_capability_match

boolean

Enable strict capability negotiation

Choices:

  • false

  • true

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

running_config

string

This option is used only with state parsed.

The value of this option should be the output received from the EOS device by executing the command show running-config | section bgp.

The state parsed reads the configuration from running_config 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

The state the configuration should be left in.

State purged removes all the BGP configurations from the target device. Use caution with this state.(‘delete protocols bgp <x>’)

State deleted only removes BGP attributes that this modules manages and does not negate the BGP process completely. Thereby, preserving address-family related configurations under BGP context.

Running states deleted and replaced will result in an error if there are address-family configuration lines present under neighbor context that is is to be removed. Please use the vyos.vyos.vyos_bgp_address_family module for prior cleanup.

Refer to examples for more details.

Choices:

  • "deleted"

  • "merged" ← (default)

  • "purged"

  • "replaced"

  • "gathered"

  • "rendered"

  • "parsed"

Examples

# Using merged
# Before state

# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# vyos@vyos:~$

- name: Merge provided configuration with device configuration
  vyos.vyos.vyos_bgp_global:
    config:
      as_number: "65536"
      aggregate_address:
        - prefix: "203.0.113.0/24"
          as_set: true
        - prefix: "192.0.2.0/24"
          summary_only: true
      network:
        - address: "192.1.13.0/24"
          backdoor: true
      redistribute:
        - protocol: "kernel"
          metric: 45
        - protocol: "connected"
          route_map: "map01"
      maximum_paths:
        - path: "ebgp"
          count: 20
        - path: "ibgp"
          count: 55
      timers:
        keepalive: 35
      bgp_params:
        bestpath:
          as_path: "confed"
          compare_routerid: true
        default:
          no_ipv4_unicast: true
        router_id: "192.1.2.9"
        confederation:
          - peers: 20
          - peers: 55
          - identifier: 66
      neighbor:
        - address: "192.0.2.25"
          disable_connected_check: true
          timers:
            holdtime: 30
            keepalive: 10
        - address: "203.0.113.5"
          attribute_unchanged:
            as_path: true
            med: true
          ebgp_multihop: 2
          remote_as: 101
          update_source: "192.0.2.25"
        - address: "5001::64"
          maximum_prefix: 34
          distribute_list:
            - acl: 20
              action: "export"
            - acl: 40
              action: "import"
    state: merged

# After State
# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# set protocols bgp system-as 65536
# set protocols bgp aggregate-address 192.0.2.0/24 'summary-only'
# set protocols bgp aggregate-address 203.0.113.0/24 'as-set'
# set protocols bgp maximum-paths ebgp '20'
# set protocols bgp maximum-paths ibgp '55'
# set protocols bgp neighbor 192.0.2.25 'disable-connected-check'
# set protocols bgp neighbor 192.0.2.25 timers holdtime '30'
# set protocols bgp neighbor 192.0.2.25 timers keepalive '10'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'as-path'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'med'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'next-hop'
# set protocols bgp neighbor 203.0.113.5 ebgp-multihop '2'
# set protocols bgp neighbor 203.0.113.5 remote-as '101'
# set protocols bgp neighbor 203.0.113.5 update-source '192.0.2.25'
# set protocols bgp neighbor 5001::64 distribute-list export '20'
# set protocols bgp neighbor 5001::64 distribute-list import '40'
# set protocols bgp neighbor 5001::64 maximum-prefix '34'
# set protocols bgp network 192.1.13.0/24 'backdoor'
# set protocols bgp parameters bestpath as-path 'confed'
# set protocols bgp parameters bestpath 'compare-routerid'
# set protocols bgp parameters confederation identifier '66'
# set protocols bgp parameters confederation peers '20'
# set protocols bgp parameters confederation peers '55'
# set protocols bgp parameters default 'no-ipv4-unicast'
# set protocols bgp parameters router-id '192.1.2.9'
# set protocols bgp redistribute connected route-map 'map01'
# set protocols bgp redistribute kernel metric '45'
# set protocols bgp timers keepalive '35'
# vyos@vyos:~$
#
# # Module Execution:
#
# "after": {
#         "aggregate_address": [
#             {
#                 "prefix": "192.0.2.0/24",
#                 "summary_only": true
#             },
#             {
#                 "prefix": "203.0.113.0/24",
#                 "as_set": true
#             }
#         ],
#         "as_number": 65536,
#         "bgp_params": {
#             "bestpath": {
#                 "as_path": "confed",
#                 "compare_routerid": true
#             },
#             "confederation": [
#                 {
#                     "identifier": 66
#                 },
#                 {
#                     "peers": 20
#                 },
#                 {
#                     "peers": 55
#                 }
#             ],
#             "default": {
#                 "no_ipv4_unicast": true
#             },
#             "router_id": "192.1.2.9"
#         },
#         "maximum_paths": [
#             {
#                 "count": 20,
#                 "path": "ebgp"
#             },
#             {
#                 "count": 55,
#                 "path": "ibgp"
#             }
#         ],
#         "neighbor": [
#             {
#                 "address": "192.0.2.25",
#                 "disable_connected_check": true,
#                 "timers": {
#                     "holdtime": 30,
#                     "keepalive": 10
#                 }
#             },
#             {
#                 "address": "203.0.113.5",
#                 "attribute_unchanged": {
#                     "as_path": true,
#                     "med": true,
#                     "next_hop": true
#                 },
#                 "ebgp_multihop": 2,
#                 "remote_as": 101,
#                 "update_source": "192.0.2.25"
#             },
#             {
#                 "address": "5001::64",
#                 "distribute_list": [
#                     {
#                         "acl": 20,
#                         "action": "export"
#                     },
#                     {
#                         "acl": 40,
#                         "action": "import"
#                     }
#                 ],
#                 "maximum_prefix": 34
#             }
#         ],
#         "network": [
#             {
#                 "address": "192.1.13.0/24",
#                 "backdoor": true
#             }
#         ],
#         "redistribute": [
#             {
#                 "protocol": "connected",
#                 "route_map": "map01"
#             },
#             {
#                 "metric": 45,
#                 "protocol": "kernel"
#             }
#         ],
#         "timers": {
#             "keepalive": 35
#         }
#     },
#     "before": {},
#     "changed": true,
#     "commands": [
#         "set protocols bgp neighbor 192.0.2.25 disable-connected-check",
#         "set protocols bgp neighbor 192.0.2.25 timers holdtime 30",
#         "set protocols bgp neighbor 192.0.2.25 timers keepalive 10",
#         "set protocols bgp neighbor 203.0.113.5 attribute-unchanged as-path",
#         "set protocols bgp neighbor 203.0.113.5 attribute-unchanged med",
#         "set protocols bgp neighbor 203.0.113.5 attribute-unchanged next-hop",
#         "set protocols bgp neighbor 203.0.113.5 ebgp-multihop 2",
#         "set protocols bgp neighbor 203.0.113.5 remote-as 101",
#         "set protocols bgp neighbor 203.0.113.5 update-source 192.0.2.25",
#         "set protocols bgp neighbor 5001::64 maximum-prefix 34",
#         "set protocols bgp neighbor 5001::64 distribute-list export 20",
#         "set protocols bgp neighbor 5001::64 distribute-list import 40",
#         "set protocols bgp redistribute kernel metric 45",
#         "set protocols bgp redistribute connected route-map map01",
#         "set protocols bgp network 192.1.13.0/24 backdoor",
#         "set protocols bgp aggregate-address 203.0.113.0/24 as-set",
#         "set protocols bgp aggregate-address 192.0.2.0/24 summary-only",
#         "set protocols bgp parameters bestpath as-path confed",
#         "set protocols bgp parameters bestpath compare-routerid",
#         "set protocols bgp parameters default no-ipv4-unicast",
#         "set protocols bgp parameters router-id 192.1.2.9",
#         "set protocols bgp parameters confederation peers 20",
#         "set protocols bgp parameters confederation peers 55",
#         "set protocols bgp parameters confederation identifier 66",
#         "set protocols bgp maximum-paths ebgp 20",
#         "set protocols bgp maximum-paths ibgp 55",
#         "set protocols bgp timers keepalive 35"
#     ],

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

# Before state:

# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# set protocols bgp system-as 65536
# set protocols bgp aggregate-address 192.0.2.0/24 'summary-only'
# set protocols bgp aggregate-address 203.0.113.0/24 'as-set'
# set protocols bgp maximum-paths ebgp '20'
# set protocols bgp maximum-paths ibgp '55'
# set protocols bgp neighbor 192.0.2.25 'disable-connected-check'
# set protocols bgp neighbor 192.0.2.25 timers holdtime '30'
# set protocols bgp neighbor 192.0.2.25 timers keepalive '10'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'as-path'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'med'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'next-hop'
# set protocols bgp neighbor 203.0.113.5 ebgp-multihop '2'
# set protocols bgp neighbor 203.0.113.5 remote-as '101'
# set protocols bgp neighbor 203.0.113.5 update-source '192.0.2.25'
# set protocols bgp neighbor 5001::64 distribute-list export '20'
# set protocols bgp neighbor 5001::64 distribute-list import '40'
# set protocols bgp neighbor 5001::64 maximum-prefix '34'
# set protocols bgp network 192.1.13.0/24 'backdoor'
# set protocols bgp parameters bestpath as-path 'confed'
# set protocols bgp parameters bestpath 'compare-routerid'
# set protocols bgp parameters confederation identifier '66'
# set protocols bgp parameters confederation peers '20'
# set protocols bgp parameters confederation peers '55'
# set protocols bgp parameters default 'no-ipv4-unicast'
# set protocols bgp parameters router-id '192.1.2.9'
# set protocols bgp redistribute connected route-map 'map01'
# set protocols bgp redistribute kernel metric '45'
# set protocols bgp timers keepalive '35'
# vyos@vyos:~$

- name: Replace
  vyos.vyos.vyos_bgp_global:
    config:
      as_number: "65536"
      network:
        - address: "203.0.113.0/24"
          route_map: map01
      redistribute:
        - protocol: "static"
          route_map: "map01"
      neighbor:
        - address: "192.0.2.40"
          advertisement_interval: 72
          capability:
            orf: "receive"
      bgp_params:
        bestpath:
          as_path: "confed"
    state: replaced
# After state:

# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# set protocols bgp system-as 65536
# set protocols bgp neighbor 192.0.2.40 advertisement-interval '72'
# set protocols bgp neighbor 192.0.2.40 capability orf prefix-list 'receive'
# set protocols bgp network 203.0.113.0/24 route-map 'map01'
# set protocols bgp parameters bestpath as-path 'confed'
# set protocols bgp redistribute static route-map 'map01'
# vyos@vyos:~$
#
#
# Module Execution:
#
# "after": {
#         "as_number": 65536,
#         "bgp_params": {
#             "bestpath": {
#                 "as_path": "confed"
#             }
#         },
#         "neighbor": [
#             {
#                 "address": "192.0.2.40",
#                 "advertisement_interval": 72,
#                 "capability": {
#                     "orf": "receive"
#                 }
#             }
#         ],
#         "network": [
#             {
#                 "address": "203.0.113.0/24",
#                 "route_map": "map01"
#             }
#         ],
#         "redistribute": [
#             {
#                 "protocol": "static",
#                 "route_map": "map01"
#             }
#         ]
#     },
#     "before": {
#         "aggregate_address": [
#             {
#                 "prefix": "192.0.2.0/24",
#                 "summary_only": true
#             },
#             {
#                 "prefix": "203.0.113.0/24",
#                 "as_set": true
#             }
#         ],
#         "as_number": 65536,
#         "bgp_params": {
#             "bestpath": {
#                 "as_path": "confed",
#                 "compare_routerid": true
#             },
#             "confederation": [
#                 {
#                     "identifier": 66
#                 },
#                 {
#                     "peers": 20
#                 },
#                 {
#                     "peers": 55
#                 }
#             ],
#             "default": {
#                 "no_ipv4_unicast": true
#             },
#             "router_id": "192.1.2.9"
#         },
#         "maximum_paths": [
#             {
#                 "count": 20,
#                 "path": "ebgp"
#             },
#             {
#                 "count": 55,
#                 "path": "ibgp"
#             }
#         ],
#         "neighbor": [
#             {
#                 "address": "192.0.2.25",
#                 "disable_connected_check": true,
#                 "timers": {
#                     "holdtime": 30,
#                     "keepalive": 10
#                 }
#             },
#             {
#                 "address": "203.0.113.5",
#                 "attribute_unchanged": {
#                     "as_path": true,
#                     "med": true,
#                     "next_hop": true
#                 },
#                 "ebgp_multihop": 2,
#                 "remote_as": 101,
#                 "update_source": "192.0.2.25"
#             },
#             {
#                 "address": "5001::64",
#                 "distribute_list": [
#                     {
#                         "acl": 20,
#                         "action": "export"
#                     },
#                     {
#                         "acl": 40,
#                         "action": "import"
#                     }
#                 ],
#                 "maximum_prefix": 34
#             }
#         ],
#         "network": [
#             {
#                 "address": "192.1.13.0/24",
#                 "backdoor": true
#             }
#         ],
#         "redistribute": [
#             {
#                 "protocol": "connected",
#                 "route_map": "map01"
#             },
#             {
#                 "metric": 45,
#                 "protocol": "kernel"
#             }
#         ],
#         "timers": {
#             "keepalive": 35
#         }
#     },
#     "changed": true,
#     "commands": [
#         "delete protocols bgp timers",
#         "delete protocols bgp maximum-paths ",
#         "delete protocols bgp maximum-paths ",
#         "delete protocols bgp parameters router-id 192.1.2.9",
#         "delete protocols bgp parameters default",
#         "delete protocols bgp parameters confederation",
#         "delete protocols bgp parameters bestpath compare-routerid",
#         "delete protocols bgp aggregate-address",
#         "delete protocols bgp network 192.1.13.0/24",
#         "delete protocols bgp redistribute kernel",
#         "delete protocols bgp redistribute kernel",
#         "delete protocols bgp redistribute connected",
#         "delete protocols bgp redistribute connected",
#         "delete protocols bgp neighbor 5001::64",
#         "delete protocols bgp neighbor 203.0.113.5",
#         "delete protocols bgp neighbor 192.0.2.25",
#         "set protocols bgp neighbor 192.0.2.40 advertisement-interval 72",
#         "set protocols bgp neighbor 192.0.2.40 capability orf prefix-list receive",
#         "set protocols bgp redistribute static route-map map01",
#         "set protocols bgp network 203.0.113.0/24 route-map map01"
#     ],

# Using deleted:
# -------------

# Before state:

# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# set protocols bgp system-as 65536
# set protocols bgp neighbor 192.0.2.40 advertisement-interval '72'
# set protocols bgp neighbor 192.0.2.40 capability orf prefix-list 'receive'
# set protocols bgp network 203.0.113.0/24 route-map 'map01'
# set protocols bgp parameters bestpath as-path 'confed'
# set protocols bgp redistribute static route-map 'map01'
# vyos@vyos:~$

- name: Delete configuration
  vyos.vyos.vyos_bgp_global:
    config:
      as_number: "65536"
    state: deleted

# After state:

# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# set protocols bgp '65536'
# vyos@vyos:~$
#
#
# Module Execution:
#
# "after": {
#         "as_number": 65536
#     },
#     "before": {
#         "as_number": 65536,
#         "bgp_params": {
#             "bestpath": {
#                 "as_path": "confed"
#             }
#         },
#         "neighbor": [
#             {
#                 "address": "192.0.2.40",
#                 "advertisement_interval": 72,
#                 "capability": {
#                     "orf": "receive"
#                 }
#             }
#         ],
#         "network": [
#             {
#                 "address": "203.0.113.0/24",
#                 "route_map": "map01"
#             }
#         ],
#         "redistribute": [
#             {
#                 "protocol": "static",
#                 "route_map": "map01"
#             }
#         ]
#     },
#     "changed": true,
#     "commands": [
#         "delete protocols bgp neighbor 192.0.2.40",
#         "delete protocols bgp redistribute",
#         "delete protocols bgp network",
#         "delete protocols bgp parameters"
#     ],

# Using purged:

# Before state:

# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# set protocols bgp system-as 65536
# set protocols bgp aggregate-address 192.0.2.0/24 'summary-only'
# set protocols bgp aggregate-address 203.0.113.0/24 'as-set'
# set protocols bgp maximum-paths ebgp '20'
# set protocols bgp maximum-paths ibgp '55'
# set protocols bgp neighbor 192.0.2.25 'disable-connected-check'
# set protocols bgp neighbor 192.0.2.25 timers holdtime '30'
# set protocols bgp neighbor 192.0.2.25 timers keepalive '10'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'as-path'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'med'
# set protocols bgp neighbor 203.0.113.5 attribute-unchanged 'next-hop'
# set protocols bgp neighbor 203.0.113.5 ebgp-multihop '2'
# set protocols bgp neighbor 203.0.113.5 remote-as '101'
# set protocols bgp neighbor 203.0.113.5 update-source '192.0.2.25'
# set protocols bgp neighbor 5001::64 distribute-list export '20'
# set protocols bgp neighbor 5001::64 distribute-list import '40'
# set protocols bgp neighbor 5001::64 maximum-prefix '34'
# set protocols bgp network 192.1.13.0/24 'backdoor'
# set protocols bgp parameters bestpath as-path 'confed'
# set protocols bgp parameters bestpath 'compare-routerid'
# set protocols bgp parameters confederation identifier '66'
# set protocols bgp parameters confederation peers '20'
# set protocols bgp parameters confederation peers '55'
# set protocols bgp parameters default 'no-ipv4-unicast'
# set protocols bgp parameters router-id '192.1.2.9'
# set protocols bgp redistribute connected route-map 'map01'
# set protocols bgp redistribute kernel metric '45'
# set protocols bgp timers keepalive '35'
# vyos@vyos:~$


- name: Purge configuration
  vyos.vyos.vyos_bgp_global:
    config:
      as_number: "65536"
    state: purged

# After state:

# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# vyos@vyos:~$
#
# Module Execution:
#
#     "after": {},
#     "before": {
#         "aggregate_address": [
#             {
#                 "prefix": "192.0.2.0/24",
#                 "summary_only": true
#             },
#             {
#                 "prefix": "203.0.113.0/24",
#                 "as_set": true
#             }
#         ],
#         "as_number": 65536,
#         "bgp_params": {
#             "bestpath": {
#                 "as_path": "confed",
#                 "compare_routerid": true
#             },
#             "confederation": [
#                 {
#                     "identifier": 66
#                 },
#                 {
#                     "peers": 20
#                 },
#                 {
#                     "peers": 55
#                 }
#             ],
#             "default": {
#                 "no_ipv4_unicast": true
#             },
#             "router_id": "192.1.2.9"
#         },
#         "maximum_paths": [
#             {
#                 "count": 20,
#                 "path": "ebgp"
#             },
#             {
#                 "count": 55,
#                 "path": "ibgp"
#             }
#         ],
#         "neighbor": [
#             {
#                 "address": "192.0.2.25",
#                 "disable_connected_check": true,
#                 "timers": {
#                     "holdtime": 30,
#                     "keepalive": 10
#                 }
#             },
#             {
#                 "address": "203.0.113.5",
#                 "attribute_unchanged": {
#                     "as_path": true,
#                     "med": true,
#                     "next_hop": true
#                 },
#                 "ebgp_multihop": 2,
#                 "remote_as": 101,
#                 "update_source": "192.0.2.25"
#             },
#             {
#                 "address": "5001::64",
#                 "distribute_list": [
#                     {
#                         "acl": 20,
#                         "action": "export"
#                     },
#                     {
#                         "acl": 40,
#                         "action": "import"
#                     }
#                 ],
#                 "maximum_prefix": 34
#             }
#         ],
#         "network": [
#             {
#                 "address": "192.1.13.0/24",
#                 "backdoor": true
#             }
#         ],
#         "redistribute": [
#             {
#                 "protocol": "connected",
#                 "route_map": "map01"
#             },
#             {
#                 "metric": 45,
#                 "protocol": "kernel"
#             }
#         ],
#         "timers": {
#             "keepalive": 35
#         }
#     },
#     "changed": true,
#     "commands": [
#         "delete protocols bgp 65536"
#     ],


# Deleted in presence of address family under neighbors:

# Before state:
# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# set protocols bgp system-as 65536
# set protocols bgp neighbor 192.0.2.43 advertisement-interval '72'
# set protocols bgp neighbor 192.0.2.43 capability 'dynamic'
# set protocols bgp neighbor 192.0.2.43 'disable-connected-check'
# set protocols bgp neighbor 192.0.2.43 timers holdtime '30'
# set protocols bgp neighbor 192.0.2.43 timers keepalive '10'
# set protocols bgp neighbor 203.0.113.0 address-family 'ipv6-unicast'
# set protocols bgp neighbor 203.0.113.0 capability orf prefix-list 'receive'
# set protocols bgp network 203.0.113.0/24 route-map 'map01'
# set protocols bgp parameters 'always-compare-med'
# set protocols bgp parameters bestpath as-path 'confed'
# set protocols bgp parameters bestpath 'compare-routerid'
# set protocols bgp parameters dampening half-life '33'
# set protocols bgp parameters dampening max-suppress-time '20'
# set protocols bgp parameters dampening re-use '60'
# set protocols bgp parameters dampening start-suppress-time '5'
# set protocols bgp parameters default 'no-ipv4-unicast'
# set protocols bgp parameters distance global external '66'
# set protocols bgp parameters distance global internal '20'
# set protocols bgp parameters distance global local '10'
# set protocols bgp redistribute static route-map 'map01'
# vyos@vyos:~$ ^C
# vyos@vyos:~$

- name: Delete configuration
  vyos.vyos.vyos_bgp_global:
    config:
      as_number: "65536"
    state: deleted

# Module Execution:
#
# "changed": false,
#     "invocation": {
#         "module_args": {
#             "config": {
#                 "aggregate_address": null,
#                 "as_number": 65536,
#                 "bgp_params": null,
#                 "maximum_paths": null,
#                 "neighbor": null,
#                 "network": null,
#                 "redistribute": null,
#                 "timers": null
#             },
#             "running_config": null,
#             "state": "deleted"
#         }
#     },
#     "msg": "Use the _bgp_address_family module to delete the address_family under neighbor 203.0.113.0, before replacing/deleting the neighbor."
# }

# using gathered:
# --------------

# Before state:
# vyos@vyos:~$ show configuration commands |  match "set protocols bgp"
# set protocols bgp system-as 65536
# set protocols bgp neighbor 192.0.2.43 advertisement-interval '72'
# set protocols bgp neighbor 192.0.2.43 capability 'dynamic'
# set protocols bgp neighbor 192.0.2.43 'disable-connected-check'
# set protocols bgp neighbor 192.0.2.43 timers holdtime '30'
# set protocols bgp neighbor 192.0.2.43 timers keepalive '10'
# set protocols bgp neighbor 203.0.113.0 address-family 'ipv6-unicast'
# set protocols bgp neighbor 203.0.113.0 capability orf prefix-list 'receive'
# set protocols bgp network 203.0.113.0/24 route-map 'map01'
# set protocols bgp parameters 'always-compare-med'
# set protocols bgp parameters bestpath as-path 'confed'
# set protocols bgp parameters bestpath 'compare-routerid'
# set protocols bgp parameters dampening half-life '33'
# set protocols bgp parameters dampening max-suppress-time '20'
# set protocols bgp parameters dampening re-use '60'
# set protocols bgp parameters dampening start-suppress-time '5'
# set protocols bgp parameters default 'no-ipv4-unicast'
# set protocols bgp parameters distance global external '66'
# set protocols bgp parameters distance global internal '20'
# set protocols bgp parameters distance global local '10'
# set protocols bgp redistribute static route-map 'map01'
# vyos@vyos:~$ ^C

- name: gather configs
  vyos.vyos.vyos_bgp_global:
    state: gathered

# Module Execution:
# "gathered": {
#         "as_number": 65536,
#         "bgp_params": {
#             "always_compare_med": true,
#             "bestpath": {
#                 "as_path": "confed",
#                 "compare_routerid": true
#             },
#             "default": {
#                 "no_ipv4_unicast": true
#             },
#             "distance": [
#                 {
#                     "type": "external",
#                     "value": 66
#                 },
#                 {
#                     "type": "internal",
#                     "value": 20
#                 },
#                 {
#                     "type": "local",
#                     "value": 10
#                 }
#             ]
#         },
#         "neighbor": [
#             {
#                 "address": "192.0.2.43",
#                 "advertisement_interval": 72,
#                 "capability": {
#                     "dynamic": true
#                 },
#                 "disable_connected_check": true,
#                 "timers": {
#                     "holdtime": 30,
#                     "keepalive": 10
#                 }
#             },
#             {
#                 "address": "203.0.113.0",
#                 "capability": {
#                     "orf": "receive"
#                 }
#             }
#         ],
#         "network": [
#             {
#                 "address": "203.0.113.0/24",
#                 "route_map": "map01"
#             }
#         ],
#         "redistribute": [
#             {
#                 "protocol": "static",
#                 "route_map": "map01"
#             }
#         ]
#     },
#

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

# parsed.cfg

# set protocols bgp neighbor 192.0.2.43 advertisement-interval '72'
# set protocols bgp neighbor 192.0.2.43 capability 'dynamic'
# set protocols bgp neighbor 192.0.2.43 'disable-connected-check'
# set protocols bgp neighbor 192.0.2.43 timers holdtime '30'
# set protocols bgp neighbor 192.0.2.43 timers keepalive '10'
# set protocols bgp neighbor 203.0.113.0 address-family 'ipv6-unicast'
# set protocols bgp neighbor 203.0.113.0 capability orf prefix-list 'receive'
# set protocols bgp network 203.0.113.0/24 route-map 'map01'
# set protocols bgp parameters 'always-compare-med'
# set protocols bgp parameters bestpath as-path 'confed'
# set protocols bgp parameters bestpath 'compare-routerid'
# set protocols bgp parameters dampening half-life '33'
# set protocols bgp parameters dampening max-suppress-time '20'
# set protocols bgp parameters dampening re-use '60'
# set protocols bgp parameters dampening start-suppress-time '5'
# set protocols bgp parameters default 'no-ipv4-unicast'
# set protocols bgp parameters distance global external '66'
# set protocols bgp parameters distance global internal '20'
# set protocols bgp parameters distance global local '10'
# set protocols bgp redistribute static route-map 'map01'

- name: parse configs
  vyos.vyos.vyos_bgp_global:
    running_config: "{{ lookup('file', './parsed.cfg') }}"
    state: parsed
  tags:
    - parsed

# Module execution:
# "parsed": {
#         "as_number": 65536,
#         "bgp_params": {
#             "always_compare_med": true,
#             "bestpath": {
#                 "as_path": "confed",
#                 "compare_routerid": true
#             },
#             "default": {
#                 "no_ipv4_unicast": true
#             },
#             "distance": [
#                 {
#                     "type": "external",
#                     "value": 66
#                 },
#                 {
#                     "type": "internal",
#                     "value": 20
#                 },
#                 {
#                     "type": "local",
#                     "value": 10
#                 }
#             ]
#         },
#         "neighbor": [
#             {
#                 "address": "192.0.2.43",
#                 "advertisement_interval": 72,
#                 "capability": {
#                     "dynamic": true
#                 },
#                 "disable_connected_check": true,
#                 "timers": {
#                     "holdtime": 30,
#                     "keepalive": 10
#                 }
#             },
#             {
#                 "address": "203.0.113.0",
#                 "capability": {
#                     "orf": "receive"
#                 }
#             }
#         ],
#         "network": [
#             {
#                 "address": "203.0.113.0/24",
#                 "route_map": "map01"
#             }
#         ],
#         "redistribute": [
#             {
#                 "protocol": "static",
#                 "route_map": "map01"
#             }
#         ]
#     }
#

# Using rendered:
# --------------

- name: Render
  vyos.vyos.vyos_bgp_global:
    config:
      as_number: "65536"
      network:
        - address: "203.0.113.0/24"
          route_map: map01
      redistribute:
        - protocol: "static"
          route_map: "map01"
      bgp_params:
        always_compare_med: true
        dampening:
          start_suppress_time: 5
          max_suppress_time: 20
          half_life: 33
          re_use: 60
        distance:
          - type: "internal"
            value: 20
          - type: "local"
            value: 10
          - type: "external"
            value: 66
        bestpath:
          as_path: "confed"
          compare_routerid: true
        default:
          no_ipv4_unicast: true
      neighbor:
        - address: "192.0.2.43"
          disable_connected_check: true
          advertisement_interval: 72
          capability:
            dynamic: true
          timers:
            holdtime: 30
            keepalive: 10
        - address: "203.0.113.0"
          capability:
            orf: "receive"
    state: rendered

# Module Execution:
# "rendered": [
#         "set protocols bgp neighbor 192.0.2.43 disable-connected-check",
#         "set protocols bgp neighbor 192.0.2.43 advertisement-interval 72",
#         "set protocols bgp neighbor 192.0.2.43 capability dynamic",
#         "set protocols bgp neighbor 192.0.2.43 timers holdtime 30",
#         "set protocols bgp neighbor 192.0.2.43 timers keepalive 10",
#         "set protocols bgp neighbor 203.0.113.0 capability orf prefix-list receive",
#         "set protocols bgp redistribute static route-map map01",
#         "set protocols bgp network 203.0.113.0/24 route-map map01",
#         "set protocols bgp parameters always-compare-med",
#         "set protocols bgp parameters dampening half-life 33",
#         "set protocols bgp parameters dampening max-suppress-time 20",
#         "set protocols bgp parameters dampening re-use 60",
#         "set protocols bgp parameters dampening start-suppress-time 5",
#         "set protocols bgp parameters distance global internal 20",
#         "set protocols bgp parameters distance global local 10",
#         "set protocols bgp parameters distance global external 66",
#         "set protocols bgp parameters bestpath as-path confed",
#         "set protocols bgp parameters bestpath compare-routerid",
#         "set protocols bgp parameters default no-ipv4-unicast"
#     ]

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

after

dictionary

The resulting configuration after module execution.

Returned: when changed

Sample: "This output will always be in the same format as the module argspec.\n"

before

dictionary

The configuration prior to the module execution.

Returned: when state is merged, replaced, overridden, deleted or purged

Sample: "This output will always be in the same format as the module argspec.\n"

commands

list / elements=string

The set of commands pushed to the remote device.

Returned: when state is merged, replaced, overridden, deleted or purged

Sample: ["set protocols bgp redistribute static route-map map01", "set protocols bgp network 203.0.113.0/24 route-map map01", "set protocols bgp parameters always-compare-med"]

gathered

list / elements=string

Facts about the network resource gathered from the remote device as structured data.

Returned: when state is gathered

Sample: ["This output will always be in the same format as the module argspec.\n"]

parsed

list / elements=string

The device native config provided in running_config option parsed into structured data as per module argspec.

Returned: when state is parsed

Sample: ["This output will always be in the same format as the module argspec.\n"]

rendered

list / elements=string

The provided configuration in the task rendered in device-native format (offline).

Returned: when state is rendered

Sample: ["set protocols bgp redistribute static route-map map01", "set protocols bgp network 203.0.113.0/24 route-map map01", "set protocols bgp parameters always-compare-med"]

Authors

  • Gomathi Selvi Srinivasan (@GomathiselviS)