Ansible - nginx 包已删除,但服务仍在服务器上运行

Ansible - nginx 包已删除,但服务仍在服务器上运行

我正在尝试学习 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

我有

在此处输入图片描述

但为什么我的服务存在并且正在运行?我执行了这一步:

  1. 通过 ansible playbook 安装 nginx - 状态为当前
  2. 通过 ansible playbook 卸载 nginx - 状态缺失

结果是:软件包被删除,但服务仍然存在且正常运行。我做错了什么?

答案1

这是正常现象,与 ansible 无关。如果您手动执行相同的步骤(至少在 Ubuntu 上),您将获得相同的结果。

原因是,该服务不属于该nginx包,而是属于nginx-common作为依赖项安装的。

要解决这个问题,您需要运行apt autoremove,它将删除所有未明确安装且不再需要的包。

在 ansible 中,您可以通过设置autoremove属性来执行此操作,该属性no默认设置为。

- name: "Uninstall packages"
  apt:
    name: nginx
    state: absent
    autoremove: yes

相关内容