删除包 ansible playbook

问题描述 投票:0回答:3

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

我有一个使用

apt
安装 2 个软件包的任务。

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

我现在想从我的实例中删除/删除

tig
。我已将其从我的剧本中删除并运行了
vagrant provision
但该包仍然存在。

我该怎么做?

amazon-ec2 vagrant ansible
3个回答
20
投票

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

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

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

5
投票

从 playbook 中删除软件包将确保该软件包不会安装在新配置的计算机上,但如果该软件包已安装在配置的计算机上,则不会删除该软件包。如果可能,您可以使用

vagrant destroy
销毁机器并创建/配置一台新机器。

如果无法销毁机器并配置新机器,那么您可以添加一个 ansible 任务来删除已安装的软件包。使用

absent
作为状态将删除包。

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

2
投票

Sudo 现已弃用,不再推荐。使用“become”代替。

- name: Remove TIG
  apt:
    pkg: tig
    state: absent
  become: yes
© www.soinside.com 2019 - 2024. All rights reserved.