What is ignore_errors in ansible PlayBook


  • ابتدا لازم به ذکر است در صورتی که یکی از فرآیندهای موجود در PlayBook با خطا رو به رو شود، روند اجرای فرآیندها متوقف می‌شود.
  • یعنی ممکن است در یکی از فرآیندها ، خطایی رخ دهد، در این صورت فرآیندهای بعدی اجرا نخواهد شد.
  • برای حل این مشکل می‌توان از کلید ignore_errors استفاده نمود.
  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا دست نوشته‌ی test.sh بر روی تمامی خادم‌های تحت مدیریت اجرا شود.
    • سپس دستور whoami بر روی تمامی خادم‌های تحت مدیریت اجرا شود.
    • در نهایت در صورتی که مشکلی در فرآیند اول رخ دهید، فرآیند دوم اجرا شده و PlayBook متوقف نمی‌شود.
---
- name: PlayBook 
  hosts: all
  gather_facts: no
  tasks:
  - name: run script
    script: /root/test.sh
    ignore_errors: yes
  - name: run whoami command
    command: whoami
...
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
  • در صورت اجرای موفقیت آمیز پرونده‌ی PlayBook ، خروجی‌ای مشابه زیر دریافت خواهید کرد :
PLAY [PlayBook] *******************************************************************************************************************************************************************************************

TASK [run script] *****************************************************************************************************************************************************************************************
fatal: [172.16.0.247]: FAILED! => {"changed": false, "msg": "Could not find or access '/root/test.sh'"}
...ignoring
fatal: [172.16.0.248]: FAILED! => {"changed": false, "msg": "Could not find or access '/root/test.sh'"}
...ignoring
fatal: [172.16.0.245]: FAILED! => {"changed": false, "msg": "Could not find or access '/root/test.sh'"}
...ignoring

TASK [run command] ****************************************************************************************************************************************************************************************
changed: [172.16.0.248]
changed: [172.16.0.245]
changed: [172.16.0.247]

PLAY RECAP ************************************************************************************************************************************************************************************************
172.16.0.245               : ok=2    changed=1    unreachable=0    failed=0
172.16.0.247               : ok=2    changed=1    unreachable=0    failed=0
172.16.0.248               : ok=2    changed=1    unreachable=0    failed=0
  • نکته: همان طور که ملاحظه می‌کنید، دست نوشته‌ی test.sh پیدا نشد اما روند اجرای فرآیندها متوقف نشده است.
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.

  • به منظور مطالعه‌ی بیشتر لینک‌ زیر پیشنهاد می‌شود :
https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html

  • آزمایش شده بر روی Ansible نسخه‌ی 2.5.1
  • آزمایش شده بر روی سیستم عامل Ubuntu 18.04

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *