Search code examples
ansibleansible-2.x

Formatting stdout in a debug task of Ansible


Assuming the below tasks:

- shell: "some_script.sh"
  register: "some_script_result"

- debug:
    msg: "Output: {{ some_script_result.stdout_lines }}

I receive the below output:

"msg": "Output: [u'some_value',u'some_value2,u'some_value3]"

How do I get the output to print as?

"msg":
Output:
  - some_value
  - some_value2
  - some_value3

Ansible version is 2.4.2.


Solution

  • Try this option. You’ll love it.

    There's a new YAML callback plugin introduced with Ansible 2.5 — meaning any machine running Ansible 2.5.0 or later can automatically start using this format without installing custom plugins.

    To use it, edit your ansible.cfg file (either globally, in /etc/ansible/ansible.cfg, or locally in your playbook/project), and add the following lines under the [defaults] section:

    # Use the YAML callback plugin.
    stdout_callback = yaml
    # Use the stdout_callback when running ad-hoc commands.
    bin_ansible_callbacks = True
    

    Now I can easily read through your output message

    If you get the following error:

    ERROR! Invalid callback for stdout specified: yaml

    run

    ansible-galaxy collection install community.general