Ansible রোল (Role) হলো একটি সংগঠিত পদ্ধতি যেখানে টাস্ক, হ্যান্ডলার, ভ্যারিয়েবল, টেম্পলেট, এবং অন্যান্য ফাইলগুলো একটি নির্দিষ্ট কাঠামোতে সাজানো হয়। রোল ব্যবহার করে আপনার প্লেবুকগুলিকে পুনরায় ব্যবহারযোগ্য এবং সহজে পরিচালনাযোগ্য করা যায়। Ansible রোলের একটি নির্দিষ্ট ডিরেক্টরি স্ট্রাকচার আছে যা মেনে চলা উচিত, যাতে Ansible সঠিকভাবে রোল খুঁজে পায় এবং ব্যবহার করতে পারে।
Ansible রোলের ডিরেক্টরি স্ট্রাকচার
একটি Ansible রোলের সাধারণ ডিরেক্টরি স্ট্রাকচার নিচের মতো হয়:
roles/
└── <role_name>/
├── defaults/
│ └── main.yml
├── files/
├── handlers/
│ └── main.yml
├── meta/
│ └── main.yml
├── tasks/
│ └── main.yml
├── templates/
├── tests/
│ ├── inventory
│ └── test.yml
├── vars/
│ └── main.yml
└── README.md
ডিরেক্টরি এবং ফাইলের বিবরণ
defaults/:
- এই ডিরেক্টরিতে রোলের ডিফল্ট ভ্যারিয়েবল সংরক্ষিত থাকে।
main.ymlফাইলে ডিফল্ট ভ্যারিয়েবলগুলি উল্লেখ করা হয় যা অন্য ভ্যারিয়েবল দ্বারা ওভাররাইড হতে পারে।
files/:
- এই ডিরেক্টরিতে স্ট্যাটিক ফাইলগুলি সংরক্ষণ করা হয়, যা প্লেবুকে কপি করা বা ব্যবহৃত হতে পারে।
- উদাহরণ: কনফিগারেশন ফাইল, স্ক্রিপ্ট ইত্যাদি।
handlers/:
- হ্যান্ডলারগুলো সংরক্ষণ করা হয় যা নির্দিষ্ট অবস্থার উপর ভিত্তি করে টাস্ক শেষ হওয়ার পর চালিত হয়।
main.ymlফাইলে হ্যান্ডলারগুলো উল্লেখ করা হয়, যেমন: সার্ভিস রিস্টার্ট করা।
meta/:
- এই ডিরেক্টরিতে মেটা-ডেটা সংরক্ষণ করা হয়, যা রোল সম্পর্কে তথ্য দেয়।
main.ymlফাইলে ডিপেন্ডেন্সি বা রোলের ডিপেন্ডেন্সি উল্লেখ করা যায়।
tasks/:
- রোলের প্রধান টাস্কগুলো সংরক্ষণ করা হয়।
main.ymlফাইল হলো টাস্কের এন্ট্রিপয়েন্ট, যেখানে রোলের সমস্ত টাস্ক উল্লেখ করা হয়। এটি অন্যান্য টাস্ক ফাইলকেও অন্তর্ভুক্ত করতে পারে।
templates/:
- এই ডিরেক্টরিতে Jinja2 টেম্পলেটগুলো সংরক্ষণ করা হয় যা রোলের অংশ হিসেবে ব্যবহৃত হয়।
- টেম্পলেট ব্যবহার করে ডায়নামিক কনফিগারেশন ফাইল তৈরি করা যায়।
tests/:
- এই ডিরেক্টরিতে টেস্ট ফাইল এবং ইনভেন্টরি ফাইল সংরক্ষণ করা হয়, যা রোলের কার্যকারিতা পরীক্ষা করার জন্য ব্যবহৃত হয়।
vars/:
- এই ডিরেক্টরিতে রোলের ভ্যারিয়েবল সংরক্ষিত থাকে।
main.ymlফাইলে রোলের জন্য ব্যবহৃত ভ্যারিয়েবলগুলো উল্লেখ করা হয়। এটিdefaultsএর চেয়ে বেশি প্রাধান্য পায়।
README.md:
- এই ফাইলটি রোল সম্পর্কে তথ্য দেয়, যেমন রোল কীভাবে কাজ করে, কী কী ভ্যারিয়েবল রয়েছে, এবং কীভাবে ব্যবহার করা উচিত। এটি রোল ডকুমেন্টেশনের জন্য ব্যবহৃত হয়।
উদাহরণ রোল ডিরেক্টরি স্ট্রাকচার
নিচে একটি উদাহরণ রোলের ডিরেক্টরি স্ট্রাকচার দেয়া হলো, যেখানে একটি webserver রোল তৈরি করা হয়েছে:
roles/
└── webserver/
├── defaults/
│ └── main.yml
├── files/
│ └── httpd.conf
├── handlers/
│ └── main.yml
├── meta/
│ └── main.yml
├── tasks/
│ └── main.yml
├── templates/
│ └── vhost.conf.j2
├── tests/
│ ├── inventory
│ └── test.yml
├── vars/
│ └── main.yml
└── README.md
এই উদাহরণে:
files/ডিরেক্টরিতেhttpd.confনামের একটি কনফিগারেশন ফাইল আছে।templates/ডিরেক্টরিতেvhost.conf.j2নামের একটি টেম্পলেট আছে।tasks/,handlers/,defaults/, এবংvars/ডিরেক্টরিতে যথাক্রমে টাস্ক, হ্যান্ডলার, ডিফল্ট ভ্যারিয়েবল, এবং সাধারণ ভ্যারিয়েবলগুলো সংরক্ষণ করা হয়েছে।
সারাংশ
Ansible রোলের ডিরেক্টরি স্ট্রাকচার একটি স্ট্যান্ডার্ড কাঠামো অনুসরণ করে, যা রোল ব্যবহারের সময় সহজে এবং সুসংগঠিতভাবে ব্যবহৃত হয়। এই কাঠামোটি মেনে চলার ফলে রোল তৈরি ও ব্যবস্থাপনা করা সহজ হয় এবং প্লেবুক আরও পুনঃব্যবহারযোগ্য হয়।