Allow syslog_json callback options to be set in an Ansible configurat… (#57232)

* Allow syslog_json callback options to be set in an Ansible configuration file.

The syslog_json documentation says that it supports options via an Ansible
configuration file. In fact, they can only be specified via environment
variables.

I've updated the module to use the standard "get_options" handling which means
that it can now support options via environment variables *or* the
configuration file.

Options can be set in the configuration file as follows:

```
callback_whitelist = syslog_json

[callback_syslog_json]
syslog_server = localhost
syslog_port = 514
syslog_facility = user
```

* Use the original, documented, names for the modules options.

In the documentation text change syslog_server to server, syslog_port to port
and syslog_facility to facility.

* Add an item to the changelog.

* Update 57232-syslog-json-configuration-options.yml

Fix a YAML syntax error / typo.
This commit is contained in:
Paddy Newman 2019-05-31 19:29:15 +01:00 committed by Brian Coca
parent fd95c7b506
commit 2ef7759be1
2 changed files with 11 additions and 3 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- "syslog_json - Allow configuration of the syslog_json plugin via an Ansible configuration file."

View file

@ -14,7 +14,7 @@ DOCUMENTATION = '''
version_added: "1.9" version_added: "1.9"
description: description:
- This plugin logs ansible-playbook and ansible runs to a syslog server in JSON format - This plugin logs ansible-playbook and ansible runs to a syslog server in JSON format
- Before 2.4 only environment variables were available for configuration - Before 2.9 only environment variables were available for configuration
options: options:
server: server:
description: syslog server that will receive the event description: syslog server that will receive the event
@ -67,12 +67,18 @@ class CallbackModule(CallbackBase):
super(CallbackModule, self).__init__() super(CallbackModule, self).__init__()
self.set_options()
syslog_host = self.get_option("server")
syslog_port = int(self.get_option("port"))
syslog_facility = self.get_option("facility")
self.logger = logging.getLogger('ansible logger') self.logger = logging.getLogger('ansible logger')
self.logger.setLevel(logging.DEBUG) self.logger.setLevel(logging.DEBUG)
self.handler = logging.handlers.SysLogHandler( self.handler = logging.handlers.SysLogHandler(
address=(os.getenv('SYSLOG_SERVER', 'localhost'), int(os.getenv('SYSLOG_PORT', 514))), address=(syslog_host, syslog_port),
facility=os.getenv('SYSLOG_FACILITY', logging.handlers.SysLogHandler.LOG_USER) facility=syslog_facility
) )
self.logger.addHandler(self.handler) self.logger.addHandler(self.handler)
self.hostname = socket.gethostname() self.hostname = socket.gethostname()