如何在不使用“-v”选项的情况下显示 Ansible 剧本的任务输出

How to display output of tasks of an Ansible playbook without using the '-v' option

我有以下任务来打印出安装在某些服务器上的当前版本的 jenkins:

---
- hosts: all                                   
  remote_user: user                         
  tasks:
      - name: Printing the Jenkins version running on the masters
        yum:
          name: jenkins
        register: version

      - debug: var=version

我试图避免在 运行 编写 playbook 时使用 -v 选项,希望尽可能保持输出干净。

如果剧本是 运行 而没有 -v 选项,则输出如下所示:

TASK [Printing the jenkins version that is installed on each of the servers]***************
ok: [Server1]
ok: [Server2]
ok: [Server3]

TASK [debug] *******************************************************************    ok: [Server1] => {
"changed": false, 
"version": "VARIABLE IS NOT DEFINED!"
}

ok: [Server1] => {
"changed": false, 
"version": "VARIABLE IS NOT DEFINED!"
}

ok: [Server1] => {
"changed": false, 
"version": "VARIABLE IS NOT DEFINED!"
}

但是 returns 该版本未定义。我对为什么会发生这种情况感到困惑,因为我已经以相同的方式为一堆其他任务完成了打印,没有任何问题。非常感谢任何建议。

您可以创建 ansible 回调插件,或使用网络中可用的插件 即

human_log

您可以使用 shell 和 debug

来实现
---
- hosts: all                                   
  remote_user: user
  become: True
  become_method: sudo      
  tasks:
      - name: Printing the Jenkins version running on the masters
        shell: cat /var/lib/jenkins/config.xml | grep '<version>'
        register: version

      - debug: var={{ version['stdout'] }}