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

时间:2017-08-01 09:47:12

标签: debian ansible idempotent

我想在Debian 7/8/9机器上列出所有已安装的软件包。有一些简单的方法可以使用apt或dpkg来处理它,但我找不到一个正确的方法来使用开箱即用的ansible。

有没有一种很好的方式来做到这一点?

对于RHEL机器,我发现了这篇帖子:How to get the installed yum packages with Ansible?

2 个答案:

答案 0 :(得分:1)

看起来Ansible提供的任何模块都不支持此功能。您必须使用shellcommand

- 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提供)。