Ansible - 我怎样才能确定Linux系统中只安装了特定的软件包

时间:2017-07-17 11:16:50

标签: ansible

我想使用Ansible来确保在Linux系统中安装特定的软件包,但另外我想确保没有安装额外的软件包。顺便说一句,如果我只想要包:unzip,vim,tcsh等安装。我想知道是否安装了不在此列表中的软件包,我可能想将其删除。

有没有办法用Ansible做到这一点?

感谢。

2 个答案:

答案 0 :(得分:0)

这完全取决于Linux OS正在使用的包管理器。幸运的是,主要模块有模块:

http://docs.ansible.com/ansible/list_of_packaging_modules.html#os

这是apt插件的一个片段:

- name: Remove "foo" package
  apt:
    name: foo
    state: absent

- name: Install the package "foo"
  apt:
    name: foo
    state: present

但其他人提供类似的功能。

答案 1 :(得分:0)

从Ansible 2.5开始,您可以使用package_facts模块:

vars:
  whitelist:
    - vim
    - unzip
tasks:
  - name: Get package facts
    package_facts:
      manager: apt
  - name: Install all packages in whitelist
    apt:
      name: "{{ whitelist }}"
      state: latest
  - name: Remove all packages not in whitelist
    apt:
      name: "{{ ansible_facts.packages | difference(whitelist)}}"
      state: absent