diff options
Diffstat (limited to 'plugins/modules/vyos_logging_global.py')
-rw-r--r-- | plugins/modules/vyos_logging_global.py | 776 |
1 files changed, 776 insertions, 0 deletions
diff --git a/plugins/modules/vyos_logging_global.py b/plugins/modules/vyos_logging_global.py new file mode 100644 index 0000000..6a4e2dd --- /dev/null +++ b/plugins/modules/vyos_logging_global.py @@ -0,0 +1,776 @@ +#!/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_logging_global +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +DOCUMENTATION = """ +module: vyos_logging_global +version_added: 2.4.0 +short_description: Logging resource module +description: This module manages the logging attributes of Vyos network devices +author: Sagar Paul (@KB-perByte) +notes: + - Tested against vyos 1.2 + - This module works with connection C(network_cli). + - The Configuration defaults of the Vyos network devices + are supposed to hinder idempotent behavior of plays +options: + config: + description: A list containing dictionary of logging options + type: dict + suboptions: + console: + description: logging to serial console + type: dict + suboptions: + state: &state_config + description: enable or disable the command + type: str + choices: + - enabled + - disabled + facilities: + description: facility configurations for console + type: list + elements: dict + suboptions: + facility: &facility + description: Facility for logging + type: str + choices: + - all + - auth + - authpriv + - cron + - daemon + - kern + - lpr + - mail + - mark + - news + - protocols + - security + - syslog + - user + - uucp + - local0 + - local1 + - local2 + - local3 + - local4 + - local5 + - local6 + - local7 + severity: &severity + description: logging level + type: str + choices: + - emerg + - alert + - crit + - err + - warning + - notice + - info + - debug + - all + files: + description: logging to file + type: list + elements: dict + suboptions: + path: + description: file name or path + type: str + archive: &archive + description: Log file size and rotation characteristics + type: dict + suboptions: + state: *state_config + file_num: + description: Number of saved files (default is 5) + type: int + size: + description: Size of log files (in kilobytes, default is 256) + type: int + facilities: ¶ms + description: facility configurations + type: list + elements: dict + suboptions: + facility: *facility + severity: *severity + global_params: + description: logging to serial console + type: dict + suboptions: + state: *state_config + archive: *archive + facilities: *params + marker_interval: + description: time interval how often a mark message is being sent in seconds (default is 1200) + type: int + preserve_fqdn: + description: uses FQDN for logging + type: bool + hosts: + description: logging to serial console + type: list + elements: dict + suboptions: + port: + description: Destination port (1-65535) + type: int + facilities: + description: facility configurations for host + type: list + elements: dict + suboptions: + facility: *facility + severity: *severity + protocol: + description: syslog communication protocol + type: str + choices: + - udp + - tcp + hostname: + description: Remote host name or IP address + type: str + syslog: + description: logging syslog + type: dict + suboptions: + state: *state_config + users: + description: logging to file + type: list + elements: dict + suboptions: + username: + description: user login name + type: str + facilities: *params + 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 syslog). + - 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: + choices: + - merged + - replaced + - overridden + - deleted + - gathered + - parsed + - rendered + default: merged + description: + - The state the configuration should be left in + - The states I(replaced) and I(overridden) have identical + behaviour for this module. + - Refer to examples for more details. + type: str +""" + +EXAMPLES = """ +# Using state: merged + +# Before state: +# ------------- + +# vyos:~$show configuration commands | grep syslog + +- name: Apply the provided configuration + vyos.vyos.vyos_logging_global: + config: + console: + facilities: + - facility: local7 + severity: err + files: + - path: logFile + archive: + file_num: 2 + facilities: + - facility: local6 + severity: emerg + hosts: + - hostname: 172.16.0.1 + facilities: + - facility: local7 + severity: all + - facility: all + protocol: udp + port: 223 + users: + - username: vyos + facilities: + - facility: local7 + severity: debug + global_params: + archive: + file_num: 2 + size: 111 + facilities: + - facility: cron + severity: debug + marker_interval: 111 + preserve_fqdn: true + state: merged + +# Commands Fired: +# --------------- + +# "commands": [ +# "set system syslog console facility local7 level err", +# "set system syslog file logFile archive file 2", +# "set system syslog host 172.16.0.1 facility local7 level all", +# "set system syslog file logFile facility local6 level emerg", +# "set system syslog host 172.16.0.1 facility all protocol udp", +# "set system syslog user vyos facility local7 level debug", +# "set system syslog host 172.16.0.1 port 223", +# "set system syslog global facility cron level debug", +# "set system syslog global archive file 2", +# "set system syslog global archive size 111", +# "set system syslog global marker interval 111", +# "set system syslog global preserve-fqdn" +# ], + +# After state: +# ------------ + +# vyos:~$ show configuration commands | grep syslog +# set system syslog console facility local7 level 'err' +# set system syslog file logFile archive file '2' +# set system syslog file logFile facility local6 level 'emerg' +# set system syslog global archive file '2' +# set system syslog global archive size '111' +# set system syslog global facility cron level 'debug' +# set system syslog global marker interval '111' +# set system syslog global preserve-fqdn +# set system syslog host 172.16.0.1 facility all protocol 'udp' +# set system syslog host 172.16.0.1 facility local7 level 'all' +# set system syslog host 172.16.0.1 port '223' +# set system syslog user vyos facility local7 level 'debug' + +# Using state: deleted + +# Before state: +# ------------- + +# vyos:~$show configuration commands | grep syslog +# set system syslog console facility local7 level 'err' +# set system syslog file logFile archive file '2' +# set system syslog file logFile facility local6 level 'emerg' +# set system syslog global archive file '2' +# set system syslog global archive size '111' +# set system syslog global facility cron level 'debug' +# set system syslog global marker interval '111' +# set system syslog global preserve-fqdn +# set system syslog host 172.16.0.1 facility all protocol 'udp' +# set system syslog host 172.16.0.1 facility local7 level 'all' +# set system syslog host 172.16.0.1 port '223' +# set system syslog user vyos facility local7 level 'debug' + +- name: delete the existing configuration + vyos.vyos.vyos_logging_global: + state: deleted + +# Commands Fired: +# --------------- + +# "commands": [ +# "delete system syslog" +# ], + +# After state: +# ------------ + +# vyos:~$show configuration commands | grep syslog + +# Using state: overridden + +# Before state: +# ------------- + +# vyos:~$show configuration commands | grep syslog +# set system syslog console facility local7 level 'err' +# set system syslog file logFile archive file '2' +# set system syslog file logFile facility local6 level 'emerg' +# set system syslog global archive file '2' +# set system syslog global archive size '111' +# set system syslog global facility cron level 'debug' +# set system syslog global marker interval '111' +# set system syslog global preserve-fqdn +# set system syslog host 172.16.0.1 facility all protocol 'udp' +# set system syslog host 172.16.0.1 facility local7 level 'all' +# set system syslog host 172.16.0.1 port '223' +# set system syslog user vyos facility local7 level 'debug' + +- name: Override the current configuration + vyos.vyos.vyos_logging_global: + config: + console: + facilities: + - facility: all + - facility: local7 + severity: err + - facility: news + severity: debug + files: + - path: logFileNew + hosts: + - hostname: 172.16.0.2 + facilities: + - facility: local5 + severity: all + global_params: + archive: + file_num: 10 + state: overridden + +# Commands Fired: +# --------------- + +# "commands": [ +# "delete system syslog file logFile", +# "delete system syslog global facility cron", +# "delete system syslog host 172.16.0.1", +# "delete system syslog user vyos", +# "set system syslog console facility all", +# "set system syslog console facility news level debug", +# "set system syslog file logFileNew", +# "set system syslog host 172.16.0.2 facility local5 level all", +# "set system syslog global archive file 10", +# "delete system syslog global archive size 111", +# "delete system syslog global marker", +# "delete system syslog global preserve-fqdn" +# ], + +# After state: +# ------------ + +# vyos:~$show configuration commands | grep syslog +# set system syslog console facility all +# set system syslog console facility local7 level 'err' +# set system syslog console facility news level 'debug' +# set system syslog file logFileNew +# set system syslog global archive file '10' +# set system syslog host 172.16.0.2 facility local5 level 'all' + +# Using state: replaced + +# Before state: +# ------------- + +# vyos:~$show configuration commands | grep syslog +# set system syslog console facility all +# set system syslog console facility local7 level 'err' +# set system syslog console facility news level 'debug' +# set system syslog file logFileNew +# set system syslog global archive file '10' +# set system syslog host 172.16.0.2 facility local5 level 'all' + +- name: Replace with the provided configuration + register: result + vyos.vyos.vyos_logging_global: + config: + console: + facilities: + - facility: local6 + users: + - username: paul + facilities: + - facility: local7 + severity: err + state: replaced + +# Commands Fired: +# --------------- + +# "commands": [ +# "delete system syslog console facility all", +# "delete system syslog console facility local7", +# "delete system syslog console facility news", +# "delete system syslog file logFileNew", +# "delete system syslog global archive file 10", +# "delete system syslog host 172.16.0.2", +# "set system syslog console facility local6", +# "set system syslog user paul facility local7 level err" +# ], + +# After state: +# ------------ + +# vyos:~$show configuration commands | grep syslog +# set system syslog console facility local6 +# set system syslog user paul facility local7 level 'err' + +# Using state: gathered + +- name: Gather logging config + vyos.vyos.vyos_logging_global: + state: gathered + +# Module Execution Result: +# ------------------------ + +# "gathered": { +# "console": { +# "facilities": [ +# { +# "facility": "local6" +# }, +# { +# "facility": "local7", +# "severity": "err" +# } +# ] +# }, +# "files": [ +# { +# "archive": { +# "file_num": 2 +# }, +# "facilities": [ +# { +# "facility": "local6", +# "severity": "emerg" +# } +# ], +# "path": "logFile" +# } +# ], +# "global_params": { +# "archive": { +# "file_num": 2, +# "size": 111 +# }, +# "facilities": [ +# { +# "facility": "cron", +# "severity": "debug" +# } +# ], +# "marker_interval": 111, +# "preserve_fqdn": true +# }, +# "hosts": [ +# { +# "facilities": [ +# { +# "facility": "all", +# "protocol": "udp" +# }, +# { +# "facility": "local7", +# "severity": "all" +# } +# ], +# "hostname": "172.16.0.1", +# "port": 223 +# } +# ], +# "users": [ +# { +# "facilities": [ +# { +# "facility": "local7", +# "severity": "err" +# } +# ], +# "username": "paul" +# }, +# { +# "facilities": [ +# { +# "facility": "local7", +# "severity": "debug" +# } +# ], +# "username": "vyos" +# } +# ] +# }, + +# After state: +# ------------ + +# vyos:~$show configuration commands | grep syslog +# set system syslog console facility local6 +# set system syslog console facility local7 level 'err' +# set system syslog file logFile archive file '2' +# set system syslog file logFile facility local6 level 'emerg' +# set system syslog global archive file '2' +# set system syslog global archive size '111' +# set system syslog global facility cron level 'debug' +# set system syslog global marker interval '111' +# set system syslog global preserve-fqdn +# set system syslog host 172.16.0.1 facility all protocol 'udp' +# set system syslog host 172.16.0.1 facility local7 level 'all' +# set system syslog host 172.16.0.1 port '223' +# set system syslog user paul facility local7 level 'err' +# set system syslog user vyos facility local7 level 'debug' + +# Using state: rendered + +- name: Render the provided configuration + vyos.vyos.vyos_logging_global: + config: + console: + facilities: + - facility: local7 + severity: err + files: + - path: logFile + archive: + file_num: 2 + facilities: + - facility: local6 + severity: emerg + hosts: + - hostname: 172.16.0.1 + facilities: + - facility: local7 + severity: all + - facility: all + protocol: udp + port: 223 + users: + - username: vyos + facilities: + - facility: local7 + severity: debug + global_params: + archive: + file_num: 2 + size: 111 + facilities: + - facility: cron + severity: debug + marker_interval: 111 + preserve_fqdn: true + state: rendered + +# Module Execution Result: +# ------------------------ + +# "rendered": [ +# "set system syslog console facility local7 level err", +# "set system syslog file logFile facility local6 level emerg", +# "set system syslog file logFile archive file 2", +# "set system syslog host 172.16.0.1 facility local7 level all", +# "set system syslog host 172.16.0.1 facility all protocol udp", +# "set system syslog host 172.16.0.1 port 223", +# "set system syslog user vyos facility local7 level debug", +# "set system syslog global facility cron level debug", +# "set system syslog global archive file 2", +# "set system syslog global archive size 111", +# "set system syslog global marker interval 111", +# "set system syslog global preserve-fqdn" +# ] + +# Using state: parsed + +# File: parsed.cfg +# ---------------- + +# set system syslog console facility local6 +# set system syslog console facility local7 level 'err' +# set system syslog file logFile archive file '2' +# set system syslog file logFile facility local6 level 'emerg' +# set system syslog global archive file '2' +# set system syslog global archive size '111' +# set system syslog global facility cron level 'debug' +# set system syslog global marker interval '111' +# set system syslog global preserve-fqdn +# set system syslog host 172.16.0.1 facility all protocol 'udp' +# set system syslog host 172.16.0.1 facility local7 level 'all' +# set system syslog host 172.16.0.1 port '223' +# set system syslog user paul facility local7 level 'err' +# set system syslog user vyos facility local7 level 'debug' + +- name: Parse the provided configuration + vyos.vyos.vyos_logging_global: + running_config: "{{ lookup('file', 'parsed_vyos.cfg') }}" + state: parsed + +# Module Execution Result: +# ------------------------ + +# "parsed": { +# "console": { +# "facilities": [ +# { +# "facility": "local6" +# }, +# { +# "facility": "local7", +# "severity": "err" +# } +# ] +# }, +# "files": [ +# { +# "archive": { +# "file_num": 2 +# }, +# "facilities": [ +# { +# "facility": "local6", +# "severity": "emerg" +# } +# ], +# "path": "logFile" +# } +# ], +# "global_params": { +# "archive": { +# "file_num": 2, +# "size": 111 +# }, +# "facilities": [ +# { +# "facility": "cron", +# "severity": "debug" +# } +# ], +# "marker_interval": 111, +# "preserve_fqdn": true +# }, +# "hosts": [ +# { +# "facilities": [ +# { +# "facility": "all", +# "protocol": "udp" +# }, +# { +# "facility": "local7", +# "severity": "all" +# } +# ], +# "hostname": "172.16.0.1", +# "port": 223 +# } +# ], +# "users": [ +# { +# "facilities": [ +# { +# "facility": "local7", +# "severity": "err" +# } +# ], +# "username": "paul" +# }, +# { +# "facilities": [ +# { +# "facility": "local7", +# "severity": "debug" +# } +# ], +# "username": "vyos" +# } +# ] +# } +# } +""" + +RETURN = """ +before: + description: The configuration prior to the module execution. + returned: when state is I(merged), I(replaced), I(overridden), I(deleted) or I(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 state is I(merged), I(replaced), I(overridden), I(deleted) or I(purged) + type: list + sample: + - "set system syslog console facility local7 level err" + - "set system syslog host 172.16.0.1 port 223" + - "set system syslog global archive size 111" +rendered: + description: The provided configuration in the task rendered in device-native format (offline). + returned: when state is I(rendered) + type: list + sample: + - "set system syslog host 172.16.0.1 port 223" + - "set system syslog user vyos facility local7 level debug" + - "set system syslog global facility cron level debug" +gathered: + description: Facts about the network resource gathered from the remote device as structured data. + returned: when state is I(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 state is I(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.logging_global.logging_global import ( + Logging_globalArgs, +) +from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.logging_global.logging_global import ( + Logging_global, +) + + +def main(): + """ + Main entry point for module execution + + :returns: the result form module invocation + """ + module = AnsibleModule( + argument_spec=Logging_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 = Logging_global(module).execute_module() + module.exit_json(**result) + + +if __name__ == "__main__": + main() |