使用Ansible调用yum模块获取更新列表失败,提示register参数不支持
解决Ansible yum模块"Unsupported parameters for (yum) module: register"错误
问题原因
你碰到的这个错误根源很明确:register是Ansible里任务级别的关键字,作用是捕获整个任务的执行结果,它不属于yum模块本身的参数。你把它和list、exclude这些模块专属参数放在一起,自然会触发"参数不支持"的报错。
修正后的Playbook
只需要把register移到任务级别,和name、yum模块定义平级,就能正常运行了:
- hosts: all gather_facts: false become: yes user: username tasks: - name: List Available Patches (Non-Kernel) yum: list: updates update_cache: true exclude: kernel* register: yumoutput # 移到此处,与yum模块同级 - debug: msg: "{{ inventory_hostname }}: {{ yumoutput.results }}"
可读性优化提示
如果直接输出yumoutput.results显得太杂乱,你可以用循环逐个打印每个可更新包的详细信息,可读性会好很多:
- hosts: all gather_facts: false become: yes user: username tasks: - name: List Available Patches (Non-Kernel) yum: list: updates update_cache: true exclude: kernel* register: yumoutput - name: Print non-kernel updates debug: msg: "{{ inventory_hostname }}: {{ item.name }} - {{ item.version }}.{{ item.release }}" loop: "{{ yumoutput.results }}" when: yumoutput.results | length > 0
这个修正方案在你使用的Ansible 2.6.5和2.7.5版本中都能正常生效,因为这两个版本对任务关键字和模块参数的区分规则是一致的。
内容的提问来源于stack exchange,提问作者vijdhanz
相关产品推荐
相关产品推荐

