任务问题 确保 Nginx 已停止

问题描述

我写了一个角色来运行 reactos 应用程序,问题发生在一个任务中,以确保 Nginx 已停止。我收到一个奇怪的错误

enter image description here

如果我从角色中删除这一点,应用程序将成功关闭,但我希望它也能使用它 以前的任务效果很好

- name: Ensure Nginx is not installed
  apt:
    name: Nginx
    state: absent

但这不起作用

- name: Ensure that Nginx is stopped
  ansible.builtin.systemd:
    name: Nginx
    state: stopped

如何解决问题

解决方法

使用服务。它在大多数用例中都兼容。

Service - 控制远程主机上的服务。支持的初始化系统包括 BSD init、OpenRC、SysV、Solaris SMF、systemd、upstart。

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_module.html

---

- hosts: localhost
  gather_facts: false
  become: true
  tasks:
    - name: Ensure nginx is installed
      apt:
        name: nginx
        state: latest

    - name: service started
      service:
        name: nginx
        state: started

    - name: service stopped
      service:
        name: nginx
        state: stopped

sysvinit - 控制使用 SysV init 系统的目标主机上的服务。 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/sysvinit_module.html

---

- hosts: localhost
  gather_facts: false
  become: true
  tasks:
    - name: Ensure nginx is installed
      apt:
        name: nginx
        state: latest

    - name: sysvinit started
      sysvinit:
        name: nginx
        state: started

    - name: sysvinit stopped
      sysvinit:
        name: nginx
        state: stopped

Systemd 要求:由 systemd 管理的系统。 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/systemd_module.html

---

- hosts: localhost
  gather_facts: false
  become: true
  tasks:
    - name: Ensure nginx is installed
      apt:
        name: nginx
        state: latest
    
    # this one fails
    - name: systemd started - fail
      systemd:
        name: nginx
        state: started

    # this one fails
    - name: systemd stopped - fail
      systemd:
        name: nginx
        state: stopped