Ansible হল একটি ওপেন সোর্স আইটি অটোমেশন টুল যা সহজ ও কার্যকরভাবে আইটি অবকাঠামো পরিচালনা এবং কনফিগারেশন ম্যানেজমেন্ট করার জন্য ডিজাইন করা হয়েছে। এটি অ্যাপ্লিকেশন ডিপ্লয়মেন্ট, সিস্টেম ম্যানেজমেন্ট, ও টাস্ক অটোমেশনের জন্য অত্যন্ত জনপ্রিয়। Ansible অন্যান্য টুলগুলোর তুলনায় ব্যবহারে সহজ এবং এজেন্টলেস হওয়ার কারণে এটি দ্রুত এবং কার্যকর।
Ansible একটি কন্ট্রোল মেশিন বা কন্ট্রোলার থেকে কাজ করে এবং এটি টার্গেট সার্ভারগুলির (যেগুলি নোড বা হোস্ট নামে পরিচিত) সাথে সংযোগ স্থাপন করে কাজ সম্পন্ন করে। এটি SSH প্রোটোকল ব্যবহার করে Unix/ Linux ভিত্তিক সার্ভারের সঙ্গে কাজ করে, এবং Windows-ভিত্তিক সার্ভারের জন্য WinRM (Windows Remote Management) প্রোটোকল ব্যবহার করে।
Ansible কাজ করার জন্য তিনটি গুরুত্বপূর্ণ উপাদানের ওপর নির্ভর করে:
Playbook: Playbook হল Ansible-এর মূল অপারেশনাল ইউনিট যেখানে এক বা একাধিক টাস্ক সংজ্ঞায়িত করা হয়। একটি প্লেবুকে নির্দিষ্ট কিছু কাজ (যেমন প্যাকেজ ইনস্টল করা, ফাইল তৈরি করা) ধারাবাহিকভাবে করার জন্য নির্দেশনা থাকে। প্লেবুকগুলো YAML ফরম্যাটে লেখা হয়।
উদাহরণস্বরূপ, একটি প্লেবুক যা Apache ওয়েব সার্ভার ইনস্টল করবে:
---
- hosts: webservers
become: yes
tasks:
- name: Apache ইনস্টল করা
apt:
name: apache2
state: present
Task: প্রতিটি প্লেবুকের ভেতর এক বা একাধিক টাস্ক থাকে যা নির্দিষ্ট কোনো কাজ করে। প্রতিটি টাস্ক একটি নির্দিষ্ট মডিউল ব্যবহার করে, যেমন apt
, yum
, service
ইত্যাদি।
Module: মডিউল হলো পুনঃব্যবহারযোগ্য ইউনিট, যা Ansible-কে নির্দেশ দেয় নির্দিষ্ট কাজগুলো কিভাবে সম্পন্ন করতে হবে। মডিউলগুলোকে এক ধরনের প্লাগ-ইন বলা যেতে পারে, যা আপনার সার্ভারে অ্যাপ্লিকেশন ইনস্টল করা, ফাইল হ্যান্ডল করা, অথবা নেটওয়ার্ক কনফিগারেশন করার মতো কাজগুলো করে।
উদাহরণ:
- name: Install a package
apt:
name: "nginx"
state: present
Handlers: Handlers মূলত টাস্কের মতোই কাজ করে, তবে এগুলি সাধারণত নির্দিষ্ট কিছু অবস্থায় বা নির্দিষ্ট কোনো পরিবর্তনের পরে চালানো হয়। উদাহরণস্বরূপ, যদি একটি সার্ভিস রিস্টার্ট করা প্রয়োজন হয় যখন কোনো কনফিগারেশন ফাইল পরিবর্তিত হয়েছে, তখন একটি হ্যান্ডলার সেট করা যায়।
handlers:
- name: Restart Apache
service:
name: apache2
state: restarted
Variables: ভেরিয়েবল ব্যবহার করে আপনি প্লেবুকের মধ্যে ডায়নামিক মান ব্যবহার করতে পারেন, যা কাজকে আরও ফ্লেক্সিবল এবং পুনঃব্যবহারযোগ্য করে তোলে।
উদাহরণ:
- hosts: webservers
vars:
http_port: 80
tasks:
- name: Configure Apache port
lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^Listen'
line: "Listen {{ http_port }}"
Roles: Roles হলো বড় প্লেবুকগুলোকে সংগঠিত ও পুনঃব্যবহারযোগ্য করার উপায়। একটি রোল সাধারণত ফাইল, ভেরিয়েবল, টাস্ক, হ্যান্ডলার এবং টেমপ্লেটের একটি কাঠামোগত ব্যবস্থা।
Inventory: Ansible যেসব হোস্ট বা সার্ভারের সাথে কাজ করবে, তাদের তালিকা ইনভেন্টরিতে থাকে। ইনভেন্টরি ফাইল একটি সাধারণ টেক্সট ফাইল, যেখানে হোস্টের নাম এবং তাদের গ্রুপ সংজ্ঞায়িত থাকে।
আসুন একটি সাধারণ উদাহরণ দেখি, যেখানে একটি ওয়েব সার্ভারে Nginx ইনস্টল করা হচ্ছে এবং সেটি চালু করা হচ্ছে:
---
- hosts: webservers
become: true
tasks:
- name: Nginx ইনস্টল করা
apt:
name: nginx
state: present
- name: Nginx সার্ভিস চালু করা
service:
name: nginx
state: started
এই প্লেবুকটি একটি webservers
গ্রুপের সব সার্ভারে Nginx ইনস্টল করে এবং Nginx সার্ভিস চালু করে।
Ansible ব্যবহারের মাধ্যমে আপনি সহজে আপনার সিস্টেম এবং সার্ভারের পরিচালনা স্বয়ংক্রিয় করতে পারবেন।