Server IP : 85.214.239.14 / Your IP : 3.135.241.191 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/arista/eos/plugins/modules/ |
Upload File : |
#!/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 eos_ntp_global """ from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = """ --- module: eos_ntp_global short_description: Manages ntp resource module description: This module configures and manages the attributes of ntp on Arista EOS platforms. version_added: 3.1.0 author: Gomathi Selvi Srinivasan (@GomathiselviS) notes: - Tested against Arista EOS 4.24.60M - This module works with connection C(network_cli). See the U(https://docs.ansible.com/ansible/latest/network/user_guide/platform_eos.html). options: config: description: A dictionary of ntp options type: dict suboptions: authenticate: description: - Require authentication for NTP synchronization. type: dict suboptions: enable: description: Enable authentication for NTP synchronization. type: bool servers: description: Authentication required only for incoming NTP server responses. type: bool authentication_keys: description: - Define a key to use for authentication. type: list elements: dict suboptions: id: description: key identifier. type: int algorithm: description: hash algorithm, type: str choices: ["md5", "sha1"] encryption: description: key type type: int choices: [0, 7] key: description: Unobfuscated key string. type: str local_interface: description: Configure the interface from which the IP source address is taken. type: str qos_dscp: description: Set DSCP value in IP header type: int serve: description: Configure the switch as an NTP server. type: dict suboptions: all: description: Service NTP requests received on any interface. type: bool access_lists: description: Configure access control list. type: list elements: dict suboptions: afi: description: ip/ipv6 config commands. type: str acls: description: Access lists to be configured under the afi type: list elements: dict suboptions: acl_name: description: Name of the access list. type: str direction: description: direction for the packets. type: str choices: ["in", "out"] vrf: description: VRF in which to apply the access control list. type: str servers: description: Configure NTP server to synchronize to. type: list elements: dict suboptions: vrf: description: vrf name. type: str server: description: Hostname or A.B.C.D or A:B:C:D:E:F:G:H. type: str required: True burst: description: Send a burst of packets instead of the usual one. type: bool iburst: description: Send bursts of packets until the server is reached type: bool key_id: description: Set a key to use for authentication. type: int local_interface: description: Configure the interface from which the IP source address is taken. type: str source: description: Configure the interface from which the IP source address is taken. type: str maxpoll: description: Maximum poll interval. type: int minpoll: description: Minimum poll interval. type: int prefer: description: Mark this server as preferred. type: bool version: description: NTP version. type: int trusted_key: description: Configure the set of keys that are accepted for incoming messages type: str running_config: description: - This option is used only with state I(parsed). - The value of this option should be the output received from the EOS device by executing the command B(show running-config | section ntp). - The state I(parsed) reads the configuration from C(running_config) option and transforms it into Ansible structured data as per the resource module's argspec and the value is then returned in the I(parsed) key within the result. type: str state: description: - The state the configuration should be left in. - The states I(replaced) and I(overridden) have identical behaviour for this module. - Please refer to examples for more details. type: str choices: - deleted - merged - overridden - replaced - gathered - rendered - parsed default: merged """ EXAMPLES = """ # Using merged # Before state # localhost(config)#show running-config | section ntp # localhost(config)# - name: Merge provided configuration with device configuration arista.eos.eos_ntp_global: config: authenticate: enable: true authentication_keys: - id: 2 algorithm: "sha1" encryption: 7 key: "123456" - id: 23 algorithm: "md5" encryption: 7 key: "123456" local_interface: "Ethernet1" qos_dscp: 10 trusted_key: 23 servers: - server: "10.1.1.1" vrf: "vrf01" burst: True prefer: True - server: "25.1.1.1" vrf: "vrf01" maxpoll: 15 key_id: 2 serve: access_lists: - afi: "ip" acls: - acl_name: "acl01" direction: "in" - afi: "ipv6" acls: - acl_name: "acl02" direction: "in" # After State # localhost(config)#show running-config | section ntp # ntp authentication-key 2 sha1 7 123456 # ntp authentication-key 23 md5 7 123456 # ntp trusted-key 23 # ntp authenticate # ntp local-interface Ethernet1 # ntp qos dscp 10 # ntp server vrf vrf01 10.1.1.1 prefer burst # ntp server vrf vrf01 25.1.1.1 maxpoll 15 key 2 # ntp serve ip access-group acl01 in # ntp serve ipv6 access-group acl02 in # localhost(config)# # # # Module Execution: # "after": { # "authenticate": { # "enable": true # }, # "authentication_keys": [ # { # "algorithm": "sha1", # "encryption": 7, # "id": 2, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # }, # { # "algorithm": "md5", # "encryption": 7, # "id": 23, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # } # ], # "local_interface": "Ethernet1", # "qos_dscp": 10, # "serve": { # "access_lists": [ # { # "acls": [ # { # "acl_name": "acl01", # "direction": "in" # } # ], # "afi": "ip" # }, # { # "acls": [ # { # "acl_name": "acl02", # "direction": "in" # } # ], # "afi": "ipv6" # } # ] # }, # "servers": [ # { # "burst": true, # "prefer": true, # "server": "10.1.1.1", # "vrf": "vrf01" # }, # { # "key_id": 2, # "maxpoll": 15, # "server": "25.1.1.1", # "vrf": "vrf01" # } # ], # "trusted_key": "23" # }, # "before": {}, # "changed": true, # "commands": [ # "ntp serve ip access-group acl01 in", # "ntp serve ipv6 access-group acl02 in", # "ntp authentication-key 2 sha1 7 ********", # "ntp authentication-key 23 md5 7 ********", # "ntp server vrf vrf01 10.1.1.1 burst prefer", # "ntp server vrf vrf01 25.1.1.1 key 2 maxpoll 15", # "ntp authenticate", # "ntp local-interface Ethernet1", # "ntp qos dscp 10", # "ntp trusted-key 23" # ], # Using Replaced # Before State # localhost(config)#show running-config | section ntp # ntp authentication-key 2 sha1 7 123456 # ntp authentication-key 23 md5 7 123456 # ntp trusted-key 23 # ntp authenticate # ntp local-interface Ethernet1 # ntp qos dscp 10 # ntp server vrf vrf01 10.1.1.1 prefer burst # ntp server vrf vrf01 25.1.1.1 maxpoll 15 key 2 # ntp serve ip access-group acl01 in # ntp serve ipv6 access-group acl02 in # localhost(config)# - name: Replace arista.eos.eos_ntp_global: config: qos_dscp: 15 authentication_keys: - id: 2 algorithm: "md5" encryption: 7 key: "123456" servers: - server: "11.21.1.1" vrf: "vrf01" burst: True prefer: True minpoll: 13 serve: access_lists: - afi: "ip" acls: - acl_name: "acl03" direction: "in" state: replaced # After State: # localhost(config)#show running-config | section ntp # ntp authentication-key 2 md5 7 123456 # ntp qos dscp 15 # ntp server vrf vrf01 11.21.1.1 prefer burst minpoll 13 # ntp serve ip access-group acl03 in # localhost(config)# # # # Module Execution: # "after": { # "authentication_keys": [ # { # "algorithm": "md5", # "encryption": 7, # "id": 2, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # } # ], # "qos_dscp": 15, # "serve": { # "access_lists": [ # { # "acls": [ # { # "acl_name": "acl03", # "direction": "in" # } # ], # "afi": "ip" # } # ] # }, # "servers": [ # { # "burst": true, # "minpoll": 13, # "prefer": true, # "server": "11.21.1.1", # "vrf": "vrf01" # } # ] # }, # "before": { # "authenticate": { # "enable": true # }, # "authentication_keys": [ # { # "algorithm": "sha1", # "encryption": 7, # "id": 2, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # }, # { # "algorithm": "md5", # "encryption": 7, # "id": 23, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # } # ], # "local_interface": "Ethernet1", # "qos_dscp": 10, # "serve": { # "access_lists": [ # { # "acls": [ # { # "acl_name": "acl01", # "direction": "in" # } # ], # "afi": "ip" # }, # { # "acls": [ # { # "acl_name": "acl02", # "direction": "in" # } # ], # "afi": "ipv6" # } # ] # }, # "servers": [ # { # "burst": true, # "prefer": true, # "server": "10.1.1.1", # "vrf": "vrf01" # }, # { # "key_id": 2, # "maxpoll": 15, # "server": "25.1.1.1", # "vrf": "vrf01" # } # ], # "trusted_key": "23" # }, # "changed": true, # "commands": [ # "no ntp serve ip access-group acl01 in", # "no ntp serve ipv6 access-group acl02 in", # "no ntp authentication-key 23 md5 7 ********", # "no ntp server vrf vrf01 10.1.1.1 burst prefer", # "no ntp server vrf vrf01 25.1.1.1 key 2 maxpoll 15", # "no ntp authenticate", # "no ntp local-interface Ethernet1", # "no ntp trusted-key 23", # "ntp serve ip access-group acl03 in", # "ntp authentication-key 2 md5 7 ********", # "ntp server vrf vrf01 11.21.1.1 burst minpoll 13 prefer", # "ntp qos dscp 15" # ], # # Using Overridden # Before State # localhost(config)#show running-config | section ntp # ntp authentication-key 2 sha1 7 123456 # ntp authentication-key 23 md5 7 123456 # ntp trusted-key 23 # ntp authenticate # ntp local-interface Ethernet1 # ntp qos dscp 10 # ntp server vrf vrf01 10.1.1.1 prefer burst # ntp server vrf vrf01 25.1.1.1 maxpoll 15 key 2 # ntp serve ip access-group acl01 in # ntp serve ipv6 access-group acl02 in # localhost(config)# - name: Replace arista.eos.eos_ntp_global: config: qos_dscp: 15 authentication_keys: - id: 2 algorithm: "md5" encryption: 7 key: "123456" servers: - server: "11.21.1.1" vrf: "vrf01" burst: True prefer: True minpoll: 13 serve: access_lists: - afi: "ip" acls: - acl_name: "acl03" direction: "in" state: overridden # After State: # localhost(config)#show running-config | section ntp # ntp authentication-key 2 md5 7 123456 # ntp qos dscp 15 # ntp server vrf vrf01 11.21.1.1 prefer burst minpoll 13 # ntp serve ip access-group acl03 in # localhost(config)# # # # Module Execution: # "after": { # "authentication_keys": [ # { # "algorithm": "md5", # "encryption": 7, # "id": 2, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # } # ], # "qos_dscp": 15, # "serve": { # "access_lists": [ # { # "acls": [ # { # "acl_name": "acl03", # "direction": "in" # } # ], # "afi": "ip" # } # ] # }, # "servers": [ # { # "burst": true, # "minpoll": 13, # "prefer": true, # "server": "11.21.1.1", # "vrf": "vrf01" # } # ] # }, # "before": { # "authenticate": { # "enable": true # }, # "authentication_keys": [ # { # "algorithm": "sha1", # "encryption": 7, # "id": 2, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # }, # { # "algorithm": "md5", # "encryption": 7, # "id": 23, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # } # ], # "local_interface": "Ethernet1", # "qos_dscp": 10, # "serve": { # "access_lists": [ # { # "acls": [ # { # "acl_name": "acl01", # "direction": "in" # } # ], # "afi": "ip" # }, # { # "acls": [ # { # "acl_name": "acl02", # "direction": "in" # } # ], # "afi": "ipv6" # } # ] # }, # "servers": [ # { # "burst": true, # "prefer": true, # "server": "10.1.1.1", # "vrf": "vrf01" # }, # { # "key_id": 2, # "maxpoll": 15, # "server": "25.1.1.1", # "vrf": "vrf01" # } # ], # "trusted_key": "23" # }, # "changed": true, # "commands": [ # "no ntp serve ip access-group acl01 in", # "no ntp serve ipv6 access-group acl02 in", # "no ntp authentication-key 23 md5 7 ********", # "no ntp server vrf vrf01 10.1.1.1 burst prefer", # "no ntp server vrf vrf01 25.1.1.1 key 2 maxpoll 15", # "no ntp authenticate", # "no ntp local-interface Ethernet1", # "no ntp trusted-key 23", # "ntp serve ip access-group acl03 in", # "ntp authentication-key 2 md5 7 ********", # "ntp server vrf vrf01 11.21.1.1 burst minpoll 13 prefer", # "ntp qos dscp 15" # ], # # using deleted: # Before State # localhost(config)#show running-config | section ntp # ntp authentication-key 2 sha1 7 123456 # ntp authentication-key 23 md5 7 123456 # ntp trusted-key 23 # ntp authenticate # ntp local-interface Ethernet1 # ntp qos dscp 10 # ntp server vrf vrf01 10.1.1.1 prefer burst # ntp server vrf vrf01 11.21.1.1 prefer burst minpoll 13 # ntp server vrf vrf01 25.1.1.1 maxpoll 15 key 2 # ntp serve ip access-group acl01 in # ntp serve ipv6 access-group acl02 in # localhost(config)# - name: Delete ntp-global arista.eos.eos_ntp_global: state: deleted # After State: # localhost(config)#show running-config | section ntp # localhost(config)# # # # # Module Execution # "after": {}, # "before": { # "authenticate": { # "enable": true # }, # "authentication_keys": [ # { # "algorithm": "sha1", # "encryption": 7, # "id": 2, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # }, # { # "algorithm": "md5", # "encryption": 7, # "id": 23, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # } # ], # "local_interface": "Ethernet1", # "qos_dscp": 10, # "serve": { # "access_lists": [ # { # "acls": [ # { # "acl_name": "acl01", # "direction": "in" # } # ], # "afi": "ip" # }, # { # "acls": [ # { # "acl_name": "acl02", # "direction": "in" # } # ], # "afi": "ipv6" # } # ] # }, # "servers": [ # { # "burst": true, # "prefer": true, # "server": "10.1.1.1", # "vrf": "vrf01" # }, # { # "burst": true, # "minpoll": 13, # "prefer": true, # "server": "11.21.1.1", # "vrf": "vrf01" # }, # { # "key": 2, # "maxpoll": 15, # "server": "25.1.1.1", # "vrf": "vrf01" # } # ], # "trusted_key": "23" # }, # "changed": true, # "commands": [ # "no ntp serve ip access-group acl01 in", # "no ntp serve ipv6 access-group acl02 in", # "no ntp authentication-key 2 sha1 7 ********", # "no ntp authentication-key 23 md5 7 ********", # "no ntp server vrf vrf01 10.1.1.1 burst prefer", # "no ntp server vrf vrf01 11.21.1.1 burst minpoll 13 prefer", # "no ntp server vrf vrf01 25.1.1.1 key 2 maxpoll 15", # "no ntp authenticate", # "no ntp local-interface Ethernet1", # "no ntp qos dscp 10", # "no ntp trusted-key 23" # ], # # Using parsed: # parsed.cfg # ntp authentication-key 2 sha1 7 123456 # ntp authentication-key 23 md5 7 123456 # ntp trusted-key 23 # ntp authenticate # ntp local-interface Ethernet1 # ntp qos dscp 10 # ntp server vrf vrf01 10.1.1.1 prefer burst # ntp server vrf vrf01 11.21.1.1 prefer burst minpoll 13 # ntp server vrf vrf01 25.1.1.1 maxpoll 15 key 2 # ntp serve ip access-group acl01 in # ntp serve ipv6 access-group acl02 in - name: parse configs arista.eos.eos_ntp_global: running_config: "{{ lookup('file', './parsed_ntp_global.cfg') }}" state: parsed tags: - parsed # Module Execution # "parsed": { # "authenticate": { # "enable": true # }, # "authentication_keys": [ # { # "algorithm": "sha1", # "encryption": 7, # "id": 2, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # }, # { # "algorithm": "md5", # "encryption": 7, # "id": 23, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # } # ], # "local_interface": "Ethernet1", # "qos_dscp": 10, # "serve": { # "access_lists": [ # { # "acls": [ # { # "acl_name": "acl01", # "direction": "in" # } # ], # "afi": "ip" # }, # { # "acls": [ # { # "acl_name": "acl02", # "direction": "in" # } # ], # "afi": "ipv6" # } # ] # }, # "servers": [ # { # "burst": true, # "prefer": true, # "server": "10.1.1.1", # "vrf": "vrf01" # }, # { # "burst": true, # "minpoll": 13, # "prefer": true, # "server": "11.21.1.1", # "vrf": "vrf01" # }, # { # "key": 2, # "maxpoll": 15, # "server": "25.1.1.1", # "vrf": "vrf01" # } # ], # "trusted_key": "23" # } # } # using Gathered # Device config: # localhost(config)#show running-config | section ntp # ntp authentication-key 2 sha1 7 123456 # ntp authentication-key 23 md5 7 123456 # ntp trusted-key 23 # ntp authenticate # ntp local-interface Ethernet1 # ntp qos dscp 10 # ntp server vrf vrf01 10.1.1.1 prefer burst # ntp server vrf vrf01 25.1.1.1 maxpoll 15 key 2 # ntp serve ip access-group acl01 in # ntp serve ipv6 access-group acl02 in # localhost(config)# - name: gather configs arista.eos.eos_ntp_global: state: gathered tags: - gathered # Module Execution # "gathered": { # "authenticate": { # "enable": true # }, # "authentication_keys": [ # { # "algorithm": "sha1", # "encryption": 7, # "id": 2, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # }, # { # "algorithm": "md5", # "encryption": 7, # "id": 23, # "key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" # } # ], # "local_interface": "Ethernet1", # "qos_dscp": 10, # "serve": { # "access_lists": [ # { # "acls": [ # { # "acl_name": "acl01", # "direction": "in" # } # ], # "afi": "ip" # }, # { # "acls": [ # { # "acl_name": "acl02", # "direction": "in" # } # ], # "afi": "ipv6" # } # ] # }, # "servers": [ # { # "burst": true, # "prefer": true, # "server": "10.1.1.1", # "vrf": "vrf01" # }, # { # "key_id": 2, # "maxpoll": 15, # "server": "25.1.1.1", # "vrf": "vrf01" # } # ], # "trusted_key": "23" # }, # "invocation": { # "module_args": { # "config": null, # "running_config": null, # "state": "gathered" # } # } # } # using rendered: - name: Render provided configuration arista.eos.eos_ntp_global: config: authenticate: enable: true authentication_keys: - id: 2 algorithm: "sha1" encryption: 7 key: "123456" - id: 23 algorithm: "md5" encryption: 7 key: "123456" local_interface: "Ethernet1" qos_dscp: 10 trusted_key: 23 servers: - server: "10.1.1.1" vrf: "vrf01" burst: True prefer: True - server: "25.1.1.1" vrf: "vrf01" maxpoll: 15 key_id: 2 serve: access_lists: - afi: "ip" acls: - acl_name: "acl01" direction: "in" - afi: "ipv6" acls: - acl_name: "acl02" direction: "in" state: rendered become: yes # Module Execution: # "rendered": [ # "ntp serve ip access-group acl01 in", # "ntp serve ipv6 access-group acl02 in", # "ntp authentication-key 2 sha1 7 ********", # "ntp authentication-key 23 md5 7 ********", # "ntp server vrf vrf01 10.1.1.1 burst prefer", # "ntp server vrf vrf01 25.1.1.1 key 2 maxpoll 15", # "ntp authenticate", # "ntp local-interface Ethernet1", # "ntp qos dscp 10", # "ntp trusted-key 23" # ] # """ 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: - ntp master stratum 2 - ntp peer 198.51.100.1 use-vrf test maxpoll 7 - ntp authentication-key 10 md5 wawyhanx2 7 - ntp access-group peer PeerAcl1 - ntp access-group peer PeerAcl2 - ntp access-group query-only QueryAcl1 rendered: description: The provided configuration in the task rendered in device-native format (offline). returned: when I(state) is C(rendered) type: list sample: - ntp authentication-key 2 sha1 7 123456 - ntp authentication-key 23 md5 7 123456 - ntp trusted-key 23 - ntp authenticate - ntp local-interface Ethernet1 - ntp qos dscp 10 - ntp server vrf vrf01 10.1.1.1 prefer burst - ntp server vrf vrf01 25.1.1.1 maxpoll 15 key 2 - ntp serve ip access-group acl01 in - ntp serve ipv6 access-group acl02 in 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.arista.eos.plugins.module_utils.network.eos.argspec.ntp_global.ntp_global import ( Ntp_globalArgs, ) from ansible_collections.arista.eos.plugins.module_utils.network.eos.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()