Ansible একটি ওপেন সোর্স অটোমেশন টুল যা আইটি টাস্ক যেমন কনফিগারেশন ম্যানেজমেন্ট, অ্যাপ্লিকেশন ডিপ্লয়মেন্ট, এবং সার্ভার অরকেসট্রেশন সহজে এবং দ্রুততার সাথে সম্পন্ন করতে ব্যবহৃত হয়। Playbook হলো Ansible-এর একটি মূল ফিচার, যা একটি YAML ফাইল হিসেবে লেখা হয় এবং এতে কীভাবে একটি নির্দিষ্ট কাজ সম্পাদন করতে হবে, তা ডিফাইন করা থাকে। Playbook মূলত এক বা একাধিক টাস্কের (tasks) একটি সংগ্রহ যা ধাপে ধাপে চলে।
Playbook হলো Ansible এর এক ধরনের স্ক্রিপ্ট, যা বিভিন্ন মেশিন বা সার্ভারে নির্দিষ্ট কাজ করতে ব্যবহৃত হয়। একটি Playbook-এ আপনি একাধিক প্লে (play) ডিফাইন করতে পারেন। প্রত্যেকটি প্লে একটি নির্দিষ্ট সেট অফ হোস্টের উপর একটি নির্দিষ্ট সেট অফ টাস্ক সম্পাদন করে।
১. Play: একটি Play হল কীভাবে একটি নির্দিষ্ট হোস্ট গ্রুপে নির্দিষ্ট কাজগুলো সম্পাদিত হবে, তার নির্দেশিকা। এক বা একাধিক প্লে একটি Playbook এ থাকতে পারে। ২. Hosts: কোন হোস্ট বা হোস্ট গ্রুপে প্লে চলবে তা নির্দেশ করে। ৩. Tasks: Task হলো সেই কাজ বা কমান্ড যা নির্দিষ্ট হোস্টে চলবে। একটি Task সাধারণত একটি মডিউল ব্যবহার করে সম্পাদিত হয়। ৪. Variables: Variables প্লেবুকে ডায়নামিক ডেটা প্রদান করতে ব্যবহৃত হয়। ৫. Handlers: Handlers হলো সেই ধরনের টাস্ক যা শুধু তখনই চলে যখন কোনো নির্দিষ্ট কন্ডিশন পূরণ হয় (যেমন টাস্ক থেকে কোনো পরিবর্তন আসে)। ৬. Roles: Roles হলো Playbook কে মডুলারাইজ ও পুনর্ব্যবহারযোগ্য করার উপায়।
---
- name: Install and start Apache
hosts: webservers
become: yes
tasks:
- name: Install Apache
apt:
name: apache2
state: present
- name: Start Apache service
service:
name: apache2
state: started
apt
মডিউল ব্যবহার করে "apache2" প্যাকেজ ইনস্টল করা হয়েছে।service
মডিউল ব্যবহার করে "apache2" সার্ভিস স্টার্ট করা হয়েছে।apt
, yum
, service
, file
ইত্যাদি, যা বিভিন্ন ধরণের কাজ সম্পাদন করতে সাহায্য করে।এগুলো হলো Ansible Playbook এর কিছু বেসিক ধারণা।
Ansible এ Playbook হলো একটি YAML ফাইল, যেখানে আপনি বিভিন্ন টাস্ক বা কাজের ধাপসমূহ নির্দিষ্ট ক্রমে উল্লেখ করেন যা Ansible রান করার সময় সম্পন্ন করবে। Playbook হলো Ansible এর অটোমেশন প্রক্রিয়ার একটি গুরুত্বপূর্ণ অংশ, যা একাধিক মেশিন বা সার্ভারে নির্দিষ্ট কাজগুলি অটোমেটেড উপায়ে সম্পন্ন করতে ব্যবহার করা হয়।
Playbook মূলত একটি স্ক্রিপ্টের মতো, যেখানে:
---
- name: Install Apache Web Server
hosts: webservers
become: yes
tasks:
- name: Install Apache
apt:
name: apache2
state: present
- name: Start Apache service
service:
name: apache2
state: started
enabled: yes
এখানে, Playbook একটি "webservers" হোস্ট গ্রুপে Apache ওয়েব সার্ভার ইনস্টল করে এবং তা চালু ও সক্রিয় করে।
Ansible Playbook হলো একটি শক্তিশালী টুল যা সার্ভার ম্যানেজমেন্ট এবং অটোমেশনের জন্য ব্যবহৃত হয়। এটি সহজবোধ্য, পুনরায় ব্যবহারযোগ্য, এবং YAML ফরম্যাটে হওয়ার কারণে সহজে লেখা ও বুঝা যায়।
Playbook হলো একটি YAML ফাইল যা Ansible-এ বিভিন্ন কাজ করার জন্য ব্যবহার করা হয়। এটি Ansible এর মূল উপাদানগুলোর একটি, যা বিভিন্ন টাস্ক, রোল এবং মডিউল এর সমন্বয়ে তৈরি করা হয়। একটি Playbook এর গঠন বেশ সরল এবং এটি YAML সিনট্যাক্স অনুসরণ করে। নিচে একটি Playbook এর সাধারণ গঠন এবং সিনট্যাক্স নিয়ে আলোচনা করা হলো:
---
- name: Play এর নাম (ঐচ্ছিক)
hosts: target_hosts
become: yes (root privilege প্রয়োজন হলে)
tasks:
- name: Task এর নাম (ঐচ্ছিক)
module_name:
parameter1: value1
parameter2: value2
---
:
- name
(ঐচ্ছিক):
hosts
:
become
(ঐচ্ছিক):
yes
বা no
দিয়ে উল্লেখ করা হয় প্লে রুট বা সুপার ইউজার হিসেবে চালানো হবে কি না।tasks
:
module_name
:
copy
, yum
, service
, ইত্যাদি।parameters
:
নিচে একটি সাধারণ Playbook এর উদাহরণ দেয়া হলো, যা একটি অ্যাপাচি সার্ভার ইনস্টল এবং চালু করবে:
---
- name: Install and start Apache
hosts: webservers
become: yes
tasks:
- name: Install Apache
yum:
name: httpd
state: present
- name: Start Apache
service:
name: httpd
state: started
enabled: yes
hosts: webservers
:
webservers
গ্রুপের হোস্টগুলোতে প্রয়োগ হবে।become: yes
:
tasks
:
yum
মডিউল ব্যবহার করে Apache ইনস্টল করবে।service
মডিউল ব্যবহার করে Apache সার্ভিস চালু করবে এবং এটি চালু অবস্থায় রাখবে।এইভাবে, Playbook ব্যবহার করে বিভিন্ন ধরণের টাস্ক বা অপারেশন অটোমেশন করা যায়। Playbook এর সিনট্যাক্স সহজ এবং এটি YAML ফরম্যাট হওয়ায় পড়া এবং লেখা সহজ।
Ansible এ টাস্ক (Task) এবং হ্যান্ডলার (Handler) দুটোই গুরুত্বপূর্ণ উপাদান, যা Playbook এ ব্যবহৃত হয় বিভিন্ন কাজ সম্পাদন করার জন্য। চলুন একে একে এই দুটি সম্পর্কে বিশদে আলোচনা করা যাক:
টাস্ক হলো Ansible Playbook এর একটি মৌলিক উপাদান, যা নির্দিষ্ট কাজ বা অ্যাকশন সম্পাদন করে। প্রতিটি টাস্ক সাধারণত একটি মডিউল ব্যবহার করে এবং YAML ফরম্যাটে লেখা হয়। টাস্কগুলি ধারাবাহিকভাবে চলে এবং নির্দিষ্ট একটি টাস্ক সম্পন্ন হলে পরবর্তী টাস্কে চলে যায়।
apt
, yum
, file
ইত্যাদি) ব্যবহৃত হয় টাস্কে।- name: Install Apache
apt:
name: apache2
state: present
উপরের টাস্কটি apt
মডিউল ব্যবহার করে apache2
প্যাকেজ ইনস্টল করছে। state: present
দিয়ে নিশ্চিত করা হচ্ছে যে প্যাকেজটি সিস্টেমে ইনস্টল করা আছে কিনা।
হ্যান্ডলার হলো বিশেষ ধরনের টাস্ক যা শুধু তখনই ট্রিগার হয় যখন একটি নির্দিষ্ট কন্ডিশন পূরণ হয়, অর্থাৎ যখন কোনো টাস্ক থেকে "change" ডিটেক্ট করা হয়।
notify
কিওয়ার্ড ব্যবহার করে কল করা হলে রান হয়।---
- name: Install and configure Apache
hosts: webservers
become: yes
tasks:
- name: Install Apache
apt:
name: apache2
state: present
notify: Restart Apache
- name: Copy Apache configuration file
copy:
src: /path/to/httpd.conf
dest: /etc/apache2/apache2.conf
notify: Restart Apache
handlers:
- name: Restart Apache
service:
name: apache2
state: restarted
apache2
ইনস্টল করছে।httpd.conf
ফাইল কপি করছে।notify: Restart Apache
ব্যবহার করছে, অর্থাৎ যখনই এই টাস্কগুলোর মাধ্যমে কোনো পরিবর্তন হবে, তখন Restart Apache হ্যান্ডলারটি ট্রিগার হবে।apache2
সার্ভিস রিস্টার্ট করবে, কিন্তু শুধু তখনই করবে যদি আগে কোনো পরিবর্তন ঘটে।apache2
সার্ভিস রিস্টার্ট করার দরকার না হয়, তাহলে এটি অনর্থক রিস্টার্ট হবে না।বৈশিষ্ট্য | টাস্ক (Task) | হ্যান্ডলার (Handler) |
---|---|---|
কার্যকারিতা | সরাসরি টাস্কগুলো চালায় | নির্দিষ্ট টাস্ক থেকে "change" হলে চালায় |
কনফিগারেশন | সরাসরি মডিউল ও প্যারামিটার দিয়ে নির্ধারিত | notify এর মাধ্যমে কল করা হয় |
কার্যকর হওয়ার সময় | প্লেবুকের টাস্ক সিকোয়েন্স অনুযায়ী | প্লেবুকের শেষে এবং "change" হলে |
এই হলো টাস্ক এবং হ্যান্ডলার এর মূল ধারণা।
Ansible এ ভ্যারিয়েবল এবং ফ্যাক্ট হলো দুটি গুরুত্বপূর্ণ উপাদান যা প্লেবুকের কার্যকারিতা ও কাস্টমাইজেশন বাড়াতে সাহায্য করে। এদের মাধ্যমে আপনি প্লেবুকে ডাইনামিক কনফিগারেশন বা তথ্য যোগ করতে পারেন।
Ansible এ ভ্যারিয়েবল হলো এমন কিছু মান (values) যা আপনি প্লেবুক, রোল, বা টাস্কে ব্যবহার করতে পারেন। এটি পুনঃব্যবহারযোগ্য কোড তৈরিতে সাহায্য করে এবং প্লেবুককে ডাইনামিক বা পরিবর্তনশীল করে তোলে।
ভ্যারিয়েবল ব্যবহার করার কিছু উপায়:
--extra-vars
দিয়ে---
- name: Install and configure Apache
hosts: webservers
become: yes
vars:
apache_package: apache2
apache_service: apache2
tasks:
- name: Install Apache
apt:
name: "{{ apache_package }}"
state: present
- name: Start Apache service
service:
name: "{{ apache_service }}"
state: started
enabled: yes
এখানে, apache_package
এবং apache_service
নামে দুটি ভ্যারিয়েবল ব্যবহার করা হয়েছে যা প্লেবুকের বিভিন্ন স্থানে একই মান (values) রেফার করে।
ফ্যাক্টস হলো Ansible এর মাধ্যমে গ্যাদার করা সিস্টেম ইনফরমেশন বা তথ্য। Ansible প্লেবুক চালানোর সময় setup
মডিউল ব্যবহার করে স্বয়ংক্রিয়ভাবে হোস্ট মেশিন থেকে ফ্যাক্টস সংগ্রহ করে, যেমন: অপারেটিং সিস্টেম, মেমরি, সিপিইউ, নেটওয়ার্ক ইন্টারফেস ইত্যাদি।
ফ্যাক্টস ব্যবহার করার উদ্দেশ্য:
---
- name: Display OS information
hosts: all
gather_facts: yes
tasks:
- name: Print the OS information
debug:
msg: "The operating system is {{ ansible_distribution }} and version is {{ ansible_distribution_version }}"
এখানে, ansible_distribution
এবং ansible_distribution_version
হলো ফ্যাক্টস, যা হোস্টের অপারেটিং সিস্টেমের নাম ও ভার্সন সম্পর্কে তথ্য প্রদান করে।
ভ্যারিয়েবল | ফ্যাক্টস |
---|---|
ইউজার দ্বারা নির্ধারিত মান যা প্লেবুক বা রোল-এ ব্যবহার করা হয়। | Ansible স্বয়ংক্রিয়ভাবে হোস্ট থেকে সংগ্রহ করা তথ্য। |
YAML ফাইলে বা কমান্ড লাইনে নির্ধারণ করা যায়। | প্লেবুক চালানোর সময় স্বয়ংক্রিয়ভাবে সংগ্রহ করা হয়। |
সাধারণত স্থায়ী বা প্রি-ডিফাইনড মান হিসেবে থাকে। | হোস্টের কনফিগারেশন বা চলমান অবস্থার উপর নির্ভরশীল। |