问题
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.
Thank you!
回答1:
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 global, in /etc/ansible/ansible.cfg, or a local one 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
回答2:
Another option:
https://blog.alexgittings.com/improving-the-ansible-output-with-anstomlog/
just store it inside ansible/ansible.cfg
➜ tree ansible
ansible
├── ansible.cfg
├── callbacks
│ ├── anstomlog.py
└── playbooks
└── nginx.yaml
ANSIBLE_CONFIG=ansible/ansible.cfg ansible-playbook -u centos --private-key .ssh/key -i `terraform output bastion_ip`, ansible/playbooks/nginx.yaml
来源:https://stackoverflow.com/questions/50009505/ansible-stdout-formatting