有没有Ansible打印出一个简单的表格样式输出的方法。 我已经得到了我需要在Playbook中注册到一个variables的值,我只是想把它打印得更干净。 目前我有stdout.lines的输出如下所示:
ok: [sage] => { "voutput.stdout_lines": [ "4.4.5" ] } ok: [example] => { "voutput.stdout_lines": [ "4.7" ] }
但是,如果我可以更像这样格式化它会更好:
sage 4.7 example 4.4.5 somethingelse 1.2.3
有没有什么办法可以直接在Ansible内部做些什么,或者我只需要输出它,并用AWK之类的东西进行转换呢?
您可以:
使用callback插件修改Ansible的日志输出。 这将需要一些Python编码。 不幸的是, 示例插件的移动似乎满足您的要求。
使用Jinja2模板并将输出保存到具有content参数的template或copy模块的文件中。
首先,您需要将字典组合成一个列表,并遍历模板中的项目。
您可以使用标准的json输出callback和jq获取所需的数据。
主机:
[test] srv1 testvar=abc srv2 testvar=zzzzzz srv3 testvar=qqqq
playbook.yml:
- hosts: test gather_facts: no tasks: - debug: var=testvar
执行:
$ ANSIBLE_STDOUT_CALLBACK=json ansible-playbook playbook.yml | jq -r '.plays[0].tasks[0].hosts | to_entries[] | "\(.key), \(.value.testvar)"' srv1, abc srv2, zzzzzz srv3, qqqq