使用 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 }}"
我尝试从 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 }}"