diff --git a/README.md b/README.md
index 8964015..67e7a3b 100644
--- a/README.md
+++ b/README.md
@@ -1,172 +1,171 @@
# VyOS Collection
[![CI](https://zuul-ci.org/gated.svg)](https://dashboard.zuul.ansible.com/t/ansible/project/github.com/ansible-collections/vyos.vyos)
The Ansible VyOS collection includes a variety of Ansible content to help automate the management of VyOS network appliances.
This collection has been tested against VyOS 1.1.8 (helium).
## Ansible version compatibility
This collection has been tested against following Ansible versions: **>=2.9.10**.
Plugins and modules within a collection may be tested with only specific Ansible versions.
A collection may contain metadata that identifies these versions.
PEP440 is the schema used to describe the versions of Ansible.
### Supported connections
The VyOS collection supports ``network_cli`` connections.
## Included content
### Cliconf plugins
Name | Description
--- | ---
[vyos.vyos.vyos](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_cliconf.rst)|Use vyos cliconf to run command on VyOS platform
### Modules
Name | Description
--- | ---
[vyos.vyos.vyos_banner](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_banner_module.rst)|Manage multiline banners on VyOS devices
[vyos.vyos.vyos_bgp_address_family](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_bgp_address_family_module.rst)|BGP Address Family Resource Module.
[vyos.vyos.vyos_bgp_global](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_bgp_global_module.rst)|BGP Global Resource Module.
[vyos.vyos.vyos_command](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_command_module.rst)|Run one or more commands on VyOS devices
[vyos.vyos.vyos_config](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_config_module.rst)|Manage VyOS configuration on remote device
[vyos.vyos.vyos_facts](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_facts_module.rst)|Get facts about vyos devices.
[vyos.vyos.vyos_firewall_global](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_firewall_global_module.rst)|FIREWALL global resource module
[vyos.vyos.vyos_firewall_interfaces](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_firewall_interfaces_module.rst)|FIREWALL interfaces resource module
[vyos.vyos.vyos_firewall_rules](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_firewall_rules_module.rst)|FIREWALL rules resource module
[vyos.vyos.vyos_interface](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_interface_module.rst)|(deprecated, removed after 2022-06-01) Manage Interface on VyOS network devices
[vyos.vyos.vyos_interfaces](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_interfaces_module.rst)|Interfaces resource module
[vyos.vyos.vyos_l3_interface](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_l3_interface_module.rst)|(deprecated, removed after 2022-06-01) Manage L3 interfaces on VyOS network devices
[vyos.vyos.vyos_l3_interfaces](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_l3_interfaces_module.rst)|L3 interfaces resource module
[vyos.vyos.vyos_lag_interfaces](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_lag_interfaces_module.rst)|LAG interfaces resource module
[vyos.vyos.vyos_linkagg](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_linkagg_module.rst)|(deprecated, removed after 2022-06-01) Manage link aggregation groups on VyOS network devices
[vyos.vyos.vyos_lldp](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_lldp_module.rst)|(deprecated, removed after 2022-06-01) Manage LLDP configuration on VyOS network devices
[vyos.vyos.vyos_lldp_global](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_lldp_global_module.rst)|LLDP global resource module
[vyos.vyos.vyos_lldp_interface](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_lldp_interface_module.rst)|(deprecated, removed after 2022-06-01) Manage LLDP interfaces configuration on VyOS network devices
[vyos.vyos.vyos_lldp_interfaces](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_lldp_interfaces_module.rst)|LLDP interfaces resource module
[vyos.vyos.vyos_logging](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_logging_module.rst)|Manage logging on network devices
[vyos.vyos.vyos_logging_global](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_logging_global_module.rst)|Logging resource module
[vyos.vyos.vyos_ntp_global](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ntp_global_module.rst)|Manages ntp modules of Vyos network devices
[vyos.vyos.vyos_ospf_interfaces](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ospf_interfaces_module.rst)|OSPF Interfaces Resource Module.
[vyos.vyos.vyos_ospfv2](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ospfv2_module.rst)|OSPFv2 resource module
[vyos.vyos.vyos_ospfv3](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ospfv3_module.rst)|OSPFV3 resource module
[vyos.vyos.vyos_ping](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ping_module.rst)|Tests reachability using ping from VyOS network devices
[vyos.vyos.vyos_prefix_lists](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_prefix_lists_module.rst)|Prefix-Lists resource module for VyOS
[vyos.vyos.vyos_route_maps](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_route_maps_module.rst)|Route Map Resource Module.
-[vyos.vyos.vyos_snmp_serve](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_snmp_serve_module.rst)|Manages snmp_server resource module
[vyos.vyos.vyos_static_route](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_static_route_module.rst)|(deprecated, removed after 2022-06-01) Manage static IP routes on Vyatta VyOS network devices
[vyos.vyos.vyos_static_routes](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_static_routes_module.rst)|Static routes resource module
[vyos.vyos.vyos_system](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_system_module.rst)|Run `set system` commands on VyOS devices
[vyos.vyos.vyos_user](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_user_module.rst)|Manage the collection of local users on VyOS device
[vyos.vyos.vyos_vlan](https://github.com/ansible-collections/vyos.vyos/blob/main/docs/vyos.vyos.vyos_vlan_module.rst)|Manage VLANs on VyOS network devices
Click the ``Content`` button to see the list of content included in this collection.
## Installing this collection
You can install the VyOS collection with the Ansible Galaxy CLI:
ansible-galaxy collection install vyos.vyos
You can also include it in a `requirements.yml` file and install it with `ansible-galaxy collection install -r requirements.yml`, using the format:
```yaml
---
collections:
- name: vyos.vyos
```
## Using this collection
This collection includes [network resource modules](https://docs.ansible.com/ansible/latest/network/user_guide/network_resource_modules.html).
### Using modules from the VyOS collection in your playbooks
You can call modules by their Fully Qualified Collection Namespace (FQCN), such as `vyos.vyos.vyos_static_routes`.
The following example task replaces configuration changes in the existing configuration on a VyOS network device, using the FQCN:
```yaml
---
- name: Replace device configurations of listed static routes with provided
configurations
register: result
vyos.vyos.vyos_static_routes: &id001
config:
- address_families:
- afi: ipv4
routes:
- dest: 192.0.2.32/28
blackhole_config:
distance: 2
next_hops:
- forward_router_address: 192.0.2.7
- forward_router_address: 192.0.2.8
- forward_router_address: 192.0.2.9
state: replaced
```
**NOTE**: For Ansible 2.9, you may not see deprecation warnings when you run your playbooks with this collection. Use this documentation to track when a module is deprecated.
### See Also:
* [VyOS Platform Options](https://docs.ansible.com/ansible/latest/network/user_guide/platform_vyos.html)
* [Ansible Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details.
## Contributing to this collection
We welcome community contributions to this collection. If you find problems, please open an issue or create a PR against the [VyOS collection repository](https://github.com/ansible-collections/vyos). See [Contributing to Ansible-maintained collections](https://docs.ansible.com/ansible/devel/community/contributing_maintained_collections.html#contributing-maintained-collections) for complete details.
You can also join us on:
- IRC - the ``#ansible-network`` [irc.libera.chat](https://libera.chat/) channel
- Slack - https://ansiblenetwork.slack.com
See the [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for details on contributing to Ansible.
### Code of Conduct
This collection follows the Ansible project's
[Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html).
Please read and familiarize yourself with this document.
## Changelogs
## Release notes
Release notes are available [here](https://github.com/ansible-collections/vyos.vyos/blob/main/CHANGELOG.rst).
## Roadmap
## More information
- [Ansible network resources](https://docs.ansible.com/ansible/latest/network/getting_started/network_resources.html)
- [Ansible Collection overview](https://github.com/ansible-collections/overview)
- [Ansible User guide](https://docs.ansible.com/ansible/latest/user_guide/index.html)
- [Ansible Developer guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html)
- [Ansible Community code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html)
## Licensing
GNU General Public License v3.0 or later.
See [LICENSE](https://www.gnu.org/licenses/gpl-3.0.txt) to see the full text.
diff --git a/changelogs/fragments/ntp_server_add_pool.yaml b/changelogs/fragments/ntp_server_add_pool.yaml
new file mode 100644
index 0000000..a6c2b48
--- /dev/null
+++ b/changelogs/fragments/ntp_server_add_pool.yaml
@@ -0,0 +1,3 @@
+---
+major_changes:
+ - Add 'pool' as value to server key in ntp_global.
diff --git a/docs/vyos.vyos.vyos_ntp_global_module.rst b/docs/vyos.vyos.vyos_ntp_global_module.rst
index 7f27493..18f0ece 100644
--- a/docs/vyos.vyos.vyos_ntp_global_module.rst
+++ b/docs/vyos.vyos.vyos_ntp_global_module.rst
@@ -1,974 +1,977 @@
.. _vyos.vyos.vyos_ntp_global_module:
*************************
vyos.vyos.vyos_ntp_global
*************************
**Manages ntp modules of Vyos network devices**
Version added: 2.4.0
.. contents::
:local:
:depth: 1
Synopsis
--------
- This module manages ntp configuration on devices running Vyos
Parameters
----------
.. raw:: html
Parameter |
Choices/Defaults |
Comments |
config
dictionary
|
|
List of configurations for ntp module
|
|
allow_clients
list
/ elements=string
|
|
Network Time Protocol (NTP) server options
|
|
listen_addresses
list
/ elements=string
|
|
local IP addresses for service to listen on
|
|
servers
list
/ elements=dictionary
|
|
Network Time Protocol (NTP) server
|
|
|
options
list
/ elements=string
|
Choices:
- noselect
- dynamic
- preempt
- prefer
+ - pool
|
server options for NTP
|
|
|
server
string
|
|
server name for NTP
|
running_config
string
|
|
This option is used only with state parsed.
The value of this option should be the output received from the VYOS device by executing the command show configuration commands | grep ntp.
The states replaced and overridden have identical behaviour for this module.
The state parsed reads the configuration from show configuration commands | grep ntp option and transforms it into Ansible structured data as per the resource module's argspec and the value is then returned in the parsed key within the result.
|
state
string
|
Choices:
- deleted
merged ←
- overridden
- replaced
- gathered
- rendered
- parsed
|
The state the configuration should be left in.
|
Notes
-----
.. note::
- Tested against vyos 1.3
- This module works with connection ``network_cli``.
Examples
--------
.. code-block:: yaml
# # -------------------
# # 1. Using merged
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Replace the existing ntp config with the new config
vyos.vyos.vyos_ntp_global:
config:
allow_clients:
- 10.6.6.0/24
listen_addresses:
- 10.1.3.1
servers:
- server: 203.0.113.0
options:
- prefer
# # Task output:
# # -------------
# "after": {
# "allow_clients": [
# "10.6.6.0/24"
# ],
# "listen_addresses": [
# "10.1.3.1"
# ],
# "servers": [
# {
# "server": "ser",
# "options": [
# "prefer"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "before": {
# },
# "changed": true,
# "commands": [
# "set system ntp allow-clients address 10.6.6.0/24",
# "set system ntp listen-address 10.1.3.1",
# "set system ntp server 203.0.113.0 prefer"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.6.6.0/24'
# set system ntp listen-address '10.1.3.1'
# set system ntp server 203.0.113.0 prefer,
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 2. Using replaced
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.4.9.0/24'
# set system ntp allow-clients address '10.4.7.0/24'
# set system ntp allow-clients address '10.1.2.0/24'
# set system ntp allow-clients address '10.2.3.0/24'
# set system ntp listen-address '10.1.9.16'
# set system ntp listen-address '10.5.3.2'
# set system ntp listen-address '10.7.9.21'
# set system ntp listen-address '10.8.9.4'
# set system ntp listen-address '10.4.5.1'
# set system ntp server 10.3.6.5 noselect
# set system ntp server 10.3.6.5 dynamic
# set system ntp server 10.3.6.5 preempt
# set system ntp server 10.3.6.5 prefer
# set system ntp server server4 noselect
# set system ntp server server4 dynamic
# set system ntp server server5
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Replace the existing ntp config with the new config
vyos.vyos.vyos_ntp_global:
config:
allow_clients:
- 10.6.6.0/24
listen_addresses:
- 10.1.3.1
servers:
- server: 203.0.113.0
options:
- prefer
state: replaced
# # Task output:
# # -------------
# "after": {
# "allow_clients": [
# "10.6.6.0/24"
# ],
# "listen_addresses": [
# "10.1.3.1"
# ],
# "servers": [
# {
# "server": "ser",
# "options": [
# "prefer"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "before": {
# "allow_clients": [
# "10.4.7.0/24",
# "10.2.3.0/24",
# "10.1.2.0/24",
# "10.4.9.0/24"
# ],
# "listen_addresses": [
# "10.7.9.21",
# "10.4.5.1",
# "10.5.3.2",
# "10.8.9.4",
# "10.1.9.16"
# ],
# "servers": [
# {
# "server": "10.3.6.5",
# "options": [
# "noselect",
# "dynamic",
# "preempt",
# "prefer"
# ]
# },
# {
# "server": "server4",
# "options": [
# "noselect",
# "dynamic"
# ]
# },
# {
# "server": "server5"
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete system ntp allow-clients address 10.4.7.0/24",
# "delete system ntp allow-clients address 10.2.3.0/24",
# "delete system ntp allow-clients address 10.1.2.0/24",
# "delete system ntp allow-clients address 10.4.9.0/24",
# "delete system ntp listen-address 10.7.9.21",
# "delete system ntp listen-address 10.4.5.1",
# "delete system ntp listen-address 10.5.3.2",
# "delete system ntp listen-address 10.8.9.4",
# "delete system ntp listen-address 10.1.9.16",
# "delete system ntp server 10.3.6.5",
# "delete system ntp server server4",
# "delete system ntp server server5",
# "set system ntp allow-clients address 10.6.6.0/24",
# "set system ntp listen-address 10.1.3.1",
# "set system ntp server 203.0.113.0 prefer"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.6.6.0/24'
# set system ntp listen-address '10.1.3.1'
# set system ntp server 203.0.113.0 prefer,
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 3. Using overridden
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.6.6.0/24'
# set system ntp listen-address '10.1.3.1'
# set system ntp server 203.0.113.0 prefer,
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Override ntp config
vyos.vyos.vyos_ntp_global:
config:
allow_clients:
- 10.3.3.0/24
listen_addresses:
- 10.7.8.1
servers:
- server: server1
options:
- dynamic
- prefer
- server: server2
options:
- noselect
- preempt
- server: serv
state: overridden
# # Task output:
# # -------------
# "after": {
# "allow_clients": [
# "10.3.3.0/24"
# ],
# "listen_addresses": [
# "10.7.8.1"
# ],
# "servers": [
# {
# "server": "serv"
# },
# {
# "server": "server1",
# "options": [
# "dynamic",
# "prefer"
# ]
# },
# {
# "server": "server2",
# "options": [
# "noselect",
# "preempt"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "before": {
# "allow_clients": [
# "10.6.6.0/24"
# ],
# "listen_addresses": [
# "10.1.3.1"
# ],
# "servers": [
# {
# "server": "ser",
# "options": [
# "prefer"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete system ntp allow-clients address 10.6.6.0/24",
# "delete system ntp listen-address 10.1.3.1",
# "delete system ntp server ser",
# "set system ntp allow-clients address 10.3.3.0/24",
# "set system ntp listen-address 10.7.8.1",
# "set system ntp server server1 dynamic",
# "set system ntp server server1 prefer",
# "set system ntp server server2 noselect",
# "set system ntp server server2 preempt",
# "set system ntp server serv"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.3.3.0/24'
# set system ntp listen-address '10.7.8.1'
# set system ntp server serv
# set system ntp server server1 dynamic
# set system ntp server server1 prefer
# set system ntp server server2 noselect
# set system ntp server server2 preempt
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 4. Using gathered
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.3.3.0/24'
# set system ntp listen-address '10.7.8.1'
# set system ntp server serv
# set system ntp server server1 dynamic
# set system ntp server server1 prefer
# set system ntp server server2 noselect
# set system ntp server server2 preempt
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Gather ntp config
vyos.vyos.vyos_ntp_global:
state: gathered
# # Task output:
# # -------------
# "gathered": {
# "allow_clients": [
# "10.3.3.0/24"
# ],
# "listen_addresses": [
# "10.7.8.1"
# ],
# "servers": [
# {
# "server": "serv"
# },
# {
# "server": "server1",
# "options": [
# "dynamic",
# "prefer"
# ]
# },
# {
# "server": "server2",
# "options": [
# "noselect",
# "preempt"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# }
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.3.3.0/24'
# set system ntp listen-address '10.7.8.1'
# set system ntp server serv
# set system ntp server server1 dynamic
# set system ntp server server1 prefer
# set system ntp server server2 noselect
# set system ntp server server2 preempt
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 5. Using deleted
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.3.3.0/24'
# set system ntp listen-address '10.7.8.1'
# set system ntp server serv
# set system ntp server server1 dynamic
# set system ntp server server1 prefer
# set system ntp server server2 noselect
# set system ntp server server2 preempt
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Delete ntp config
vyos.vyos.vyos_ntp_global:
state: deleted
# # Task output:
# # -------------
# "after": {
# "servers": [
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "before": {
# "allow_clients": [
# "10.3.3.0/24"
# ],
# "listen_addresses": [
# "10.7.8.1"
# ],
# "servers": [
# {
# "server": "serv"
# },
# {
# "server": "server1",
# "options": [
# "dynamic",
# "prefer"
# ]
# },
# {
# "server": "server2",
# "options": [
# "noselect",
# "preempt"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete system ntp allow-clients",
# "delete system ntp listen-address",
# "delete system ntp server serv",
# "delete system ntp server server1",
# "delete system ntp server server2"
#
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 6. Using rendered
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- - name: Gather ntp config
+ - name: Render ntp config
vyos.vyos.vyos_ntp_global:
config:
allow_clients:
- 10.7.7.0/24
- 10.8.8.0/24
listen_addresses:
- 10.7.9.1
servers:
- server: server7
- server: server45
options:
- noselect
- prefer
+ - pool
- server: time1.vyos.net
- server: time2.vyos.net
- server: time3.vyos.net
state: rendered
# # Task output:
# # -------------
# "rendered": [
# "set system ntp allow-clients address 10.7.7.0/24",
# "set system ntp allow-clients address 10.8.8.0/24",
# "set system ntp listen-address 10.7.9.1",
# "set system ntp server server7",
# "set system ntp server server45 noselect",
# "set system ntp server server45 prefer",
+ # "set system ntp server server45 pool",
# "set system ntp server time1.vyos.net",
# "set system ntp server time2.vyos.net",
# "set system ntp server time3.vyos.net"
# ]
# # -------------------
# # 7. Using parsed
# # -------------------
# # sample_config.cfg:
# # -------------
# "set system ntp allow-clients address 10.7.7.0/24",
# "set system ntp listen-address 10.7.9.1",
# "set system ntp server server45 noselect",
# "set system ntp allow-clients addres 10.8.6.0/24",
# "set system ntp listen-address 10.5.4.1",
# "set system ntp server server45 dynamic",
# "set system ntp server time1.vyos.net",
# "set system ntp server time2.vyos.net",
# "set system ntp server time3.vyos.net"
# # Task:
# # -------------
- name: Parse externally provided ntp configuration
vyos.vyos.vyos_ntp_global:
running_config: "{{ lookup('file', './sample_config.cfg') }}"
state: parsed
# # Task output:
# # -------------
# parsed = {
# "allow_clients": [
# "10.7.7.0/24",
# "10.8.6.0/24
# ],
# "listen_addresses": [
# "10.5.4.1",
# "10.7.9.1"
# ],
# "servers": [
# {
# "server": "server45",
# "options": [
# "noselect",
# "dynamic"
#
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
#
# ]
# }
Return Values
-------------
Common return values are documented `here `_, the following are the fields unique to this module:
.. raw:: html
Key |
Returned |
Description |
after
dictionary
|
when changed |
The resulting configuration after module execution.
Sample:
This output will always be in the same format as the module argspec.
|
before
dictionary
|
when state is merged , replaced , overridden , deleted or purged |
The configuration prior to the module execution.
Sample:
This output will always be in the same format as the module argspec.
|
commands
list
|
when state is merged , replaced , overridden , deleted or purged |
The set of commands pushed to the remote device.
Sample:
['set system ntp server server1 dynamic', 'set system ntp server server1 prefer', 'set system ntp server server2 noselect', 'set system ntp server server2 preempt', 'set system ntp server server_add preempt']
|
gathered
list
|
when state is gathered |
Facts about the network resource gathered from the remote device as structured data.
Sample:
This output will always be in the same format as the module argspec.
|
parsed
list
|
when state is parsed |
The device native config provided in running_config option parsed into structured data as per module argspec.
Sample:
This output will always be in the same format as the module argspec.
|
rendered
list
|
when state is rendered |
The provided configuration in the task rendered in device-native format (offline).
Sample:
['set system ntp server server1 dynamic', 'set system ntp server server1 prefer', 'set system ntp server server2 noselect', 'set system ntp server server2 preempt', 'set system ntp server server_add preempt']
|
Status
------
Authors
~~~~~~~
- Varshitha Yataluru (@YVarshitha)
diff --git a/plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py b/plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py
index 6326215..7ace5bb 100644
--- a/plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py
+++ b/plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py
@@ -1,72 +1,73 @@
# -*- 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)
from __future__ import absolute_import, division, print_function
__metaclass__ = type
#############################################
# WARNING #
#############################################
#
# This file is auto generated by the
# cli_rm_builder.
#
# Manually editing this file is not advised.
#
# To update the argspec make the desired changes
# in the module docstring and re-run
# cli_rm_builder.
#
#############################################
"""
The arg spec for the vyos_ntp module
"""
class Ntp_globalArgs(object): # pylint: disable=R0903
"""The arg spec for the vyos_ntp module"""
argument_spec = {
"config": {
"type": "dict",
"options": {
"allow_clients": {"type": "list", "elements": "str"},
"listen_addresses": {"type": "list", "elements": "str"},
"servers": {
"type": "list",
"elements": "dict",
"options": {
"server": {"type": "str"},
"options": {
"type": "list",
"elements": "str",
"choices": [
"noselect",
"dynamic",
+ "pool",
"preempt",
"prefer",
],
},
},
},
},
},
"running_config": {"type": "str"},
"state": {
"type": "str",
"choices": [
"deleted",
"merged",
"overridden",
"replaced",
"gathered",
"rendered",
"parsed",
],
"default": "merged",
},
} # pylint: disable=C0301
diff --git a/plugins/module_utils/network/vyos/rm_templates/ntp_global.py b/plugins/module_utils/network/vyos/rm_templates/ntp_global.py
index ac0bcbb..f4589a2 100644
--- a/plugins/module_utils/network/vyos/rm_templates/ntp_global.py
+++ b/plugins/module_utils/network/vyos/rm_templates/ntp_global.py
@@ -1,129 +1,129 @@
# -*- 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)
from __future__ import absolute_import, division, print_function
__metaclass__ = type
"""
The Ntp parser templates file. This contains
a list of parser definitions and associated functions that
facilitates both facts gathering and native command generation for
the given network resource.
"""
import re
from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import (
NetworkTemplate,
)
class NtpTemplate(NetworkTemplate):
def __init__(self, lines=None, module=None):
prefix = {"set": "set", "remove": "delete"}
super(NtpTemplate, self).__init__(
lines=lines, tmplt=self, prefix=prefix, module=module
)
# fmt: off
PARSERS = [
# set system ntp allow_clients address
{
"name": "allow_clients",
"getval": re.compile(
r"""
^set\ssystem\sntp\sallow-clients\saddress (\s(?P\S+))?
$""",
re.VERBOSE),
"setval": "system ntp allow-clients address {{allow_clients}}",
"result": {
"allow_clients": ["{{ipaddress}}"]
}
},
# set system ntp allow_clients
{
"name": "allow_clients_delete",
"getval": re.compile(
r"""
^set\ssystem\sntp\sallow-clients
$""",
re.VERBOSE),
"setval": "system ntp allow-clients",
"result": {
}
},
# set system ntp listen_address
{
"name": "listen_addresses",
"getval": re.compile(
r"""
^set\ssystem\sntp\slisten-address (\s(?P\S+))?
$""",
re.VERBOSE),
"setval": "system ntp listen-address {{listen_addresses}}",
"result": {
"listen_addresses": ["{{ip_address}}"]
}
},
# set system ntp listen_address
{
"name": "listen_addresses_delete",
"getval": re.compile(
r"""
^set\ssystem\sntp\slisten-address
$""",
re.VERBOSE),
"setval": "system ntp listen-address",
"result": {
}
},
# set system ntp server
{
"name": "server",
"getval": re.compile(
r"""
^set\ssystem\sntp\sserver (\s(?P\S+))?
$""",
re.VERBOSE),
"setval": "system ntp server {{server}}",
"result": {
"servers": {
"{{name}}": {
"server": "{{name}}"
}
}
}
},
# set system ntp server
{
"name": "options",
"getval": re.compile(
r"""
^set\ssystem\sntp\sserver
\s(?P\S+)
- \s(?Pnoselect|dynamic|preempt|prefer)?
+ \s(?Pnoselect|dynamic|pool|preempt|prefer)?
$""",
re.VERBOSE),
"setval": "system ntp server {{server}} {{options}}",
"result": {
"servers": {
"{{name}}": {
"server": "{{name}}",
"options": ["{{options}}"]
}
}
}
}
]
# fmt: on
diff --git a/plugins/modules/vyos_ntp_global.py b/plugins/modules/vyos_ntp_global.py
index 6686aa4..d06d878 100644
--- a/plugins/modules/vyos_ntp_global.py
+++ b/plugins/modules/vyos_ntp_global.py
@@ -1,812 +1,815 @@
#!/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)
"""
The module file for vyos_ntp_global
"""
from __future__ import absolute_import, division, print_function
__metaclass__ = type
DOCUMENTATION = """
module: vyos_ntp_global
version_added: 2.4.0
short_description: Manages ntp modules of Vyos network devices
description:
- This module manages ntp configuration on devices running Vyos
author: Varshitha Yataluru (@YVarshitha)
notes:
- Tested against vyos 1.3
- This module works with connection C(network_cli).
options:
config:
description: List of configurations for ntp module
type: dict
suboptions:
allow_clients:
description: Network Time Protocol (NTP) server options
type: list
elements: str
listen_addresses:
description: local IP addresses for service to listen on
type: list
elements: str
servers:
description: Network Time Protocol (NTP) server
type: list
elements: dict
suboptions:
server:
description: server name for NTP
type: str
options:
description: server options for NTP
type: list
elements: str
choices:
- noselect
- dynamic
+ - pool
- preempt
- prefer
running_config:
description:
- This option is used only with state I(parsed).
- The value of this option should be the output received from the VYOS device by
executing the command B(show configuration commands | grep ntp).
- The states I(replaced) and I(overridden) have identical
behaviour for this module.
- The state I(parsed) reads the configuration from C(show configuration commands | grep ntp) option and
transforms it into Ansible structured data as per the resource module's argspec
and the value is then returned in the I(parsed) key within the result.
type: str
state:
description:
- The state the configuration should be left in.
type: str
choices:
- deleted
- merged
- overridden
- replaced
- gathered
- rendered
- parsed
default: merged
"""
EXAMPLES = """
# # -------------------
# # 1. Using merged
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Replace the existing ntp config with the new config
vyos.vyos.vyos_ntp_global:
config:
allow_clients:
- 10.6.6.0/24
listen_addresses:
- 10.1.3.1
servers:
- server: 203.0.113.0
options:
- prefer
# # Task output:
# # -------------
# "after": {
# "allow_clients": [
# "10.6.6.0/24"
# ],
# "listen_addresses": [
# "10.1.3.1"
# ],
# "servers": [
# {
# "server": "ser",
# "options": [
# "prefer"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "before": {
# },
# "changed": true,
# "commands": [
# "set system ntp allow-clients address 10.6.6.0/24",
# "set system ntp listen-address 10.1.3.1",
# "set system ntp server 203.0.113.0 prefer"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.6.6.0/24'
# set system ntp listen-address '10.1.3.1'
# set system ntp server 203.0.113.0 prefer,
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 2. Using replaced
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.4.9.0/24'
# set system ntp allow-clients address '10.4.7.0/24'
# set system ntp allow-clients address '10.1.2.0/24'
# set system ntp allow-clients address '10.2.3.0/24'
# set system ntp listen-address '10.1.9.16'
# set system ntp listen-address '10.5.3.2'
# set system ntp listen-address '10.7.9.21'
# set system ntp listen-address '10.8.9.4'
# set system ntp listen-address '10.4.5.1'
# set system ntp server 10.3.6.5 noselect
# set system ntp server 10.3.6.5 dynamic
# set system ntp server 10.3.6.5 preempt
# set system ntp server 10.3.6.5 prefer
# set system ntp server server4 noselect
# set system ntp server server4 dynamic
# set system ntp server server5
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Replace the existing ntp config with the new config
vyos.vyos.vyos_ntp_global:
config:
allow_clients:
- 10.6.6.0/24
listen_addresses:
- 10.1.3.1
servers:
- server: 203.0.113.0
options:
- prefer
state: replaced
# # Task output:
# # -------------
# "after": {
# "allow_clients": [
# "10.6.6.0/24"
# ],
# "listen_addresses": [
# "10.1.3.1"
# ],
# "servers": [
# {
# "server": "ser",
# "options": [
# "prefer"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "before": {
# "allow_clients": [
# "10.4.7.0/24",
# "10.2.3.0/24",
# "10.1.2.0/24",
# "10.4.9.0/24"
# ],
# "listen_addresses": [
# "10.7.9.21",
# "10.4.5.1",
# "10.5.3.2",
# "10.8.9.4",
# "10.1.9.16"
# ],
# "servers": [
# {
# "server": "10.3.6.5",
# "options": [
# "noselect",
# "dynamic",
# "preempt",
# "prefer"
# ]
# },
# {
# "server": "server4",
# "options": [
# "noselect",
# "dynamic"
# ]
# },
# {
# "server": "server5"
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete system ntp allow-clients address 10.4.7.0/24",
# "delete system ntp allow-clients address 10.2.3.0/24",
# "delete system ntp allow-clients address 10.1.2.0/24",
# "delete system ntp allow-clients address 10.4.9.0/24",
# "delete system ntp listen-address 10.7.9.21",
# "delete system ntp listen-address 10.4.5.1",
# "delete system ntp listen-address 10.5.3.2",
# "delete system ntp listen-address 10.8.9.4",
# "delete system ntp listen-address 10.1.9.16",
# "delete system ntp server 10.3.6.5",
# "delete system ntp server server4",
# "delete system ntp server server5",
# "set system ntp allow-clients address 10.6.6.0/24",
# "set system ntp listen-address 10.1.3.1",
# "set system ntp server 203.0.113.0 prefer"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.6.6.0/24'
# set system ntp listen-address '10.1.3.1'
# set system ntp server 203.0.113.0 prefer,
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 3. Using overridden
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.6.6.0/24'
# set system ntp listen-address '10.1.3.1'
# set system ntp server 203.0.113.0 prefer,
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Override ntp config
vyos.vyos.vyos_ntp_global:
config:
allow_clients:
- 10.3.3.0/24
listen_addresses:
- 10.7.8.1
servers:
- server: server1
options:
- dynamic
- prefer
- server: server2
options:
- noselect
- preempt
- server: serv
state: overridden
# # Task output:
# # -------------
# "after": {
# "allow_clients": [
# "10.3.3.0/24"
# ],
# "listen_addresses": [
# "10.7.8.1"
# ],
# "servers": [
# {
# "server": "serv"
# },
# {
# "server": "server1",
# "options": [
# "dynamic",
# "prefer"
# ]
# },
# {
# "server": "server2",
# "options": [
# "noselect",
# "preempt"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "before": {
# "allow_clients": [
# "10.6.6.0/24"
# ],
# "listen_addresses": [
# "10.1.3.1"
# ],
# "servers": [
# {
# "server": "ser",
# "options": [
# "prefer"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete system ntp allow-clients address 10.6.6.0/24",
# "delete system ntp listen-address 10.1.3.1",
# "delete system ntp server ser",
# "set system ntp allow-clients address 10.3.3.0/24",
# "set system ntp listen-address 10.7.8.1",
# "set system ntp server server1 dynamic",
# "set system ntp server server1 prefer",
# "set system ntp server server2 noselect",
# "set system ntp server server2 preempt",
# "set system ntp server serv"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.3.3.0/24'
# set system ntp listen-address '10.7.8.1'
# set system ntp server serv
# set system ntp server server1 dynamic
# set system ntp server server1 prefer
# set system ntp server server2 noselect
# set system ntp server server2 preempt
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 4. Using gathered
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.3.3.0/24'
# set system ntp listen-address '10.7.8.1'
# set system ntp server serv
# set system ntp server server1 dynamic
# set system ntp server server1 prefer
# set system ntp server server2 noselect
# set system ntp server server2 preempt
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Gather ntp config
vyos.vyos.vyos_ntp_global:
state: gathered
# # Task output:
# # -------------
# "gathered": {
# "allow_clients": [
# "10.3.3.0/24"
# ],
# "listen_addresses": [
# "10.7.8.1"
# ],
# "servers": [
# {
# "server": "serv"
# },
# {
# "server": "server1",
# "options": [
# "dynamic",
# "prefer"
# ]
# },
# {
# "server": "server2",
# "options": [
# "noselect",
# "preempt"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# }
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.3.3.0/24'
# set system ntp listen-address '10.7.8.1'
# set system ntp server serv
# set system ntp server server1 dynamic
# set system ntp server server1 prefer
# set system ntp server server2 noselect
# set system ntp server server2 preempt
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 5. Using deleted
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp allow-clients address '10.3.3.0/24'
# set system ntp listen-address '10.7.8.1'
# set system ntp server serv
# set system ntp server server1 dynamic
# set system ntp server server1 prefer
# set system ntp server server2 noselect
# set system ntp server server2 preempt
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
- name: Delete ntp config
vyos.vyos.vyos_ntp_global:
state: deleted
# # Task output:
# # -------------
# "after": {
# "servers": [
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "before": {
# "allow_clients": [
# "10.3.3.0/24"
# ],
# "listen_addresses": [
# "10.7.8.1"
# ],
# "servers": [
# {
# "server": "serv"
# },
# {
# "server": "server1",
# "options": [
# "dynamic",
# "prefer"
# ]
# },
# {
# "server": "server2",
# "options": [
# "noselect",
# "preempt"
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
# ]
# },
# "changed": true,
# "commands": [
# "delete system ntp allow-clients",
# "delete system ntp listen-address",
# "delete system ntp server serv",
# "delete system ntp server server1",
# "delete system ntp server server2"
#
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
# # 6. Using rendered
# # -------------------
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
# set system ntp server time1.vyos.net
# set system ntp server time2.vyos.net
# set system ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
# # -------------
-- name: Gather ntp config
+- name: Render ntp config
vyos.vyos.vyos_ntp_global:
config:
allow_clients:
- 10.7.7.0/24
- 10.8.8.0/24
listen_addresses:
- 10.7.9.1
servers:
- server: server7
- server: server45
options:
- noselect
- prefer
+ - pool
- server: time1.vyos.net
- server: time2.vyos.net
- server: time3.vyos.net
state: rendered
# # Task output:
# # -------------
# "rendered": [
# "set system ntp allow-clients address 10.7.7.0/24",
# "set system ntp allow-clients address 10.8.8.0/24",
# "set system ntp listen-address 10.7.9.1",
# "set system ntp server server7",
# "set system ntp server server45 noselect",
# "set system ntp server server45 prefer",
+# "set system ntp server server45 pool",
# "set system ntp server time1.vyos.net",
# "set system ntp server time2.vyos.net",
# "set system ntp server time3.vyos.net"
# ]
# # -------------------
# # 7. Using parsed
# # -------------------
# # sample_config.cfg:
# # -------------
# "set system ntp allow-clients address 10.7.7.0/24",
# "set system ntp listen-address 10.7.9.1",
# "set system ntp server server45 noselect",
# "set system ntp allow-clients addres 10.8.6.0/24",
# "set system ntp listen-address 10.5.4.1",
# "set system ntp server server45 dynamic",
# "set system ntp server time1.vyos.net",
# "set system ntp server time2.vyos.net",
# "set system ntp server time3.vyos.net"
# # Task:
# # -------------
- name: Parse externally provided ntp configuration
vyos.vyos.vyos_ntp_global:
running_config: "{{ lookup('file', './sample_config.cfg') }}"
state: parsed
# # Task output:
# # -------------
# parsed = {
# "allow_clients": [
# "10.7.7.0/24",
# "10.8.6.0/24
# ],
# "listen_addresses": [
# "10.5.4.1",
# "10.7.9.1"
# ],
# "servers": [
# {
# "server": "server45",
# "options": [
# "noselect",
# "dynamic"
#
# ]
# },
# {
# "server": "time1.vyos.net"
# },
# {
# "server": "time2.vyos.net"
# },
# {
# "server": "time3.vyos.net"
# }
#
# ]
# }
"""
RETURN = """
before:
description: The configuration prior to the module execution.
returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
type: dict
sample: >
This output will always be in the same format as the
module argspec.
after:
description: The resulting configuration after module execution.
returned: when changed
type: dict
sample: >
This output will always be in the same format as the
module argspec.
commands:
description: The set of commands pushed to the remote device.
returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged)
type: list
sample:
- set system ntp server server1 dynamic
- set system ntp server server1 prefer
- set system ntp server server2 noselect
- set system ntp server server2 preempt
- set system ntp server server_add preempt
rendered:
description: The provided configuration in the task rendered in device-native format (offline).
returned: when I(state) is C(rendered)
type: list
sample:
- set system ntp server server1 dynamic
- set system ntp server server1 prefer
- set system ntp server server2 noselect
- set system ntp server server2 preempt
- set system ntp server server_add preempt
gathered:
description: Facts about the network resource gathered from the remote device as structured data.
returned: when I(state) is C(gathered)
type: list
sample: >
This output will always be in the same format as the
module argspec.
parsed:
description: The device native config provided in I(running_config) option parsed into structured data as per module argspec.
returned: when I(state) is C(parsed)
type: list
sample: >
This output will always be in the same format as the
module argspec.
"""
from ansible.module_utils.basic import AnsibleModule
from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.ntp_global.ntp_global import (
Ntp_globalArgs,
)
from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.ntp_global.ntp_global import (
Ntp_global,
)
def main():
"""
Main entry point for module execution
:returns: the result form module invocation
"""
module = AnsibleModule(
argument_spec=Ntp_globalArgs.argument_spec,
mutually_exclusive=[["config", "running_config"]],
required_if=[
["state", "merged", ["config"]],
["state", "replaced", ["config"]],
["state", "overridden", ["config"]],
["state", "rendered", ["config"]],
["state", "parsed", ["running_config"]],
],
supports_check_mode=True,
)
result = Ntp_global(module).execute_module()
module.exit_json(**result)
if __name__ == "__main__":
main()
diff --git a/requirements.txt b/requirements.txt
index e98b931..8c44c98 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,2 @@
ansible-pylibssh
-paramiko
+paramiko==2.8.1
diff --git a/tests/unit/modules/network/vyos/test_vyos_ntp_global.py b/tests/unit/modules/network/vyos/test_vyos_ntp_global.py
index c27704f..53dabdc 100644
--- a/tests/unit/modules/network/vyos/test_vyos_ntp_global.py
+++ b/tests/unit/modules/network/vyos/test_vyos_ntp_global.py
@@ -1,364 +1,364 @@
# (c) 2021 Red Hat Inc.
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see .
# Make coding more python3-ish
from __future__ import absolute_import, division, print_function
__metaclass__ = type
from ansible_collections.vyos.vyos.tests.unit.compat.mock import patch
from ansible_collections.vyos.vyos.plugins.modules import vyos_ntp_global
from ansible_collections.vyos.vyos.tests.unit.modules.utils import (
set_module_args,
)
from .vyos_module import TestVyosModule, load_fixture
class TestVyosNTPModule(TestVyosModule):
module = vyos_ntp_global
def setUp(self):
super(TestVyosNTPModule, self).setUp()
self.mock_get_resource_connection_config = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base.get_resource_connection"
)
self.get_resource_connection_config = (
self.mock_get_resource_connection_config.start()
)
self.mock_get_resource_connection_facts = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.facts.facts.get_resource_connection"
)
self.get_resource_connection_facts = (
self.mock_get_resource_connection_facts.start()
)
self.mock_execute_show_command = patch(
"ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.ntp_global.ntp_global.Ntp_globalFacts.get_config"
)
self.execute_show_command = self.mock_execute_show_command.start()
def tearDown(self):
super(TestVyosNTPModule, self).tearDown()
self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
self.mock_execute_show_command.stop()
def load_fixtures(self, commands=None, transport="cli", filename=None):
if filename is None:
filename = "vyos_ntp_config.cfg"
def load_from_file(*args, **kwargs):
output = load_fixture(filename)
return output
self.execute_show_command.side_effect = load_from_file
def test_ntp_merged_idempotent(self):
set_module_args(
dict(
config=dict(
allow_clients=["10.1.1.0/24", "10.1.2.0/24"],
listen_addresses=["10.2.3.1", "10.4.3.1"],
servers=[
dict(server="server1"),
dict(
server="server3", options=["noselect", "dynamic"]
),
dict(server="time1.vyos.net"),
dict(server="time2.vyos.net"),
dict(server="time3.vyos.net"),
],
),
state="merged",
)
)
self.execute_module(changed=False, commands=[])
def test_ntp_merged(self):
set_module_args(
dict(
config=dict(
allow_clients=["10.2.2.0/24", "10.3.3.0/24"],
listen_addresses=["10.3.4.1", "10.4.5.1"],
servers=[
dict(server="server4", options=["dynamic", "preempt"]),
dict(
server="server5",
options=[
"noselect",
- "dynamic",
+ "pool",
"preempt",
"prefer",
],
),
],
),
state="merged",
)
)
commands = [
"set system ntp allow-clients address 10.2.2.0/24",
"set system ntp allow-clients address 10.3.3.0/24",
"set system ntp listen-address 10.3.4.1",
"set system ntp listen-address 10.4.5.1",
"set system ntp server server4 dynamic",
"set system ntp server server4 preempt",
- "set system ntp server server5 dynamic",
+ "set system ntp server server5 pool",
"set system ntp server server5 noselect",
"set system ntp server server5 preempt",
"set system ntp server server5 prefer",
]
self.execute_module(changed=True, commands=commands)
def test_ntp_replaced(self):
set_module_args(
dict(
config=dict(
allow_clients=["10.3.4.0/24", "10.4.5.0/24"],
listen_addresses=["10.3.3.1", "10.4.4.1"],
servers=[
dict(server="server4", options=["noselect", "prefer"]),
dict(
server="server6",
options=[
"noselect",
"dynamic",
"prefer",
"preempt",
],
),
dict(server="time1.vyos.net"),
dict(server="time2.vyos.net"),
dict(server="time3.vyos.net"),
],
),
state="replaced",
)
)
commands = [
"delete system ntp allow-clients address 10.1.1.0/24",
"delete system ntp allow-clients address 10.1.2.0/24",
"delete system ntp listen-address 10.2.3.1",
"delete system ntp listen-address 10.4.3.1",
"delete system ntp server server1",
"delete system ntp server server3",
"set system ntp allow-clients address 10.3.4.0/24",
"set system ntp allow-clients address 10.4.5.0/24",
"set system ntp listen-address 10.3.3.1",
"set system ntp listen-address 10.4.4.1",
"set system ntp server server4 noselect",
"set system ntp server server4 prefer",
"set system ntp server server6 noselect",
"set system ntp server server6 dynamic",
"set system ntp server server6 prefer",
"set system ntp server server6 preempt",
]
self.execute_module(changed=True, commands=commands)
def test_ntp_replaced_idempotent(self):
set_module_args(
dict(
config=dict(
allow_clients=["10.1.1.0/24", "10.1.2.0/24"],
listen_addresses=["10.2.3.1", "10.4.3.1"],
servers=[
dict(server="server1"),
dict(
server="server3", options=["noselect", "dynamic"]
),
dict(server="time1.vyos.net"),
dict(server="time2.vyos.net"),
dict(server="time3.vyos.net"),
],
),
state="replaced",
)
)
self.execute_module(changed=False, commands=[])
def test_ntp_overridden(self):
set_module_args(
dict(
config=dict(
allow_clients=["10.9.9.0/24"],
listen_addresses=["10.9.9.1"],
servers=[
dict(server="server9"),
dict(
server="server6", options=["noselect", "dynamic"]
),
dict(server="time1.vyos.net"),
dict(server="time2.vyos.net"),
dict(server="time3.vyos.net"),
],
),
state="overridden",
)
)
commands = [
"delete system ntp allow-clients address 10.1.1.0/24",
"delete system ntp allow-clients address 10.1.2.0/24",
"delete system ntp listen-address 10.2.3.1",
"delete system ntp listen-address 10.4.3.1",
"delete system ntp server server1",
"delete system ntp server server3",
"set system ntp allow-clients address 10.9.9.0/24",
"set system ntp listen-address 10.9.9.1",
"set system ntp server server9",
"set system ntp server server6 noselect",
"set system ntp server server6 dynamic",
]
self.execute_module(changed=True, commands=commands)
def test_ntp_overridden_idempotent(self):
set_module_args(
dict(
config=dict(
allow_clients=["10.1.1.0/24", "10.1.2.0/24"],
listen_addresses=["10.2.3.1", "10.4.3.1"],
servers=[
dict(server="server1"),
dict(
server="server3", options=["noselect", "dynamic"]
),
dict(server="time1.vyos.net"),
dict(server="time2.vyos.net"),
dict(server="time3.vyos.net"),
],
),
state="overridden",
)
)
self.execute_module(changed=False, commands=[])
def test_ntp_rendered(self):
set_module_args(
dict(
config=dict(
allow_clients=["10.7.7.0/24", "10.8.8.0/24"],
listen_addresses=["10.7.9.1"],
servers=[
dict(server="server79"),
dict(
server="server46", options=["noselect", "dynamic"]
),
dict(server="time1.vyos.net"),
dict(server="time2.vyos.net"),
dict(server="time3.vyos.net"),
],
),
state="rendered",
)
)
rendered_commands = [
"set system ntp allow-clients address 10.7.7.0/24",
"set system ntp allow-clients address 10.8.8.0/24",
"set system ntp listen-address 10.7.9.1",
"set system ntp server server79",
"set system ntp server server46 noselect",
"set system ntp server server46 dynamic",
"set system ntp server time1.vyos.net",
"set system ntp server time2.vyos.net",
"set system ntp server time3.vyos.net",
]
result = self.execute_module(changed=False)
self.assertEqual(
sorted(result["rendered"]),
sorted(rendered_commands),
result["rendered"],
)
def test_ntp_parsed(self):
commands = (
"set system ntp allow-clients address 10.7.7.0/24",
"set system ntp allow-clients address 10.6.7.0/24",
"set system ntp listen-address 10.7.9.1",
"set system ntp listen-address 10.7.7.1",
"set system ntp server check",
"set system ntp server server46 noselect",
"set system ntp server server46 prefer",
"set system ntp server time1.vyos.net",
"set system ntp server time2.vyos.net",
"set system ntp server time3.vyos.net",
)
parsed_str = "\n".join(commands)
set_module_args(dict(running_config=parsed_str, state="parsed"))
result = self.execute_module(changed=False)
parsed_list = {
"allow_clients": ["10.6.7.0/24", "10.7.7.0/24"],
"listen_addresses": ["10.7.7.1", "10.7.9.1"],
"servers": [
{"server": "check"},
{"server": "server46", "options": ["noselect", "prefer"]},
{"server": "time1.vyos.net"},
{"server": "time2.vyos.net"},
{"server": "time3.vyos.net"},
],
}
self.assertEqual(parsed_list, result["parsed"])
def test_ntp_gathered(self):
set_module_args(dict(state="gathered"))
result = self.execute_module(changed=False)
gathered_list = {
"allow_clients": ["10.1.1.0/24", "10.1.2.0/24"],
"listen_addresses": ["10.2.3.1", "10.4.3.1"],
"servers": [
{"server": "server1"},
{"server": "server3", "options": ["dynamic", "noselect"]},
{"server": "time1.vyos.net"},
{"server": "time2.vyos.net"},
{"server": "time3.vyos.net"},
],
}
self.assertEqual(gathered_list, result["gathered"])
def test_ntp_deleted(self):
set_module_args(
dict(
config=dict(
allow_clients=["10.1.1.0/24"],
listen_addresses=["10.2.3.1"],
servers=[
dict(server="server1"),
dict(server="server3", options=["noselect"]),
dict(server="time1.vyos.net"),
dict(server="time2.vyos.net"),
dict(server="time3.vyos.net"),
],
),
state="deleted",
)
)
commands = [
"delete system ntp allow-clients",
"delete system ntp listen-address",
"delete system ntp server server1",
"delete system ntp server server3",
"delete system ntp server time1.vyos.net",
"delete system ntp server time2.vyos.net",
"delete system ntp server time3.vyos.net",
]
self.execute_module(changed=True, commands=commands)