我正在尝试学习 Ansible,但遇到了奇怪的事情。我有以下剧本:
---
- name: "Uninstall apache server"
hosts: all
become: true
tasks:
- name: "Uninstall packages"
apt:
name: nginx
state: absent
- name: "Stop nginx"
service:
name: nginx
state: stopped
enabled: no
问题在于执行,我的意思是我得到: 这意味着包没有安装,但在控制台中我看到 当我写作时
apt-get remove nginx
我有
但为什么我的服务存在并且正在运行?我执行了这一步:
- 通过 ansible playbook 安装 nginx - 状态为当前
- 通过 ansible playbook 卸载 nginx - 状态缺失
结果是:软件包被删除,但服务仍然存在且正常运行。我做错了什么?
答案1
这是正常现象,与 ansible 无关。如果您手动执行相同的步骤(至少在 Ubuntu 上),您将获得相同的结果。
原因是,该服务不属于该nginx
包,而是属于nginx-common
作为依赖项安装的。
要解决这个问题,您需要运行apt autoremove
,它将删除所有未明确安装且不再需要的包。
在 ansible 中,您可以通过设置autoremove
属性来执行此操作,该属性no
默认设置为。
- name: "Uninstall packages"
apt:
name: nginx
state: absent
autoremove: yes