Debian 如何使用Ansible获取已安装的apt软件包?

Debian 如何使用Ansible获取已安装的apt软件包?,debian,ansible,idempotent,Debian,Ansible,Idempotent,我试图列出我的Debian 7/8/9机器上安装的所有软件包。使用apt或dpkg有一些简单的方法来处理它,但是我找不到一个合适的方法来使用ansible开箱即用 有没有一个好的和顺利的方法来做到这一点 对于RHEL机器,我发现了以下帖子:Ansible似乎没有提供任何支持此功能的模块。您必须使用shell或命令 - name: Get packages shell: dpkg-query -f '${binary:Package}\n' -W register: packages -

我试图列出我的Debian 7/8/9机器上安装的所有软件包。使用apt或dpkg有一些简单的方法来处理它,但是我找不到一个合适的方法来使用ansible开箱即用

有没有一个好的和顺利的方法来做到这一点


对于RHEL机器,我发现了以下帖子:

Ansible似乎没有提供任何支持此功能的模块。您必须使用
shell
命令

- name: Get packages
  shell: dpkg-query -f '${binary:Package}\n' -W
  register: packages

- name: Print packages
  debug:
    msg: "{{ packages.stdout_lines }}" 

由于ansible 2.5,您可以使用package_facts模块:


请注意,您需要debian上的ansible apt模块(由提供)

感谢您使用dpkg查询的想法,我从来没有想过这个问题。
- 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'