删除包ansible playbook

Remove package ansible playbook

我有一个使用 Vagrant 创建并使用 Ansible 配置的 EC2 实例。

我的任务是使用 apt 安装 2 个包。

---
- name: Install GIT & TIG
  action: apt pkg={{ item }} state=installed
  with_items:
    - git
    - tig

我现在想要 delete/remove tig 来自我的实例。我已将它从我的剧本中删除并且我有 运行 vagrant provision 但包裹仍然存在。

我该怎么做?

从 playbook 中删除包将确保该包不会安装在新配置的计算机上,但如果已经安装在已配置的计算机上,则不会删除该包。如果可能的话,你可以使用 vagrant destroy 和 create/provision 一个新的机器来销毁机器。

如果无法销毁机器并提供新机器,那么您可以添加一个 ansible 任务来删除已安装的软件包。使用 absent 作为状态将删除包。

- name: Remove TIG
  action: apt pkg=tig state=absent

当您从 playbook 中删除包时,Ansible 无法自动删除它们。 Ansible 是 无状态的 。这意味着它不会跟踪它所做的事情,因此不知道它在最近的运行中做了什么,或者你的 playbook/role 是否已被修改。 Ansible 只会执行您在 playbook/role 中明确描述的操作。所以你必须写一个任务来删除它。

您可以使用 apt 模块轻松完成此操作。

- name: Remove TIG
  apt:
    pkg: tig
    state: absent
  become: true

Sudo 现已弃用,不再推荐使用。请改用 become。

- name: Remove TIG
  apt:
    pkg: tig
    state: absent
  become: yes