কোনও প্রক্রিয়া চলছে কিনা তা নিশ্চিত করার জন্য উপযুক্ত কাজ


10

উত্তরযোগ্য ২.১

প্লেবুকে, আমি একটি প্রক্রিয়া শুরু করেছি:

- name: Start Automation Agent, and enable start on boot
  service: name=mongodb-mms-automation-agent state=started enabled=yes

প্লে রেকাপ থেকে, এটি প্রক্রিয়াটি সফলভাবে শুরু হয়েছে বলে মনে হয়।

TASK [install : Start automation agent, and enable start on boot] **************
changed: [server1]

যাইহোক, যখন দূরবর্তী হোস্টে লগ ইন করুন এবং একটি করুন ps, প্রক্রিয়াটি চলছে না। প্রক্রিয়া লগ পরীক্ষা করে এটি কিছু পূর্ব-প্রয়োজনীয় (উদ্দেশ্যে) ব্যর্থ হয়েছিল।

প্রক্রিয়াটি সফলভাবে শুরু হয়েছে তা নিশ্চিত করার জন্য আমি কীভাবে কোনও প্লেবুকে কোনও কাজ লিখব?

উত্তর:


12

failedআপনার কমান্ড চালানোর পরে আপনি জিনজা 2 ফিল্টারটি পরীক্ষা করতে পারেন যা প্রক্রিয়াটি চলছে কিনা তা পরীক্ষা করে।

systemctl status apache2অ্যাপাচি চলছে কিনা তা নির্ধারণের জন্য কমান্ডের আউটপুট ব্যবহার করে এমন একটি উদাহরণ এখানে দেওয়া হয়েছে :

- 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

যদি প্রথম টাস্কের কমান্ড ব্যর্থ হয় তবে দ্বিতীয় কাজটি ব্যর্থ হবে এবং প্রথম কার্যটি কেন ব্যর্থ হয়েছিল তা প্রদর্শিত হবে show
রিটার্ন কোডটি সংরক্ষণ করা হয় 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?
হাওয়ার্ড লি

2
@ হাওয়ার্ডলি: আমি বিশ্বাস করি এটি রিটার্ন কোডটি চেক করে, এবং যদি তা না হয় তবে এটি 0বিবেচনা করা হয় failed
ডেলটিক

1
PS এর পরিবর্তে | pgrep apache2
গ্রেপ

@ মডেডি: আমি এটি পছন্দ করি। উত্তর আপডেট করার পরামর্শ দিতে pgrep!
ডেলটিক

4

আমি এখন এটি কি:

- name: Confirm Automation Agent is running
  command: service mongodb-mms-automation-agent status
  register: agent_status
  failed_when: "'NOT' in agent_status.stdout"
  changed_when: False

failed_when1.4 এ চালু হয়। changed_when: Falseপরিবর্তন স্থিতি দমন করতে ব্যবহৃত হয়। আরও পড়ুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.