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)