Page MenuHomeVyOS Platform

vyos_bgp_address_family.py
No OneTemporary

Size
44 KB
Referenced Files
None
Subscribers
None

vyos_bgp_address_family.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright 2021 Red Hat
# GNU General Public License v3.0+
# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
#############################################
# WARNING #
#############################################
#
# This file is auto generated by the resource
# module builder playbook.
#
# Do not edit this file manually.
#
# Changes to this file will be over written
# by the resource module builder.
#
# Changes should be made in the model used to
# generate this file or in the resource module
# builder template.
#
#############################################
"""
The module file for vyos_bgp_address_family
"""
from __future__ import absolute_import, division, print_function
__metaclass__ = type
DOCUMENTATION = """
module: vyos_bgp_address_family
version_added: 2.1.0
short_description: BGP Address Family Resource Module.
description:
- This module manages BGP address family configuration of interfaces on devices running VYOS.
author: Gomathi Selvi Srinivasan (@GomathiselviS)
options:
config:
description: A dict of BGP global configuration for interfaces.
type: dict
suboptions:
as_number:
description:
- AS number.
type: int
address_family:
description: BGP address-family parameters.
type: list
elements: dict
suboptions:
afi:
description: BGP address family settings.
type: str
choices: ['ipv4', 'ipv6']
aggregate_address:
description:
- BGP aggregate network.
type: list
elements: dict
suboptions:
prefix:
description: BGP aggregate network.
type: str
as_set:
description: Generate AS-set path information for this aggregate address.
type: bool
summary_only:
description: Announce the aggregate summary network only.
type: bool
networks:
description: BGP network
type: list
elements: dict
suboptions:
prefix:
description: BGP network address
type: str
path_limit:
description: AS path hop count limit
type: int
backdoor:
description: Network as a backdoor route.
type: bool
route_map:
description: Route-map to modify route attributes
type: str
redistribute:
description: Redistribute routes from other protocols into BGP
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: str
route_map:
description: Route map to filter redistributed routes
type: str
metric:
description: Metric for redistributed routes.
type: int
neighbors:
description: BGP neighbor
type: list
elements: dict
suboptions:
neighbor_address:
description: BGP neighbor address (v4/v6).
type: str
address_family:
description: address family.
type: list
elements: 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.
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.
type: dict
suboptions:
dynamic:
description: Advertise dynamic capability to this neighbor.
type: bool
orf:
description: Advertise ORF capability to this neighbor.
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
suboptions:
action:
description: Access-list to filter outgoing/incoming route updates to this neighbor
type: str
choices: ['export', 'import']
acl:
description: Access-list number.
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.
type: int
nexthop_local:
description: Nexthop attributes.
type: bool
nexthop_self:
description: Nexthop for routes sent to this neighbor to be the local router.
type: bool
peer_group:
description: IPv4 peer group for this peer
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
suboptions:
action:
description: filter outgoing/incoming route updates
type: str
choices: ['export', 'import']
route_map:
description: route-map to filter
type: str
route_reflector_client:
description: Neighbor as a route reflector client
type: bool
route_server_client:
description: Neighbor is route server client
type: bool
soft_reconfiguration:
description: Soft reconfiguration for neighbor
type: bool
unsupress_map:
description: Route-map to selectively unsuppress suppressed routes
type: str
weight:
description: Default weight for routes from this neighbor
type: int
running_config:
type: str
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 command | match bgp).
- The state I(parsed) reads the configuration from C(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 I(parsed) key within the result.
state:
description:
- The state the configuration should be left in.
type: str
choices:
- merged
- replaced
- deleted
- gathered
- parsed
- rendered
- purged
- overridden
default: merged
"""
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_address_family:
config:
as_number: "100"
address_family:
- afi: "ipv4"
redistribute:
- protocol: "static"
metric: 50
neighbors:
- neighbor_address: "20.33.1.1/24"
address_family:
- afi: "ipv4"
allowas_in: 4
as_override: True
attribute_unchanged:
med: True
- afi: "ipv6"
default_originate: "map01"
distribute_list:
- action: "export"
acl: 10
- neighbor_address: "100.11.34.12"
address_family:
- afi: "ipv4"
maximum_prefix: 45
nexthop_self: True
route_map:
- action: "export"
route_map: "map01"
- action: "import"
route_map: "map01"
weight: 50
# After State:
# vyos@vyos:~$ show configuration commands | match "set protocols bgp"
# set protocols bgp 100 address-family ipv4-unicast redistribute static metric '50'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast allowas-in number '4'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast as-override
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast attribute-unchanged med
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast default-originate route-map 'map01'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast distribute-list export '10'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast maximum-prefix '45'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast nexthop-self
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map export 'map01'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map import 'map01'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast weight '50'
# vyos@vyos:~$
#
# Module Execution:
#
# "after": {
# "address_family": [
# {
# "afi": "ipv4",
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# }
# ],
# "as_number": 100,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4",
# "maximum_prefix": 45,
# "nexthop_self": true,
# "route_map": [
# {
# "action": "export",
# "route_map": "map01"
# },
# {
# "action": "import",
# "route_map": "map01"
# }
# ],
# "weight": 50
# }
# ],
# "neighbor_address": "100.11.34.12"
# },
# {
# "address_family": [
# {
# "afi": "ipv4",
# "allowas_in": 4,
# "as_override": true,
# "attribute_unchanged": {
# "med": true
# }
# },
# {
# "afi": "ipv6",
# "default_originate": "map01",
# "distribute_list": [
# {
# "acl": 10,
# "action": "export"
# }
# ]
# }
# ],
# "neighbor_address": "20.33.1.1/24"
# }
# ]
# },
# "before": {},
# "changed": true,
# "commands": [
# "set protocols bgp 100 address-family ipv4-unicast redistribute static metric 50",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast allowas-in number 4",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast as-override",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast attribute-unchanged med",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast default-originate route-map map01",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast distribute-list export 10",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast maximum-prefix 45",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast nexthop-self",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map export map01",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map import map01",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast weight 50"
# ],
#
# Using replaced:
# Before state:
# vyos@vyos:~$ show configuration commands | match "set protocols bgp"
# set protocols bgp 100 address-family ipv4-unicast redistribute static metric '50'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast allowas-in number '4'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast as-override
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast attribute-unchanged med
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast default-originate route-map 'map01'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast distribute-list export '10'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast maximum-prefix '45'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast nexthop-self
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map export 'map01'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map import 'map01'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast weight '50'
# vyos@vyos:~$
- name: Replace provided configuration with device configuration
vyos.vyos.vyos_bgp_address_family:
config:
as_number: "100"
neighbors:
- neighbor_address: "100.11.34.12"
address_family:
- afi: "ipv4"
allowas_in: 4
as_override: True
attribute_unchanged:
med: True
- afi: "ipv6"
default_originate: "map01"
distribute_list:
- action: "export"
acl: 10
- neighbor_address: "20.33.1.1/24"
address_family:
- afi: "ipv6"
maximum_prefix: 45
nexthop_self: True
state: replaced
# After State:
# vyos@vyos:~$ show configuration commands | match "set protocols bgp"
# set protocols bgp 100 address-family ipv4-unicast redistribute static metric '50'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast maximum-prefix '45'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast nexthop-self
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast allowas-in number '4'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast as-override
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast attribute-unchanged med
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast default-originate route-map 'map01'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast distribute-list export '10'
# vyos@vyos:~$
#
#
# # Module Execution:
# "after": {
# "address_family": [
# {
# "afi": "ipv4",
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# }
# ],
# "as_number": 100,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4",
# "allowas_in": 4,
# "as_override": true,
# "attribute_unchanged": {
# "med": true
# }
# },
# {
# "afi": "ipv6",
# "default_originate": "map01",
# "distribute_list": [
# {
# "acl": 10,
# "action": "export"
# }
# ]
# }
# ],
# "neighbor_address": "100.11.34.12"
# },
# {
# "address_family": [
# {
# "afi": "ipv4"
# },
# {
# "afi": "ipv6",
# "maximum_prefix": 45,
# "nexthop_self": true
# }
# ],
# "neighbor_address": "20.33.1.1/24"
# }
# ]
# },
# "before": {
# "address_family": [
# {
# "afi": "ipv4",
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# }
# ],
# "as_number": 100,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4",
# "maximum_prefix": 45,
# "nexthop_self": true,
# "route_map": [
# {
# "action": "export",
# "route_map": "map01"
# },
# {
# "action": "import",
# "route_map": "map01"
# }
# ],
# "weight": 50
# }
# ],
# "neighbor_address": "100.11.34.12"
# },
# {
# "address_family": [
# {
# "afi": "ipv4",
# "allowas_in": 4,
# "as_override": true,
# "attribute_unchanged": {
# "med": true
# }
# },
# {
# "afi": "ipv6",
# "default_originate": "map01",
# "distribute_list": [
# {
# "acl": 10,
# "action": "export"
# }
# ]
# }
# ],
# "neighbor_address": "20.33.1.1/24"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast distribute-list",
# "delete protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast default-originate",
# "delete protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast attribute-unchanged",
# "delete protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast as-override",
# "delete protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast allowas-in",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast weight",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast nexthop-self",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast maximum-prefix",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast allowas-in number 4",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast as-override",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast attribute-unchanged med",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast default-originate route-map map01",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast distribute-list export 10",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast maximum-prefix 45",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast nexthop-self"
# ],
# Using overridden
# vyos@vyos:~$ show configuration commands | match "set protocols bgp"
# set protocols bgp 100 address-family ipv4-unicast network 35.1.1.0/24 backdoor
# set protocols bgp 100 address-family ipv4-unicast redistribute static metric '50'
# set protocols bgp 100 address-family ipv6-unicast aggregate-address 6601:1:1:1::/64 summary-only
# set protocols bgp 100 address-family ipv6-unicast network 5001:1:1:1::/64 route-map 'map01'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast maximum-prefix '45'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast nexthop-self
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast allowas-in number '4'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast as-override
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast attribute-unchanged med
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast default-originate route-map 'map01'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast distribute-list export '10'
# vyos@vyos:~$
- name: Override
vyos.vyos.vyos_bgp_address_family:
config:
as_number: "100"
neighbors:
- neighbor_address: "100.11.34.12"
address_family:
- afi: "ipv6"
maximum_prefix: 45
nexthop_self: True
route_map:
- action: "import"
route_map: "map01"
address_family:
- afi: "ipv4"
aggregate_address:
- prefix: "60.9.2.0/24"
summary_only: True
- afi: "ipv6"
redistribute:
- protocol: "static"
metric: 50
state: overridden
# Aft=validate-moduleser State
# vyos@vyos:~$ show configuration commands | match "set protocols bgp"
# set protocols bgp 100 address-family ipv4-unicast aggregate-address 60.9.2.0/24 summary-only
# set protocols bgp 100 address-family ipv6-unicast redistribute static metric '50'
# set protocols bgp 100 neighbor 20.33.1.1/24
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast maximum-prefix '45'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast nexthop-self
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast route-map import 'map01'
# vyos@vyos:~$
# Module Execution:
# "after": {
# "address_family": [
# {
# "afi": "ipv4",
# "aggregate_address": [
# {
# "prefix": "60.9.2.0/24",
# "summary_only": true
# }
# ]
# },
# {
# "afi": "ipv6",
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# }
# ],
# "as_number": 100,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4"
# },
# {
# "afi": "ipv6",
# "maximum_prefix": 45,
# "nexthop_self": true,
# "route_map": [
# {
# "action": "import",
# "route_map": "map01"
# }
# ]
# }
# ],
# "neighbor_address": "100.11.34.12"
# }
# ]
# },
# "before": {
# "address_family": [
# {
# "afi": "ipv4",
# "networks": [
# {
# "backdoor": true,
# "prefix": "35.1.1.0/24"
# }
# ],
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# },
# {
# "afi": "ipv6",
# "aggregate_address": [
# {
# "prefix": "6601:1:1:1::/64",
# "summary_only": true
# }
# ],
# "networks": [
# {
# "prefix": "5001:1:1:1::/64",
# "route_map": "map01"
# }
# ]
# }
# ],
# "as_number": 100,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4",
# "allowas_in": 4,
# "as_override": true,
# "attribute_unchanged": {
# "med": true
# }
# },
# {
# "afi": "ipv6",
# "default_originate": "map01",
# "distribute_list": [
# {
# "acl": 10,
# "action": "export"
# }
# ]
# }
# ],
# "neighbor_address": "100.11.34.12"
# },
# {
# "address_family": [
# {
# "afi": "ipv4"
# },
# {
# "afi": "ipv6",
# "maximum_prefix": 45,
# "nexthop_self": true
# }
# ],
# "neighbor_address": "20.33.1.1/24"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete protocols bgp 100 neighbor 20.33.1.1/24 address-family",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast distribute-list",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast default-originate",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast attribute-unchanged",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast as-override",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast allowas-in",
# "delete protocols bgp 100 address-family ipv6 aggregate-address",
# "delete protocols bgp 100 address-family ipv6 network",
# "delete protocols bgp 100 address-family ipv4 network",
# "delete protocols bgp 100 address-family ipv4 redistribute",
# "set protocols bgp 100 address-family ipv4-unicast aggregate-address 60.9.2.0/24 summary-only",
# "set protocols bgp 100 address-family ipv6-unicast redistribute static metric 50",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast maximum-prefix 45",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast nexthop-self",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast route-map import map01"
# ],
#
# Using deleted:
# Before State:
# vyos@vyos:~$ show configuration commands | match "set protocols bgp"
# set protocols bgp 100 address-family ipv4-unicast aggregate-address 60.9.2.0/24 summary-only
# set protocols bgp 100 address-family ipv4-unicast redistribute static metric '50'
# set protocols bgp 100 address-family ipv6-unicast redistribute static metric '50'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast allowas-in number '4'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast as-override
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast attribute-unchanged med
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast default-originate route-map 'map01'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast distribute-list export '10'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast maximum-prefix '45'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast nexthop-self
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map export 'map01'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map import 'map01'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast weight '50'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast maximum-prefix '45'
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast nexthop-self
# set protocols bgp 100 neighbor 100.11.34.12 address-family ipv6-unicast route-map import 'map01'
# vyos@vyos:~$
- name: Delete
vyos.vyos.vyos_bgp_address_family:
config:
as_number: "100"
neighbors:
- neighbor_address: "20.33.1.1/24"
address_family:
- afi: "ipv6"
- neighbor_address: "100.11.34.12"
address_family:
- afi: "ipv4"
state: deleted
# After State:
# vyos@vyos:~$ show configuration commands | match "set protocols bgp"
# set protocols bgp 100 address-family ipv6-unicast redistribute static metric '50'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast allowas-in number '4'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast as-override
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast attribute-unchanged med
# set protocols bgp 100 neighbor 100.11.34.12
# vyos@vyos:~$
#
#
# Module Execution:
#
# "after": {
# "address_family": [
# {
# "afi": "ipv6",
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# }
# ],
# "as_number": 100,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4",
# "allowas_in": 4,
# "as_override": true,
# "attribute_unchanged": {
# "med": true
# }
# }
# ],
# "neighbor_address": "20.33.1.1/24"
# }
# ]
# },
# "before": {
# "address_family": [
# {
# "afi": "ipv4",
# "aggregate_address": [
# {
# "prefix": "60.9.2.0/24",
# "summary_only": true
# }
# ],
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# },
# {
# "afi": "ipv6",
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# }
# ],
# "as_number": 100,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4",
# "maximum_prefix": 45,
# "nexthop_self": true,
# "route_map": [
# {
# "action": "export",
# "route_map": "map01"
# },
# {
# "action": "import",
# "route_map": "map01"
# }
# ],
# "weight": 50
# },
# {
# "afi": "ipv6",
# "maximum_prefix": 45,
# "nexthop_self": true,
# "route_map": [
# {
# "action": "import",
# "route_map": "map01"
# }
# ]
# }
# ],
# "neighbor_address": "100.11.34.12"
# },
# {
# "address_family": [
# {
# "afi": "ipv4",
# "allowas_in": 4,
# "as_override": true,
# "attribute_unchanged": {
# "med": true
# }
# },
# {
# "afi": "ipv6",
# "default_originate": "map01",
# "distribute_list": [
# {
# "acl": 10,
# "action": "export"
# }
# ]
# }
# ],
# "neighbor_address": "20.33.1.1/24"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete protocols bgp 100 address-family ipv4-unicast",
# "delete protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast",
# "delete protocols bgp 100 neighbor 100.11.34.12 address-family"
# ],
#
# using parsed:
# parsed.cfg
# set protocols bgp 65536 address-family ipv4-unicast aggregate-address 192.0.2.0/24 as-set
# set protocols bgp 65536 address-family ipv4-unicast network 192.1.13.0/24 route-map 'map01'
# set protocols bgp 65536 address-family ipv4-unicast network 192.2.13.0/24 backdoor
# set protocols bgp 65536 address-family ipv6-unicast redistribute ripng metric '20'
# set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv4-unicast route-map export 'map01'
# set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv4-unicast soft-reconfiguration inbound
# set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop
- name: parse configs
vyos.vyos.vyos_bgp_address_family:
running_config: "{{ lookup('file', './parsed.cfg') }}"
state: parsed
# Module Execution:
# "parsed": {
# "address_family": [
# {
# "afi": "ipv4",
# "aggregate_address": [
# {
# "as_set": true,
# "prefix": "192.0.2.0/24"
# }
# ],
# "networks": [
# {
# "prefix": "192.1.13.0/24",
# "route_map": "map01"
# },
# {
# "backdoor": true,
# "prefix": "192.2.13.0/24"
# }
# ]
# },
# {
# "afi": "ipv6",
# "redistribute": [
# {
# "metric": 20,
# "protocol": "ripng"
# }
# ]
# }
# ],
# "as_number": 65536,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4",
# "route_map": [
# {
# "action": "export",
# "route_map": "map01"
# }
# ],
# "soft_reconfiguration": true
# }
# ],
# "neighbor_address": "192.0.2.25"
# },
# {
# "address_family": [
# {
# "afi": "ipv6",
# "attribute_unchanged": {
# "next_hop": true
# }
# }
# ],
# "neighbor_address": "203.0.113.5"
# }
# ]
#
# Using gathered:
# Native config:
# vyos@vyos:~$ show configuration commands | match "set protocols bgp"
# set protocols bgp 100 address-family ipv4-unicast network 35.1.1.0/24 backdoor
# set protocols bgp 100 address-family ipv4-unicast redistribute static metric '50'
# set protocols bgp 100 address-family ipv6-unicast aggregate-address 6601:1:1:1::/64 summary-only
# set protocols bgp 100 address-family ipv6-unicast network 5001:1:1:1::/64 route-map 'map01'
# set protocols bgp 100 address-family ipv6-unicast redistribute static metric '50'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast allowas-in number '4'
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast as-override
# set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast attribute-unchanged med
# set protocols bgp 100 neighbor 100.11.34.12
- name: gather configs
vyos.vyos.vyos_bgp_address_family:
state: gathered
# Module Execution:
# "gathered": {
# "address_family": [
# {
# "afi": "ipv4",
# "networks": [
# {
# "backdoor": true,
# "prefix": "35.1.1.0/24"
# }
# ],
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# },
# {
# "afi": "ipv6",
# "aggregate_address": [
# {
# "prefix": "6601:1:1:1::/64",
# "summary_only": true
# }
# ],
# "networks": [
# {
# "prefix": "5001:1:1:1::/64",
# "route_map": "map01"
# }
# ],
# "redistribute": [
# {
# "metric": 50,
# "protocol": "static"
# }
# ]
# }
# ],
# "as_number": 100,
# "neighbors": [
# {
# "address_family": [
# {
# "afi": "ipv4",
# "allowas_in": 4,
# "as_override": true,
# "attribute_unchanged": {
# "med": true
# }
# }
# ],
# "neighbor_address": "20.33.1.1/24"
# }
# ]
# Using rendered:
- name: Render
vyos.vyos.vyos_bgp_address_family:
config:
as_number: "100"
address_family:
- afi: "ipv4"
redistribute:
- protocol: "static"
metric: 50
neighbors:
- neighbor_address: "20.33.1.1/24"
address_family:
- afi: "ipv4"
allowas_in: 4
as_override: True
attribute_unchanged:
med: True
- afi: "ipv6"
default_originate: "map01"
distribute_list:
- action: "export"
acl: 10
- neighbor_address: "100.11.34.12"
address_family:
- afi: "ipv4"
maximum_prefix: 45
nexthop_self: True
route_map:
- action: "export"
route_map: "map01"
- action: "import"
route_map: "map01"
weight: 50
state: rendered
# Module Execution:
# "rendered": [
# "set protocols bgp 100 address-family ipv4-unicast redistribute static metric 50",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast allowas-in number 4",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast as-override",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv4-unicast attribute-unchanged med",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast default-originate route-map map01",
# "set protocols bgp 100 neighbor 20.33.1.1/24 address-family ipv6-unicast distribute-list export 10",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast maximum-prefix 45",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast nexthop-self",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map export map01",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast route-map import map01",
# "set protocols bgp 100 neighbor 100.11.34.12 address-family ipv4-unicast weight 50"
# ]
"""
from ansible.module_utils.basic import AnsibleModule
from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.bgp_address_family.bgp_address_family import (
Bgp_address_familyArgs,
)
from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.bgp_address_family.bgp_address_family import (
Bgp_address_family,
)
def main():
"""
Main entry point for module execution
:returns: the result form module invocation
"""
module = AnsibleModule(
argument_spec=Bgp_address_familyArgs.argument_spec,
mutually_exclusive=[],
required_if=[],
supports_check_mode=False,
)
result = Bgp_address_family(module).execute_module()
module.exit_json(**result)
if __name__ == "__main__":
main()

File Metadata

Mime Type
text/x-script.python
Expires
Mon, Dec 15, 9:08 PM (2 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3063160
Default Alt Text
vyos_bgp_address_family.py (44 KB)

Event Timeline