ansible yum检查更新解析输出以获得包列表

时间:2018-02-01 10:41:55

标签: linux ansible yum

我想解析yum check-update ansible等效的输出,只得到人类可读格式的包列表。

到目前为止我的代码:

- name: check for updates
  hosts: localhost
  gather_facts: true

  tasks:

 - name: check for updates (yum)
   yum: list=updates update_cache=true
   register: yumoutput
   when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
 - debug: msg={{ yumoutput.stdout | from_json }}

但我明白了:

  

致命:[localhost]:失败! => {" msg":"({{yumoutput.stdout | from_json}})发生了意外的模板类型错误:期望的字符串或缓冲区"}

编辑:完整的剧本:

---
- name: check for updates
  hosts: localhost
  gather_facts: true

  tasks:
  - name: check for updates (yum)
    yum: list=updates update_cache=true
    register: yumoutput
    when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
  - debug: var=yumoutput
    msg: "{{ yumoutput.results | map(attribute='name') | list }}

2 个答案:

答案 0 :(得分:4)

yum模块未注册stdout密钥 - 您可以使用debug: var=yumoutput查看。

您需要从词典列表中提取包名称,例如:

debug:
  msg: "{{ yumoutput.results | map(attribute='name') | list }}"

答案 1 :(得分:-1)

除了上述解决方案。您可以使用回调插件来轻松读取输出。

下面是一个人类可读的回叫插件:

https://github.com/n0ts/ansible-human_log

有关回拨插件的详细信息:

http://docs.ansible.com/ansible/devel/plugins/callback.html