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 }}"
ব্যাখ্যা:
- প্রথম টাস্ক:
statমডিউল ব্যবহার করে/etc/passwdফাইলটি আছে কিনা তা চেক করা হচ্ছে এবং এর ফলাফলfile_checkভ্যারিয়েবলে সংরক্ষণ করা হচ্ছে। - দ্বিতীয় টাস্ক:
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.existsfalseহবে, অর্থাৎ/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 কে আরো ডায়নামিক এবং ফ্লেক্সিবল করা যায়।
Read more