- با استفاده از کلید no_log میتوان خروجی موفقیت آمیز یا خطاوار یک فرآیند را مدیریت و کنترل کرد.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا دست نوشتهی test.sh بر روی تمام خادمهای تحت مدیریت اجرا شود.
- سپس دستور whoami بر روی تمام خادمهای تحت مدیریت اجرا شود.
- سپس در صورت بروز خطا در اجرای هر یک از فرآیندها، متن خطای مربوطه نمایش داده نشود.
- در نهایت در صورت بروز خطا در اجرای فرآیند اول، روند اجرای فرآیندها متوقف نشود.
---
- name: PlayBook
hosts: all
gather_facts: no
ignore_errors: yes
no_log: yes
tasks:
- name: run script
script: /root/test.sh
ignore_errors: yes
- name: run command
command: whoami
...
- با استفاده از قابلیت ignore_errors مشخص کردیم که در صورت بروز هرگونه خطا، اجرای فرآیندهای بعدی متوقف نشود.
- در صورتی که مقدار کلید no_log بر روی no تنظیم شده باشد، در صورت بروز خطا، خطای رخ داده در قالب کلید msg نمایش داده میشود.
- اما در صورتی که مقدار کلید no_log بر روی yes تنظیم شده باشد، این خطا نمایش داده نخواهد شد.
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
- در صورتی که مقدار no_log بر روی no تنظیم شده باشد، خروجیای مشابه زیر دریافت خواهید کرد :
PLAY [PlayBook] **************************************************************************************************************************************
TASK [run script] ************************************************************************************************************************************
fatal: [172.16.0.247]: FAILED! => {"changed": false, "msg": "Could not find or access '/root/test.sh'"}
...ignoring
TASK [run whoami command] ****************************************************************************************************************************
changed: [172.16.0.247]
PLAY RECAP *******************************************************************************************************************************************
172.16.0.247 : ok=2 changed=1 unreachable=0 failed=0
- در صورتی که مقدار no_log بر روی yes تنظیم شده باشد، خروجیای مشابه زیر دریافت خواهید کرد :
PLAY [PlayBook] **************************************************************************************************************************************
TASK [run script] ************************************************************************************************************************************
fatal: [172.16.0.247]: FAILED! => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", "changed": false}
...ignoring
TASK [run whoami command] ***********************************************************************************************************************************
changed: [172.16.0.247]
PLAY RECAP *******************************************************************************************************************************************
172.16.0.247 : ok=2 changed=1 unreachable=0 failed=0
- به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
- به منظور مطالعهی بیشتر لینک زیر پیشنهاد میشود :
https://docs.ansible.com/ansible/latest/reference_appendices/logging.html
- آزمایش شده بر روی Ansible نسخهی 2.5.1
- آزمایش شده بر روی سیستم عامل Ubuntu 18.04