我想在Debian 7/8/9机器上列出所有已安装的软件包。有一些简单的方法可以使用apt或dpkg来处理它,但我找不到一个正确的方法来使用开箱即用的ansible。
有没有一种很好的方式来做到这一点?
对于RHEL机器,我发现了这篇帖子:How to get the installed yum packages with Ansible?
答案 0 :(得分:1)
看起来Ansible提供的任何模块都不支持此功能。您必须使用shell
或command
。
- name: Get packages
shell: dpkg-query -f '${binary:Package}\n' -W
register: packages
- name: Print packages
debug:
msg: "{{ packages.stdout_lines }}"
答案 1 :(得分:0)
从ansible 2.5开始,您可以使用package_facts模块: https://docs.ansible.com/ansible/latest/modules/package_facts_module.html
- name: Gather package facts
package_facts:
manager: auto
- name: Debug if package is present
debug:
msg: 'yes, mypackage is present'
when: '"mypackage" in ansible_facts.packages'
- name: Debug if package is absent
debug:
msg: 'no, mypackage is absent'
when: '"mypackage" not in ansible_facts.packages'
请注意,您需要为此在debian上使用ansible-apt模块(由https://galaxy.ansible.com/robertdebock/bootstrap提供)。