我有一个使用 Vagrant 创建并使用 Ansible 进行配置的 EC2 实例。
我有一个使用
apt
安装 2 个软件包的任务。
---
- name: Install GIT & TIG
action: apt pkg={{ item }} state=installed
with_items:
- git
- tig
我现在想从我的实例中删除/删除
tig
。我已将其从我的剧本中删除并运行了 vagrant provision
但该包仍然存在。
我该怎么做?
当您从 playbook 中删除包时,Ansible 无法自动删除它们。 Ansible 是无状态。这意味着它不会跟踪它所做的事情,因此不知道它在最近的运行中做了什么,或者您的剧本/角色是否已被修改。 Ansible 只会执行您在剧本/角色中明确描述的操作。所以你必须写一个任务来删除它。
您可以使用 apt 模块轻松完成此操作。
- name: Remove TIG
apt:
pkg: tig
state: absent
become: true
从 playbook 中删除软件包将确保该软件包不会安装在新配置的计算机上,但如果该软件包已安装在配置的计算机上,则不会删除该软件包。如果可能,您可以使用
vagrant destroy
销毁机器并创建/配置一台新机器。
如果无法销毁机器并配置新机器,那么您可以添加一个 ansible 任务来删除已安装的软件包。使用
absent
作为状态将删除包。
- name: Remove TIG
action: apt pkg=tig state=absent
Sudo 现已弃用,不再推荐。使用“become”代替。
- name: Remove TIG
apt:
pkg: tig
state: absent
become: yes