आप failed
जिन्जा 2 फ़िल्टर के साथ अपने कमांड को चलाने के बाद जांच सकते हैं कि प्रक्रिया चल रही है या नहीं।
यहाँ एक उदाहरण है जो systemctl status apache2
Apache चल रहा है यह तय करने के लिए कमांड के आउटपुट का उपयोग करता है:
- name: Check if Apache is running
command: systemctl status apache2
ignore_errors: yes
changed_when: false
register: service_apache_status
- name: Report status of Apache
fail:
msg: |
Service apache2 is not running.
Output of `systemctl status apache2`:
{{ service_apache_status.stdout }}
{{ service_apache_status.stderr }}
when: service_apache_status | failed
यदि पहले कार्य की कमान विफल हो गई, तो दूसरा कार्य विफल हो जाएगा और दिखाएगा कि पहला कार्य विफल क्यों हुआ।
रिटर्न कोड में संग्रहीत किया जाता है service_apache_status.rc
।
उदाहरण विफलता का आउटपुट:
TASK: [Check if Apache is running] ***********************
failed: [localhost] => {"changed": false, "cmd": ["systemctl", "status", "apache2"], "delta": "0:00:00.009379", "end": "2016-06-06 15:17:27.827172", "rc": 3, "start": "2016-06-06 15:17:27.817793", "stdout_lines": ["* apache2.service", " Loaded: not-found (Reason: No such file or directory)", " Active: inactive (dead)"], "warnings": []}
stdout: * apache2.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
...ignoring
TASK: [Report status of Apache] ***************************
failed: [localhost] => {"failed": true}
msg: apache2 is not running
systemctl status apache2 output:
* apache2.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
यहां अलग है (यद्यपि संभवतः कम विश्वसनीय) तरीका, pgrep
जाँच करने के लिए कि क्या प्रक्रिया चल रही है:
- name: Check if Apache is running
shell: pgrep apache2
ignore_errors: yes
changed_when: false
register: service_apache_status
- name: Report status of Apache
fail:
msg: |
Service apache2 is not running.
Return code from `pgrep`:
{{ service_apache_status.rc }}
when: service_apache_status.rc != 0
when: service_apache_status | failed
करता है? क्या इसमेंfailed
टोकन दिखता हैservice_apache_status
?