使用 Ansible 剧本获取 NGINX 状态

Get NGINX status with an Ansible playbook

我尝试从 Ansible 剧本安装 NGINX。

目前我使用这个剧本来安装它:

---
- hosts: all
  gather_facts: true
  become: true
  become_user: root
  tasks:
    - apt:
        name: nginx
      when: ansible_os_family == "Debian"

有效:

Identity added: /runner/artifacts/46/ssh_key_data (root@debian)
SSH password: 
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.1.75]
TASK [apt] *********************************************************************
changed: [192.168.1.75]
PLAY RECAP *********************************************************************
192.168.1.75               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

但我想在剧本的最后看到 NGINX 服务的状态,就像这样:

Identity added: /runner/artifacts/46/ssh_key_data (root@debian)
SSH password: 
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.1.75]
TASK [apt] *********************************************************************
changed: [192.168.1.75]
TASK [Verify nginx state] *********************************************************************
 nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-02-14 17:59:13 CET; 20s ago
       Docs: man:nginx(8)
    Process: 1723 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 1724 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 1907 (nginx)
      Tasks: 2 (limit: 445)
     Memory: 5.6M
        CPU: 99ms
     CGroup: /system.slice/nginx.service
             ├─1907 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─1910 nginx: worker process

PLAY RECAP *********************************************************************
192.168.1.75               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

或类似的东西。
如何实现?

您可以从此处的 sudo 命令中获取详细信息

  - name: check for service status
    shell: sudo service nginx status
    ignore_errors: true
    register: nginxstatus

  - name: Show service service status
    debug:
      msg: 'nginxstatus exists.' 
    when: nginxstatus.rc | int == 0

甚至更好

- name: Check status of the nginx server
  shell: 'systemctl nginx status'
  register: command_output

- debug:
         var: command_output.stdout_lines

关于您的要求

I would like to see the state of the nginx service a the end of my playbook

建议只使用systemd模块。

- name: Make sure 'nginx' is started
  systemd:
    name: nginx
    state: started
    enabled: yes
  register: result

- name: Show result
  debug:
    msg: "{{ result }}"

为了稍后检查特定服务,您可以使用 service_facts

- name: Gathering service facts
  service_facts:

- name: Get facts
  debug:
    msg:
      - "{{ ansible_facts.services['nginx'].status }}"