- ابتدا لازم به ذکر است در صورتی که یکی از فرآیندهای موجود در PlayBook با خطا رو به رو شود، روند اجرای فرآیندها متوقف میشود.
- یعنی ممکن است در یکی از فرآیندها ، خطایی رخ دهد، در این صورت فرآیندهای بعدی اجرا نخواهد شد.
- برای حل این مشکل میتوان از کلید ignore_errors استفاده نمود.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا دست نوشتهی test.sh بر روی تمامی خادمهای تحت مدیریت اجرا شود.
- سپس دستور whoami بر روی تمامی خادمهای تحت مدیریت اجرا شود.
- در نهایت در صورتی که مشکلی در فرآیند اول رخ دهید، فرآیند دوم اجرا شده و PlayBook متوقف نمیشود.
|
1 2 3 4 5 6 7 8 9 10 11 |
--- - name: PlayBook hosts: all gather_facts: no tasks: - name: run script script: /root/test.sh <span style="color: #ff0000;"> ignore_errors: yes</span> - name: run whoami command command: whoami ... |
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- در صورت اجرای موفقیت آمیز پروندهی PlayBook ، خروجیای مشابه زیر دریافت خواهید کرد :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
PLAY [PlayBook] ******************************************************************************************************************************************************************************************* TASK [run script] ***************************************************************************************************************************************************************************************** fatal: [172.16.0.247]: FAILED! => {"changed": false, "msg": "Could not find or access '/root/test.sh'"} ...<span style="color: #ff0000;">ignoring</span> fatal: [172.16.0.248]: FAILED! => {"changed": false, "msg": "Could not find or access '/root/test.sh'"} ...<span style="color: #ff0000;">ignoring</span> fatal: [172.16.0.245]: FAILED! => {"changed": false, "msg": "Could not find or access '/root/test.sh'"} ...<span style="color: #ff0000;">ignoring</span> 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 پیدا نشد اما روند اجرای فرآیندها متوقف نشده است.
- به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
- به منظور مطالعهی بیشتر لینک زیر پیشنهاد میشود :
|
1 |
https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html |
- آزمایش شده بر روی Ansible نسخهی 2.5.1
- آزمایش شده بر روی سیستم عامل Ubuntu 18.04