রেজিস্টার এবং কিভাবে ফলাফল সংরক্ষণ করা হয়

Ansible এ রেজিস্টার (Register) হলো একটি ফিচার যা টাস্কের আউটপুট বা ফলাফল সংরক্ষণ করে, এবং সেই সংরক্ষিত তথ্যকে পরবর্তী টাস্কে ব্যবহার করতে দেয়। এটি প্লেবুক বা টাস্কে ডায়নামিক অবস্থা নির্ধারণ করতে এবং কন্ডিশনাল অপারেশন চালাতে অত্যন্ত কার্যকর।

রেজিস্টার (Register) এর ব্যবহার

register কিওয়ার্ড ব্যবহার করে আপনি একটি টাস্কের আউটপুটকে একটি ভ্যারিয়েবলে সংরক্ষণ করতে পারেন। সংরক্ষিত এই আউটপুট ভ্যারিয়েবলের মধ্যে বিভিন্ন ডেটা থাকে, যেমন:

  • টাস্কটি সফল হয়েছে কিনা (changed বা failed),
  • টাস্কের আউটপুট বা স্ট্যান্ডার্ড আউটপুট (stdout),
  • টাস্ক থেকে কোনো ত্রুটি বার্তা থাকলে (stderr),
  • এবং আরো অনেক কিছু।

রেজিস্টার এর উদাহরণ

---
- name: Example of register usage
  hosts: localhost
  tasks:
    - name: Check if a file exists
      stat:
        path: /etc/passwd
      register: file_check

    - name: Display file existence
      debug:
        msg: "File exists: {{ file_check.stat.exists }}"

ব্যাখ্যা:

  1. প্রথম টাস্ক: stat মডিউল ব্যবহার করে /etc/passwd ফাইলটি আছে কিনা তা চেক করা হচ্ছে এবং এর ফলাফল file_check ভ্যারিয়েবলে সংরক্ষণ করা হচ্ছে।
  2. দ্বিতীয় টাস্ক: debug মডিউল ব্যবহার করে file_check ভ্যারিয়েবল থেকে stat.exists এর মান যাচাই করা হচ্ছে, যাতে ফাইলটি আছে কিনা তা জানা যায়।

রেজিস্টার করা ফলাফল ব্যবহার করা

register দিয়ে সংরক্ষিত ভ্যারিয়েবলের মাধ্যমে আপনি পরবর্তী টাস্কে কন্ডিশনাল লজিক প্রয়োগ করতে পারেন, যেমন:

  • when কন্ডিশন ব্যবহার করে।
  • আউটপুট থেকে নির্দিষ্ট ডেটা টেনে ব্যবহার করা।

উদাহরণ:

---
- name: Conditional task based on register result
  hosts: localhost
  tasks:
    - name: Check if a file exists
      stat:
        path: /etc/passwd
      register: file_check

    - name: Create a file if it does not exist
      file:
        path: /tmp/example.txt
        state: touch
      when: not file_check.stat.exists

ব্যাখ্যা:

  • প্রথম টাস্কে /etc/passwd ফাইলটি চেক করা হয়েছে এবং ফলাফল file_check তে সংরক্ষণ করা হয়েছে।
  • দ্বিতীয় টাস্কটি তখনই চালানো হবে যখন file_check.stat.exists false হবে, অর্থাৎ /etc/passwd ফাইলটি যদি না থাকে। এটি when কন্ডিশন দিয়ে চেক করা হয়েছে।

রেজিস্টার করা ফলাফল থেকে গুরুত্বপূর্ণ ফিল্ড

রেজিস্টার করা ভ্যারিয়েবলের মধ্যে বেশ কিছু সাধারণ ফিল্ড থাকে যা টাস্কের আউটপুট এবং স্ট্যাটাস সংরক্ষণ করে:

  • stdout: টাস্কের স্ট্যান্ডার্ড আউটপুট (text আকারে)।
  • stderr: ত্রুটির আউটপুট (যদি কোনো ত্রুটি ঘটে)।
  • changed: টাস্কটি চালানোর পর যদি কোনো পরিবর্তন হয়, তাহলে এটি true হবে।
  • failed: টাস্কটি ব্যর্থ হলে এটি true হবে।
  • rc: টাস্কের রিটার্ন কোড।
  • stdout_lines: স্ট্যান্ডার্ড আউটপুটের প্রতিটি লাইন আলাদা করে একটি লিস্ট হিসেবে সংরক্ষণ করে।

একটি উদাহরণ যেখানে টাস্কের আউটপুট থেকে নির্দিষ্ট মান সংরক্ষণ করা হচ্ছে:

---
- name: Command output register example
  hosts: localhost
  tasks:
    - name: Run a shell command
      command: echo "Hello, Ansible!"
      register: command_output

    - name: Display the command output
      debug:
        msg: "The command output was: {{ command_output.stdout }}"

ব্যাখ্যা:

  • প্রথম টাস্কে একটি শেল কমান্ড চালানো হয়েছে এবং আউটপুট command_output ভ্যারিয়েবলে সংরক্ষণ করা হয়েছে।
  • দ্বিতীয় টাস্কে debug মডিউল দিয়ে সেই আউটপুট দেখানো হয়েছে {{ command_output.stdout }} এর মাধ্যমে।

সংক্ষেপে:

  • register ব্যবহার করে আপনি টাস্কের আউটপুট একটি ভ্যারিয়েবলে সংরক্ষণ করতে পারেন।
  • সংরক্ষিত আউটপুট পরবর্তী টাস্কে ডায়নামিকভাবে ব্যবহার করা যায়।
  • আপনি আউটপুটের বিভিন্ন ফিল্ড (যেমন stdout, stderr, changed) ব্যবহার করে প্লেবুকে কন্ডিশন চেকিং করতে পারেন।

এই ভাবে register এবং এর সাথে সংরক্ষিত ফলাফল ব্যবহার করে Ansible Playbook কে আরো ডায়নামিক এবং ফ্লেক্সিবল করা যায়।

আরও দেখুন...

Promotion