summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGomathiselviS <gomathiselvi@gmail.com>2021-04-22 13:16:39 -0400
committerGitHub <noreply@github.com>2021-04-22 17:16:39 +0000
commitdccc17eb6956a9a09485b90198219559acd3a209 (patch)
treedaf2edb77b224d49929ce058400d75f983c7d1a0
parentf3fdc546edc7a8a6c9afda798a17ab4e5687de7b (diff)
downloadvyos-ansible-old-dccc17eb6956a9a09485b90198219559acd3a209.tar.gz
vyos-ansible-old-dccc17eb6956a9a09485b90198219559acd3a209.zip
VYOS: Mask sensitive key values from module result (#151)
VYOS: Mask sensitive key values from module result Reviewed-by: https://github.com/apps/ansible-zuul
-rw-r--r--changelogs/fragments/no_log_mask.yaml3
-rw-r--r--docs/vyos.vyos.vyos_bgp_address_family_module.rst2085
-rw-r--r--galaxy.yml2
-rw-r--r--plugins/module_utils/network/vyos/argspec/bgp_global/bgp_global.py2
-rw-r--r--plugins/module_utils/network/vyos/argspec/ospf_interfaces/ospf_interfaces.py12
-rw-r--r--plugins/module_utils/network/vyos/argspec/ospfv2/ospfv2.py10
-rw-r--r--plugins/module_utils/network/vyos/facts/bgp_global/bgp_global.py8
-rw-r--r--plugins/module_utils/network/vyos/facts/ospf_interfaces/ospf_interfaces.py11
-rw-r--r--plugins/module_utils/network/vyos/rm_templates/bgp_address_family.py4
-rw-r--r--plugins/module_utils/network/vyos/rm_templates/bgp_global.py4
-rw-r--r--plugins/module_utils/network/vyos/rm_templates/ospf_interfaces.py4
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/vars/main.yaml2
-rw-r--r--tests/sanity/ignore-2.11.txt3
-rw-r--r--tests/sanity/ignore-2.12.txt3
14 files changed, 2128 insertions, 25 deletions
diff --git a/changelogs/fragments/no_log_mask.yaml b/changelogs/fragments/no_log_mask.yaml
new file mode 100644
index 0000000..65e3edf
--- /dev/null
+++ b/changelogs/fragments/no_log_mask.yaml
@@ -0,0 +1,3 @@
+---
+security_fixes:
+ - Mask values of sensitive keys in module result.
diff --git a/docs/vyos.vyos.vyos_bgp_address_family_module.rst b/docs/vyos.vyos.vyos_bgp_address_family_module.rst
new file mode 100644
index 0000000..6ba0dc2
--- /dev/null
+++ b/docs/vyos.vyos.vyos_bgp_address_family_module.rst
@@ -0,0 +1,2085 @@
+.. _vyos.vyos.vyos_bgp_address_family_module:
+
+
+*********************************
+vyos.vyos.vyos_bgp_address_family
+*********************************
+
+**BGP Address Family Resource Module.**
+
+
+Version added: 2.1.0
+
+.. contents::
+ :local:
+ :depth: 1
+
+
+Synopsis
+--------
+- This module manages BGP address family configuration of interfaces on devices running VYOS.
+
+
+
+
+Parameters
+----------
+
+.. raw:: html
+
+ <table border=0 cellpadding=0 class="documentation-table">
+ <tr>
+ <th colspan="5">Parameter</th>
+ <th>Choices/<font color="blue">Defaults</font></th>
+ <th width="100%">Comments</th>
+ </tr>
+ <tr>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>config</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>A dict of BGP global configuration for interfaces.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>address_family</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>BGP address-family parameters.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>afi</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>ipv4</li>
+ <li>ipv6</li>
+ </ul>
+ </td>
+ <td>
+ <div>BGP address family settings.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>aggregate_address</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>BGP aggregate network.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>as_set</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Generate AS-set path information for this aggregate address.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>prefix</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>BGP aggregate network.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>summary_only</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Announce the aggregate summary network only.</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>networks</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>BGP network</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>backdoor</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Network as a backdoor route.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>path_limit</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>AS path hop count limit</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>prefix</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>BGP network address</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>route_map</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Route-map to modify route attributes</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>redistribute</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Redistribute routes from other protocols into BGP</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>metric</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Metric for redistributed routes.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>protocol</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>connected</li>
+ <li>kernel</li>
+ <li>ospf</li>
+ <li>ospfv3</li>
+ <li>rip</li>
+ <li>ripng</li>
+ <li>static</li>
+ </ul>
+ </td>
+ <td>
+ <div>types of routes to be redistributed.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>route_map</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Route map to filter redistributed routes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>table</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Redistribute non-main Kernel Routing Table.</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>as_number</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>AS number.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="4">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>neighbors</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>BGP neighbor</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>address_family</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>address family.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>afi</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>ipv4</li>
+ <li>ipv6</li>
+ </ul>
+ </td>
+ <td>
+ <div>BGP neighbor parameters.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>allowas_in</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Number of occurrences of AS number.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>as_override</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>AS for routes sent to this neighbor to be the local AS.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>attribute_unchanged</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>BGP attributes are sent unchanged.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>as_path</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>as_path attribute</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>med</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>med attribute</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>next_hop</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>next_hop attribute</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>capability</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Advertise capabilities to this neighbor.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>dynamic</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Advertise dynamic capability to this neighbor.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>orf</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>send</li>
+ <li>receive</li>
+ </ul>
+ </td>
+ <td>
+ <div>Advertise ORF capability to this neighbor.</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>default_originate</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Send default route to this neighbor</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>distribute_list</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Access-list to filter route updates to/from this neighbor.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>acl</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Acess-list number.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>action</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>export</li>
+ <li>import</li>
+ </ul>
+ </td>
+ <td>
+ <div>Access-list to filter outgoing/incoming route updates to this neighbor</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>filter_list</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>As-path-list to filter route updates to/from this neighbor.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>action</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>export</li>
+ <li>import</li>
+ </ul>
+ </td>
+ <td>
+ <div>filter outgoing/incoming route updates</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>path_list</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>As-path-list to filter</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>maximum_prefix</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Maximum number of prefixes to accept from this neighbor nexthop-self Nexthop for routes sent to this neighbor to be the local router.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>nexthop_local</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Nexthop attributes.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>nexthop_self</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Nexthop for routes sent to this neighbor to be the local router.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>peer_group</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>IPv4 peer group for this peer</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>prefix_list</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Prefix-list to filter route updates to/from this neighbor.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>action</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>export</li>
+ <li>import</li>
+ </ul>
+ </td>
+ <td>
+ <div>filter outgoing/incoming route updates</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>prefix_list</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Prefix-list to filter</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>remove_private_as</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Remove private AS numbers from AS path in outbound route updates</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>route_map</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Route-map to filter route updates to/from this neighbor.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>action</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>export</li>
+ <li>import</li>
+ </ul>
+ </td>
+ <td>
+ <div>filter outgoing/incoming route updates</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>route_map</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>route-map to filter</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>route_reflector_client</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Neighbor as a route reflector client</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>route_server_client</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Neighbor is route server client</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>soft_reconfiguration</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Soft reconfiguration for neighbor</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>unsupress_map</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Route-map to selectively unsuppress suppressed routes</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>weight</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Default weight for routes from this neighbor</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td class="elbow-placeholder"></td>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>neighbor_address</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>BGP neighbor address (v4/v6).</div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>running_config</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>This option is used only with state <em>parsed</em>.</div>
+ <div>The value of this option should be the output received from the IOS device by executing the command <b>show configuration command | match bgp</b>.</div>
+ <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into Ansible structured data as per the resource module&#x27;s argspec and the value is then returned in the <em>parsed</em> key within the result.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="5">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>state</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>merged</b>&nbsp;&larr;</div></li>
+ <li>replaced</li>
+ <li>deleted</li>
+ <li>gathered</li>
+ <li>parsed</li>
+ <li>rendered</li>
+ <li>purged</li>
+ <li>overridden</li>
+ </ul>
+ </td>
+ <td>
+ <div>The state the configuration should be left in.</div>
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+
+
+
+Examples
+--------
+
+.. code-block:: yaml
+
+ # 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"
+ # ]
+
+
+
+
+Status
+------
+
+
+Authors
+~~~~~~~
+
+- Gomathi Selvi Srinivasan (@GomathiselviS)
diff --git a/galaxy.yml b/galaxy.yml
index 00426bf..3eb12ba 100644
--- a/galaxy.yml
+++ b/galaxy.yml
@@ -2,7 +2,7 @@
authors:
- Ansible Network Community (ansible-network)
dependencies:
- "ansible.netcommon": ">=2.0.0"
+ "ansible.netcommon": ">=2.0.1"
license_file: LICENSE
name: vyos
description: Ansible Network Collection for VYOS devices.
diff --git a/plugins/module_utils/network/vyos/argspec/bgp_global/bgp_global.py b/plugins/module_utils/network/vyos/argspec/bgp_global/bgp_global.py
index 4192a84..da56aa9 100644
--- a/plugins/module_utils/network/vyos/argspec/bgp_global/bgp_global.py
+++ b/plugins/module_utils/network/vyos/argspec/bgp_global/bgp_global.py
@@ -174,7 +174,7 @@ class Bgp_globalArgs(object): # pylint: disable=R0903
},
"disable_connected_check": {"type": "bool"},
"address": {"type": "str"},
- "password": {"type": "str"},
+ "password": {"type": "str", "no_log": True},
"disable_send_community": {
"type": "str",
"choices": ["extended", "standard"],
diff --git a/plugins/module_utils/network/vyos/argspec/ospf_interfaces/ospf_interfaces.py b/plugins/module_utils/network/vyos/argspec/ospf_interfaces/ospf_interfaces.py
index e7dd10c..71ba63b 100644
--- a/plugins/module_utils/network/vyos/argspec/ospf_interfaces/ospf_interfaces.py
+++ b/plugins/module_utils/network/vyos/argspec/ospf_interfaces/ospf_interfaces.py
@@ -71,12 +71,18 @@ class Ospf_interfacesArgs(object): # pylint: disable=R0903
"authentication": {
"type": "dict",
"options": {
- "plaintext_password": {"type": "str"},
+ "plaintext_password": {
+ "type": "str",
+ "no_log": True,
+ },
"md5_key": {
"type": "dict",
+ "no_log": False,
"options": {
- "key_id": {"type": "int"},
- "key": {"type": "str"},
+ "key_id": {
+ "type": "int",
+ },
+ "key": {"type": "str", "no_log": True},
},
},
},
diff --git a/plugins/module_utils/network/vyos/argspec/ospfv2/ospfv2.py b/plugins/module_utils/network/vyos/argspec/ospfv2/ospfv2.py
index b8e915c..0061e79 100644
--- a/plugins/module_utils/network/vyos/argspec/ospfv2/ospfv2.py
+++ b/plugins/module_utils/network/vyos/argspec/ospfv2/ospfv2.py
@@ -174,11 +174,17 @@ class Ospfv2Args(object): # pylint: disable=R0903
"elements": "dict",
"options": {
"key_id": {"type": "int"},
- "md5_key": {"type": "str"},
+ "md5_key": {
+ "type": "str",
+ "no_log": True,
+ },
},
"type": "list",
},
- "plaintext_password": {"type": "str"},
+ "plaintext_password": {
+ "type": "str",
+ "no_log": True,
+ },
},
"type": "dict",
},
diff --git a/plugins/module_utils/network/vyos/facts/bgp_global/bgp_global.py b/plugins/module_utils/network/vyos/facts/bgp_global/bgp_global.py
index 3cfa83c..1efd877 100644
--- a/plugins/module_utils/network/vyos/facts/bgp_global/bgp_global.py
+++ b/plugins/module_utils/network/vyos/facts/bgp_global/bgp_global.py
@@ -59,7 +59,9 @@ class Bgp_globalFacts(object):
if "address-family" not in resource:
config_lines.append(re.sub("'", "", resource))
- bgp_global_parser = Bgp_globalTemplate(lines=config_lines)
+ bgp_global_parser = Bgp_globalTemplate(
+ lines=config_lines, module=self._module
+ )
objs = bgp_global_parser.parse()
if "neighbor" in objs:
@@ -79,7 +81,9 @@ class Bgp_globalFacts(object):
ansible_facts["ansible_network_resources"].pop("bgp_global", None)
params = utils.remove_empties(
- utils.validate_config(self.argument_spec, {"config": objs})
+ bgp_global_parser.validate_config(
+ self.argument_spec, {"config": objs}, redact=True
+ )
)
facts["bgp_global"] = params.get("config", [])
diff --git a/plugins/module_utils/network/vyos/facts/ospf_interfaces/ospf_interfaces.py b/plugins/module_utils/network/vyos/facts/ospf_interfaces/ospf_interfaces.py
index 15ac92a..7ef05cb 100644
--- a/plugins/module_utils/network/vyos/facts/ospf_interfaces/ospf_interfaces.py
+++ b/plugins/module_utils/network/vyos/facts/ospf_interfaces/ospf_interfaces.py
@@ -69,6 +69,9 @@ class Ospf_interfacesFacts(object):
"""
facts = {}
objs = []
+ ospf_interfaces_parser = Ospf_interfacesTemplate(
+ lines=[], module=self._module
+ )
if not data:
data = self.get_device_data(connection)
@@ -78,7 +81,7 @@ class Ospf_interfacesFacts(object):
resources = self.get_config_set(data)
for resource in resources:
ospf_interfaces_parser = Ospf_interfacesTemplate(
- lines=resource.split("\n")
+ lines=resource.split("\n"), module=self._module
)
objs = ospf_interfaces_parser.parse()
for key, sortv in [("address_family", "afi")]:
@@ -89,8 +92,10 @@ class Ospf_interfacesFacts(object):
ansible_facts["ansible_network_resources"].pop("ospf_interfaces", None)
facts = {"ospf_interfaces": []}
params = utils.remove_empties(
- utils.validate_config(
- self.argument_spec, {"config": ospf_interfaces_facts}
+ ospf_interfaces_parser.validate_config(
+ self.argument_spec,
+ {"config": ospf_interfaces_facts},
+ redact=True,
)
)
if params.get("config"):
diff --git a/plugins/module_utils/network/vyos/rm_templates/bgp_address_family.py b/plugins/module_utils/network/vyos/rm_templates/bgp_address_family.py
index 55e2200..ae953e4 100644
--- a/plugins/module_utils/network/vyos/rm_templates/bgp_address_family.py
+++ b/plugins/module_utils/network/vyos/rm_templates/bgp_address_family.py
@@ -282,10 +282,10 @@ def _tmplt_bgp_af_neighbor(config_data):
class Bgp_address_familyTemplate(NetworkTemplate):
- def __init__(self, lines=None):
+ def __init__(self, lines=None, module=None):
prefix = {"set": "set", "remove": "delete"}
super(Bgp_address_familyTemplate, self).__init__(
- lines=lines, tmplt=self, prefix=prefix
+ lines=lines, tmplt=self, prefix=prefix, module=module
)
# fmt: off
diff --git a/plugins/module_utils/network/vyos/rm_templates/bgp_global.py b/plugins/module_utils/network/vyos/rm_templates/bgp_global.py
index aff6258..cb9907b 100644
--- a/plugins/module_utils/network/vyos/rm_templates/bgp_global.py
+++ b/plugins/module_utils/network/vyos/rm_templates/bgp_global.py
@@ -218,10 +218,10 @@ def _tmplt_bgp_params_distance(config_data):
class Bgp_globalTemplate(NetworkTemplate):
- def __init__(self, lines=None):
+ def __init__(self, lines=None, module=None):
prefix = {"set": "set", "remove": "delete"}
super(Bgp_globalTemplate, self).__init__(
- lines=lines, tmplt=self, prefix=prefix
+ lines=lines, tmplt=self, prefix=prefix, module=module
)
# fmt: off
diff --git a/plugins/module_utils/network/vyos/rm_templates/ospf_interfaces.py b/plugins/module_utils/network/vyos/rm_templates/ospf_interfaces.py
index 460e6b0..1e3afbe 100644
--- a/plugins/module_utils/network/vyos/rm_templates/ospf_interfaces.py
+++ b/plugins/module_utils/network/vyos/rm_templates/ospf_interfaces.py
@@ -302,10 +302,10 @@ def _tmplt_ospf_int_passive(config_data):
class Ospf_interfacesTemplate(NetworkTemplate):
- def __init__(self, lines=None):
+ def __init__(self, lines=None, module=None):
prefix = {"set": "set", "remove": "delete"}
super(Ospf_interfacesTemplate, self).__init__(
- lines=lines, tmplt=self, prefix=prefix
+ lines=lines, tmplt=self, prefix=prefix, module=module
)
# fmt: off
diff --git a/tests/integration/targets/vyos_ospf_interfaces/vars/main.yaml b/tests/integration/targets/vyos_ospf_interfaces/vars/main.yaml
index a98d351..f585cbc 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/vars/main.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/vars/main.yaml
@@ -32,7 +32,7 @@ replaced:
- delete interfaces ethernet eth0 ipv6 ospfv3 instance-id 33
- delete interfaces ethernet eth0 ipv6 ospfv3 mtu-ignore
- set interfaces bonding bond2 ip ospf bandwidth 70
- - set interfaces bonding bond2 ip ospf authentication md5 key-id 10 md5-key 1111111111232345
+ - set interfaces bonding bond2 ip ospf authentication md5 key-id 10 md5-key ********
after:
- address_family:
diff --git a/tests/sanity/ignore-2.11.txt b/tests/sanity/ignore-2.11.txt
index d9ecb5c..a44822b 100644
--- a/tests/sanity/ignore-2.11.txt
+++ b/tests/sanity/ignore-2.11.txt
@@ -1,6 +1,3 @@
plugins/action/vyos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
plugins/module_utils/network/vyos/config/ospf_interfaces/ospf_interfaces.py compile-2.6!skip
plugins/module_utils/network/vyos/config/ospf_interfaces/ospf_interfaces.py import-2.6!skip
-plugins/modules/vyos_bgp_global.py validate-modules:no-log-needed # temporary workaround for no-log
-plugins/modules/vyos_ospf_interfaces.py validate-modules:no-log-needed # temporary workaround for no-log
-plugins/modules/vyos_ospfv2.py validate-modules:no-log-needed # temporary workaround for no-log
diff --git a/tests/sanity/ignore-2.12.txt b/tests/sanity/ignore-2.12.txt
index d9ecb5c..a44822b 100644
--- a/tests/sanity/ignore-2.12.txt
+++ b/tests/sanity/ignore-2.12.txt
@@ -1,6 +1,3 @@
plugins/action/vyos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
plugins/module_utils/network/vyos/config/ospf_interfaces/ospf_interfaces.py compile-2.6!skip
plugins/module_utils/network/vyos/config/ospf_interfaces/ospf_interfaces.py import-2.6!skip
-plugins/modules/vyos_bgp_global.py validate-modules:no-log-needed # temporary workaround for no-log
-plugins/modules/vyos_ospf_interfaces.py validate-modules:no-log-needed # temporary workaround for no-log
-plugins/modules/vyos_ospfv2.py validate-modules:no-log-needed # temporary workaround for no-log