Debian 如何使用Ansible获取已安装的apt软件包?
我试图列出我的Debian 7/8/9机器上安装的所有软件包。使用apt或dpkg有一些简单的方法来处理它,但是我找不到一个合适的方法来使用ansible开箱即用 有没有一个好的和顺利的方法来做到这一点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 -
对于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'