Ansible打印列表/表格中的主机名/variables

有没有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参数的templatecopy模块的文件中。

    首先,您需要将字典组合成一个列表,并遍历模板中的项目。

您可以使用标准的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