我想解析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 }}
答案 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