What is register and debug in ansible PlayBook


  • با استفاده از کلید register می‌توان خروجی یک ماژول را درون یک متغیر ریخت و همچنین با استفاده از کلید debug می‌توان محویات آن متغیر را چاپ نمود.
  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا ماژول ping برای تمام خادم‌های تحت مدیریت اجرا شود.
    • سپس خروجی ماژول ping بر روی متغیری با نام result ریخته شود.
    • در نهایت محتویات متغیر result خوانده و بر روی صفحه نمایش داده شود.
---
- name: PlayBook
  hosts: all
  gather_facts: no
  tasks:
  - name: use ping module
    ping:
    register: result
  - debug: var=result
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا دست نوشته‌ی script.sh بر روی تمام خادم‌های تحت مدیریت اجرا شود.
    • سپس در صورت اجرای موفقیت آمیز این ماژول، متنی دلخواه نمایش داده شود.
---
- name: PlayBook 
  hosts: all
  gather_facts: no
  tasks:
  - name: use script module
    script: /opt/script.sh
  - debug:
     msg: run script module
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا با استفاده از ماژول shell دستور find بر روی خادم‌های تحت مدیریت اجرا شود.
    • سپس خروجی دستور find درون متغیری با نام find_output ریخته شود.
    • در نهایت محتویات متغیر find_output چاپ و نمایش داده شود.
- hosts: all
  tasks:
  - name: Ansible register variable basic example
    shell: "find *.txt"
    args:
      chdir: "/etc/"
    register: find_output

  - debug:
      var: find_output
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
  • نکته: به منظور چاپ خروجی استاندارد ، پرونده‌ی PlayBook زیر را در نظر بگیرید :
- hosts: all
  tasks:
  - name: Ansible register variable basic example
    shell: "find *.txt"
    args:
      chdir: "/etc/"
    register: find_output

  - debug:
      var: find_output.stdout

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا با استفاده از ماژول shell دستور find بر روی خادم‌های تحت مدیریت اجرا شود.
    • سپس خروجی دستور find درون متغیری با نام with_output ریخته شود.
    • در نهایت تنها خروجی استاندارد دستور find که درون متغیر with_output ریخته شده است، درون یک حلقه قرار گیرد.
- hosts: all
  tasks:
  - name: Ansible register with_items example
    shell: "find *.txt"
    args:
      chdir: "/Users/mdtutorials2/Documents/Ansible"
    register: with_output

  - shell: "cp {{ item }} {{item}}_bkp"
    with_items:
      - "{{ with_output.stdout_lines }}"
  • پرونده‌ی PlayBook بالا باعث می‌شود تا در صورتی که پرونده‌ای درون مسیر مشخص شده یافت شد، یک پشتیبان از آن تهیه شود.
  • نکته: در صورتی که چندین پرونده پیدا شد، این امر توسط حلقه به دفعات تکرار می‌شود.
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
  • در مثال بالا از پسوند stdout_lines در زمان اشاره به متغیر with_output استفاده کردیم.
  • فهرست این دست از پسوندها به شرح زیر است :
changed
cmd
delta
end
failed
rc
start
stderr
stderr_lines
stdout
stdout_lines

  • به منظور مطالعه‌ی بیشتر لینک‌های زیر پیشنهاد می‌شود :
https://www.mydailytutorials.com/ansible-register-variables/
https://www.decodingdevops.com/ansible-register-module-with-examples/

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

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

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