Logging Ansible output


  • با استفاده از کلید 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

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

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