Ansible 如何在不使用'-v';选项

Ansible 如何在不使用'-v';选项,ansible,yum,Ansible,Yum,我有以下任务来打印一些服务器上安装的jenkins的当前版本: --- - hosts: all remote_user: user tasks: - name: Printing the Jenkins version running on the masters yum: name: jenkins r

我有以下任务来打印一些服务器上安装的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
选项的情况下运行playbook,则输出如下所示:

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!"
}

但是,它返回未定义的版本。我对为什么会发生这种情况感到困惑,因为我以同样的方式完成了一系列其他任务的打印,没有任何问题。非常感谢您的任何建议。

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


您可以使用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'] }}
---
-主持人:全部
远程用户:用户
变成:真的
方法:sudo
任务:
-名称:打印主机上运行的Jenkins版本
shell:cat/var/lib/jenkins/config.xml | grep“
注册:版本
-调试:var={{version['stdout']}

检查您的ansible版本。使用2.2对我来说很好。1@KonstantinSuvorov我使用ansible 2.3,因为这是jenkins_脚本模块使用的唯一版本。除了更改为Ansible 2.2.1之外,还有其他解决方法吗?为什么
debug
任务在
Server1
上运行三次?你是从真实输出中复制成绩单的,还是你自己发明的?谢谢,你的建议奏效了。只需将调试任务更改为:var=version.stdout\u行