Ansible-এ template মডিউল ব্যবহার করা হয় Jinja2 টেম্পলেট ফাইল থেকে কনফিগারেশন ফাইল বা অন্যান্য ফাইল তৈরি করার জন্য। এই মডিউলটি ডায়নামিক কনফিগারেশন ফাইল তৈরি করতে সহায়ক, যেখানে ভ্যারিয়েবল বা কন্ডিশনাল লজিক ব্যবহার করে ফাইল কাস্টমাইজ করা যায়।
template মডিউল কীভাবে কাজ করে?
template মডিউল Jinja2 টেম্পলেট ফাইলটি সোর্স হিসেবে ব্যবহার করে এবং টার্গেট সিস্টেমে (রিমোট হোস্ট) এটি কপি করে। টেম্পলেট ফাইলে Jinja2 সিনট্যাক্স ব্যবহার করে ভ্যারিয়েবল এবং লজিক যুক্ত করা যায়, যা Ansible প্লেবুক বা ইনভেন্টরি থেকে ডেটা নিয়ে ডায়নামিক কনফিগারেশন তৈরি করে।
template মডিউল এর সিনট্যাক্স
- name: টেম্পলেট ব্যবহার করে ফাইল কপি করা
template:
src: /path/to/template_file.j2
dest: /path/to/destination_file
owner: user
group: group
mode: '0644'
template মডিউল এর উপাদানগুলো
src: টেম্পলেট ফাইলের সোর্স পাথ (লোকাল সিস্টেমে)। এই ফাইলটি Jinja2 সিনট্যাক্স ব্যবহার করে তৈরি করা হয়।dest: টার্গেট পাথ যেখানে টেম্পলেট ফাইলটি রিমোট সিস্টেমে কপি করা হবে।owner,group, এবংmode: টার্গেট ফাইলের মালিকানা, গ্রুপ, এবং পারমিশন সেট করতে ব্যবহৃত হয় (ঐচ্ছিক)।
উদাহরণ
ধরা যাক, আপনার একটি Nginx কনফিগারেশন ফাইল আছে যা ডায়নামিক ভ্যারিয়েবল ব্যবহার করে তৈরি করা হবে।
১. টেম্পলেট ফাইল তৈরি করা (nginx.conf.j2):
server {
listen {{ http_port }};
server_name {{ domain_name }};
location / {
proxy_pass http://{{ backend_server }};
}
}
২. প্লেবুকের মাধ্যমে টেম্পলেট ব্যবহার করা:
---
- name: Deploy Nginx configuration
hosts: webservers
become: yes
vars:
http_port: 80
domain_name: example.com
backend_server: 192.168.1.10
tasks:
- name: Copy Nginx configuration using template
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/conf.d/nginx.conf
owner: root
group: root
mode: '0644'
বিশ্লেষণ:
http_port,domain_name, এবংbackend_serverভ্যারিয়েবলগুলো প্লেবুকেরvarsসেকশনে উল্লেখ করা হয়েছে, যা টেম্পলেট ফাইল (nginx.conf.j2) এ ব্যবহার করা হয়েছে।templateমডিউল টেম্পলেট ফাইলটি/etc/nginx/conf.d/nginx.confএ কপি করবে এবং ফাইলের মালিকানা, গ্রুপ, ও পারমিশন সেট করবে।
ব্যবহার ক্ষেত্র
- কনফিগারেশন ফাইল তৈরি করা: Nginx, Apache, MySQL ইত্যাদি সার্ভারের কনফিগারেশন ফাইল ডায়নামিকভাবে তৈরি করা।
- স্ক্রিপ্ট ডিপ্লয়মেন্ট: ডায়নামিক স্ক্রিপ্ট তৈরি এবং সেটআপ করা যেখানে প্লেবুক বা ইনভেন্টরি থেকে ডেটা ব্যবহার করা হয়।
- অ্যাপ্লিকেশন সেটিংস ফাইল: অ্যাপ্লিকেশনের জন্য YAML, JSON বা অন্যান্য ফরম্যাটের কনফিগারেশন ফাইল তৈরি করা।
template মডিউল এবং Jinja2
template মডিউল Jinja2 সিনট্যাক্স ব্যবহার করে, যা নিচের ফিচারগুলো সমর্থন করে:
- ভ্যারিয়েবল:
{{ variable_name }}ব্যবহার করে ভ্যারিয়েবল উল্লেখ করা যায়। - লুপ:
{% for item in list %}ব্যবহার করে লুপ করা যায়। - কন্ডিশনাল লজিক:
{% if condition %}ব্যবহার করে শর্ত অনুযায়ী কনফিগারেশন তৈরি করা যায়।
উদাহরণ: Jinja2 কন্ডিশনাল লজিক
server {
listen 80;
server_name {{ domain_name }};
{% if ssl_enabled %}
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/{{ domain_name }}.crt;
ssl_certificate_key /etc/nginx/ssl/{{ domain_name }}.key;
{% endif %}
}
উপরের টেম্পলেট ফাইলে, যদি ssl_enabled ভ্যারিয়েবলটি true হয়, তাহলে SSL কনফিগারেশন অংশটি যুক্ত হবে। অন্যথায়, এই অংশটি এড়িয়ে যাবে।
সারাংশ
templateমডিউল ব্যবহার করে Jinja2 টেম্পলেটের মাধ্যমে ডায়নামিক কনফিগারেশন ফাইল তৈরি করা যায়।- এটি ভ্যারিয়েবল এবং লজিক ব্যবহারের মাধ্যমে কাস্টমাইজড কনফিগারেশন তৈরিতে সহায়ক।
- Ansible-এ
templateমডিউল একটি অত্যন্ত শক্তিশালী টুল, যা প্লেবুকের পুনঃব্যবহারযোগ্যতা ও কার্যকারিতা বাড়ায়।
template মডিউল ব্যবহার করে আপনি সহজেই ডায়নামিক কনফিগারেশন এবং ফাইল ম্যানেজমেন্ট করতে পারবেন, যা আপনার প্লেবুক এবং রোলগুলিকে আরও শক্তিশালী করবে।