* Allow Unicode chars to be dumped by yaml stdout callback
Allow Unicode in yaml.dumper to support printing strings unescaped with
\uxxx chars.
Cf. https://stackoverflow.com/a/29600111
* Switch from decode('utf-8') to the more compatible to_text()
When the URI module returns complex JSON objects, the YAML callback
fails while trying to represent these objects. The problem arises
because the filter method returns an iterator in Python 3, rather than a
str object. Therefore, the str method expandtabs() is not available,
and the callback fails with the following error:
[WARNING]: Failure using method (v2_runner_on_failed) in callback plugin (<ansible.plugins.callback.yaml.CallbackModule object at 0x7f7c7ed8aa20>): 'filter' object has no attribute 'expandtabs'
Issue can be replicated by running this playbook:
- hosts: localhost
gather_facts: false
tasks:
- uri:
url: https://jsonplaceholder.typicode.com/posts
ansible-playbook tmp.yml -v
* Add yaml output plugin
Using YAML instead of JSON for detailed output can (IMO) improve
readability; especially for tasks with either lots of output, or
multi-line output.
* Fix yaml output plugin documentation
* Added copyright header to yaml.py
* Moved mention of yaml output plugin to `New Modules` section
* Use AnsibleDumper in yaml output plugin
Also moved the `represent_scalar` setup into the init method. As a
global statement, it was causing exceptions trying to get an `id`
field that does not exist.
* Remove trailing whitespace
* Remove useless json.loads/dumps from yaml output