Ansible:模块的详细输出

时间:2016-11-14 12:41:09

标签: ansible ansible-2.x

我正在寻找一种方法来从Ansible模块获得更多详细的输出,以便成功执行,但是看起来实现的唯一示例是shell模块,它允许注册然后打印stdout和stderr。 虽然这是一种解决方法,但如果存在内置的Ansible模块,那么突破shell并不是一种好的做法。

举一个例子,一个模块的更详细的输出是有用的:

- name: upgrade all packages
  yum: name=* state=latest

使用yum模块更新所有包。但是,它没有显示更新的内容(如果有的话)。

在其他模块中可以观察到类似的行为。所以实际的问题是:是否有任何Ansible开关/设置可以在剧本中强制执行单个任务的更详细输出? (我想在我得到详细输出的地方挑选樱桃,避免其他一切产生的噪音。)

2 个答案:

答案 0 :(得分:4)

好的,感谢@xeroqu,我现在可以自己回答:

  - name: upgrade all packages
    yum: name=* state=latest
    register: result
  - name: Show output
    when: result|succeeded
    debug: msg="{{ result.results }}"

密钥位于{{result.results}}而不是{{result.stdout_lines}}。更确切地说,模块似乎返回一个带有(至少?)以下内容的字典:

ok: [localhost] => {
   "msg": {
       "changed": false,
       "msg": "",
       "rc": 0,
       "results": [
          "Nothing to do here, all packages are up to date"
       ]
   }
}

这绝对给了我一直在寻找的详细信息,可以根据具体情况进行处理。

答案 1 :(得分:3)

一个想法就是有另一个任务,如果成功,将打印上一个任务的输出。我没有测试,但这样的事情可能有用:

$('#project-filter-tex').on('keyup',function(){
    // do something
});