Ansible标准格式

Kim*_*mel 5 ansible ansible-2.x

承担以下任务:

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

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

我收到以下输出:

“ msg”:“输出:[u'some_value',u'some_value2,u'some_value3]”

如何获得输出以打印为?

“味精”:

输出:

some_value

some_value2

some_value3

Ansible版本是2.4.2。

谢谢!

小智 9

到目前为止,我发现在 Ansible 中获得类似 CLI 的输出效果最好,而且应该开箱即用(至少对我来说在 Fedora 34、Ansible 2.9 上),就是为unixy压缩的 Ansible 输出设置回调

stdout_callback = unixy
bin_ansible_callbacks = True
Run Code Online (Sandbox Code Playgroud)

在你的ansible.cfg。给定任务

  tasks:
    - name: uptime
      shell: uptime
    - name: volumes
      shell: "df -h"
Run Code Online (Sandbox Code Playgroud)

终端中的输出将如下所示

- all on hosts: all -
uptime...
  host1 done | stdout:  08:20:09 up 33 min,  1 user,  load average: 0.55, 0.27, 0.26
  host2 done | stdout:  08:20:09 up 1 day,  1:39,  1 user,  load average: 0.18, 0.17, 0.17

volumes...
  host1 done | stdout: Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.2G  1.5G  5.4G  21% /overlay/pivot
devtmpfs        212M     0  212M   0% /dev
none            217M     0  217M   0% /overlay/pivot/overlay
none            217M  137M   80M  64% /overlay/rwdata
overlay         217M  137M   80M  64% /
tmpfs           217M     0  217M   0% /dev/shm
tmpfs           217M   25M  192M  12% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           217M     0  217M   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   53M  200M  21% /boot
tmpfs            44M     0   44M   0% /run/user/1000
  host2 done | stdout: Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.2G  1.5G  5.4G  22% /overlay/pivot
devtmpfs        212M     0  212M   0% /dev
none            217M     0  217M   0% /overlay/pivot/overlay
none            217M  103M  114M  48% /overlay/rwdata
overlay         217M  103M  114M  48% /
tmpfs           217M     0  217M   0% /dev/shm
tmpfs           217M  5.8M  211M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           217M     0  217M   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   53M  200M  21% /boot
tmpfs            44M     0   44M   0% /run/user/1000


- Play recap -
  host1           : ok=1    changed=1    unreachable=0    failed=0    rescued=0    ignored=0   
  host2           : ok=1    changed=1    unreachable=0    failed=0    rescued=0    ignored=0   
Run Code Online (Sandbox Code Playgroud)

您应该能够使用列出所有可用的回调插件ansible-doc -t callback -l及其各自的文档ansible-doc -t callback <plugin name>

源文档


imj*_*gel 7

试试这个选项。你会爱上它。

Ansible 2.5引入了一个新的YAML回调插件,这意味着任何运行Ansible 2.5.0或更高版本的计算机都可以自动开始使用此格式,而无需安装自定义插件。

要使用它,请编辑ansible.cfg文件(在/etc/ansible/ansible.cfg中为全局文件,或在Playbook /项目中为本地文件),然后在[defaults]部分下添加以下几行:

# Use the YAML callback plugin.
stdout_callback = yaml
# Use the stdout_callback when running ad-hoc commands.
bin_ansible_callbacks = True
Run Code Online (Sandbox Code Playgroud)

现在,我可以轻松阅读您的输出消息

  • Ansible 2.4+ 内置了对人类可读结果的支持:通过在环境 `export ANSIBLE_STDOUT_CALLBACK=debug` 中临时设置 ANSIBLE_STDOUT_CALLBACK=debug 或通过在 ansible.cfg [default] 的 [default] 部分设置 stdout_callback=debug 永久设置人类可读的 stdout/stderr 结果显示 stdout_callback = debug 来自 [Github](https://github.com/ansible/ansible/issues/27078) (5认同)
  • 我在`/etc/ansible`位置看不到`ansible.cfg`文件。但有一个名为“ansible.cfg.rpmsave”的不同文件。编辑此文件也可以解决该问题。仅供任何对没有“ansible.cfg”文件感到困惑的人使用。 (2认同)