Ansible ইনস্টলেশন এবং সেটআপ খুবই সহজ, এবং এটি সাধারণত আপনার লোকাল মেশিনে বা কন্ট্রোল মেশিনে ইনস্টল করা হয়, যেখান থেকে আপনি রিমোট সার্ভারগুলোকে পরিচালনা করবেন। নিচে বিভিন্ন প্ল্যাটফর্মে Ansible ইনস্টল করার ধাপগুলো দেওয়া হলো:
প্রথমে আপনার প্যাকেজ ম্যানেজার আপডেট করুন:
sudo apt update
sudo apt install ansible -y
ইনস্টলেশন ঠিকমতো হয়েছে কিনা তা যাচাই করার জন্য কমান্ড দিন:
ansible --version
sudo yum install epel-release -y
sudo yum install ansible -y
ansible --version
macOS-এ Ansible ইনস্টল করতে Homebrew ব্যবহার করতে পারেন।
brew update
brew install ansible
ansible --version
Ansible ইনস্টল করার পর, আপনাকে ইনভেন্টরি এবং কনফিগারেশন ফাইল সেটআপ করতে হবে:
ডিফল্টভাবে Ansible এর ইনভেন্টরি ফাইল /etc/ansible/hosts
এই লোকেশনে থাকে। তবে আপনি নিজের ইচ্ছামত অন্য কোনো লোকেশনে এটি তৈরি করতে পারেন। ইনভেন্টরি ফাইলে আপনি রিমোট সার্ভারগুলোর তালিকা সংরক্ষণ করবেন।
sudo nano /etc/ansible/hosts
ইনভেন্টরি ফাইলে হোস্টের তালিকা দিন:
[webservers]
192.168.1.10
192.168.1.11
[dbservers]
192.168.1.12
Ansible এজেন্টলেসভাবে SSH ব্যবহার করে রিমোট সার্ভারে কাজ করে। তাই আপনার কন্ট্রোল মেশিন থেকে রিমোট সার্ভারগুলোতে SSH এক্সেস থাকতে হবে। SSH কী পেয়ার তৈরি করে তা রিমোট সার্ভারে কপি করুন:
ssh-keygen
ssh-copy-id user@remote_server_ip
Ansible এর কনফিগারেশন ফাইল /etc/ansible/ansible.cfg
এ থাকে। আপনি এই ফাইলে ডিফল্ট সেটিংস পরিবর্তন করতে পারেন, যেমন ইনভেন্টরি ফাইলের পাথ, SSH কনফিগারেশন ইত্যাদি।
আপনি একটি পিং টেস্ট দিয়ে যাচাই করতে পারেন যে Ansible রিমোট সার্ভারের সাথে সঠিকভাবে যোগাযোগ করতে পারছে কিনা:
ansible all -m ping
যদি সবকিছু ঠিকমতো কনফিগার করা থাকে, তবে আপনি "pong" আউটপুট পাবেন।
Ansible ইনস্টলেশন করতে চাইলে, আপনি আপনার অপারেটিং সিস্টেম অনুযায়ী নিচের ধাপগুলি অনুসরণ করতে পারেন। Ansible সাধারণত Linux সিস্টেমে সহজে ইনস্টল করা যায়, কিন্তু Windows এবং macOS-এও এটি ব্যবহার করা সম্ভব। নিচে প্রতিটি অপারেটিং সিস্টেমের জন্য ইনস্টলেশন প্রক্রিয়া দেওয়া হল:
Linux-এ Ansible ইনস্টল করা খুবই সহজ এবং এর জন্য বিভিন্ন প্যাকেজ ম্যানেজার ব্যবহার করা হয়। এখানে Ubuntu/Debian এবং CentOS/RHEL-এর জন্য পদ্ধতি দেওয়া হলো।
sudo apt update
sudo apt install ansible -y
sudo yum install epel-release -y
sudo yum install ansible -y
sudo dnf install ansible -y
টিপস: Ansible ইনস্টল করার পর, ইনস্টলেশন সঠিক হয়েছে কিনা তা পরীক্ষা করতে নিচের কমান্ডটি চালাতে পারেন:
ansible --version
Windows-এ সরাসরি Ansible ইনস্টল করা যায় না, তবে Windows Subsystem for Linux (WSL) বা Virtual Machine (VM) ব্যবহার করে Linux পরিবেশে Ansible ইনস্টল করা যায়।
১. Windows 10/11-এ WSL সক্রিয় করতে নিচের কমান্ডগুলি Powershell (Admin) থেকে চালান:
wsl --install
২. WSL ইনস্টল করার পর, একটি Ubuntu বা অন্য কোনো Linux ডিস্ট্রো ইনস্টল করুন।
৩. Linux Shell চালু করুন এবং Linux-এর মতোই Ansible ইনস্টল করুন:
sudo apt update
sudo apt install ansible -y
টিপস: WSL-এ Ubuntu চালানোর মাধ্যমে আপনি Linux-এর মতো সকল কমান্ড এবং সুবিধা ব্যবহার করতে পারবেন।
macOS-এ Ansible ইনস্টল করার জন্য Homebrew সবচেয়ে সহজ পদ্ধতি।
১. প্রথমে Homebrew ইনস্টল করুন (যদি আগে ইনস্টল না থাকে):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
২. এরপর Ansible ইনস্টল করুন:
brew install ansible
টিপস: ইনস্টলেশন ঠিকভাবে হয়েছে কিনা, তা পরীক্ষা করতে:
ansible --version
এইভাবেই আপনি বিভিন্ন অপারেটিং সিস্টেমে Ansible ইনস্টল করতে পারেন।
Ansible কনফিগারেশন ফাইল (ansible.cfg
) Ansible-এর জন্য বিভিন্ন সেটিংস এবং ডিফল্ট ভ্যারিয়েবল নির্ধারণ করে, যা Ansible প্লেবুক, মডিউল এবং ইনভেন্টরি ব্যবহারের সময় কার্যকর হয়। সাধারণত, এটি Ansible প্রজেক্টের রুট ডিরেক্টরি বা /etc/ansible/
ডিরেক্টরিতে থাকে। আপনি চাইলে আপনার হোম ডিরেক্টরিতে বা কোনো নির্দিষ্ট প্রজেক্টের ডিরেক্টরিতে এটি রাখতে পারেন।
ansible.cfg
ফাইলের বিভিন্ন সেকশন থাকে, যা Ansible এর আচরণ কনফিগার করতে ব্যবহৃত হয়। নিচে একটি সাধারণ কনফিগারেশন ফাইলের উদাহরণ এবং প্রতিটি সেকশনের ব্যাখ্যা দেওয়া হলো:
ansible.cfg
ফাইলের উদাহরণ:[defaults]
inventory = ./inventory
remote_user = ansible_user
ask_pass = false
private_key_file = ~/.ssh/id_rsa
host_key_checking = false
timeout = 30
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining = true
ansible.cfg
এর সেকশন এবং সেটিংস:১. [defaults]: এটি Ansible-এর সাধারণ ডিফল্ট সেটিংস এবং অপশন নির্ধারণ করে।
inventory
: ইনভেন্টরি ফাইলের লোকেশন নির্ধারণ করে যেখানে হোস্টগুলোর তথ্য থাকে।remote_user
: রিমোট হোস্টে লগইন করার জন্য ডিফল্ট ইউজার।ask_pass
: যদি সত্য (true
) হয়, তবে পাসওয়ার্ড চাইবে; SSH key ব্যবহার করলে এটি false
রাখা হয়।private_key_file
: SSH প্রাইভেট কী এর পাথ নির্ধারণ করে।host_key_checking
: যদি false
করা হয়, তাহলে Ansible হোস্ট কী চেকিং বাদ দেবে।timeout
: রিমোট হোস্টের সাথে কানেকশনের সময়কাল নির্ধারণ করে (সেকেন্ডে)।২. [privilege_escalation]: Ansible-এর প্রিভিলেজ এস্কেলেশন সম্পর্কিত সেটিংস।
become
: এটি true
করলে Ansible প্রিভিলেজ এস্কেলেশন (sudo) ব্যবহার করবে।become_method
: কোন মেথড ব্যবহার করবে (ডিফল্ট হল sudo
)।become_user
: কোন ইউজার হিসেবে কমান্ড রান করবে (ডিফল্ট হল root
)।become_ask_pass
: এটি যদি true
হয়, তবে sudo পাসওয়ার্ড চাইবে।৩. [ssh_connection]: SSH সংযোগের জন্য কনফিগারেশন।
ssh_args
: SSH সংযোগের জন্য অতিরিক্ত আর্গুমেন্ট।pipelining
: এটি true
করলে কমান্ডগুলো দ্রুত রান হয়, কারণ এটি SSH সংযোগের সংখ্যাকে কমিয়ে আনে।ansible.cfg
কনফিগারেশন ফাইলের অবস্থান:Ansible কনফিগারেশন ফাইলের কয়েকটি সাধারণ অবস্থান রয়েছে। Ansible এই ফাইলগুলো ক্রমানুসারে চেক করে:
ansible.cfg
ফাইল কাস্টমাইজ করার সময়, নিশ্চিত হন যে সেটিংসগুলো সঠিকভাবে করা হয়েছে, কারণ ভুল সেটিংস প্লেবুক রান বা হোস্ট কানেকশনে সমস্যা সৃষ্টি করতে পারে।ansible.cfg
ব্যবহার করতে পারেন, যা শুধু সেই নির্দিষ্ট প্রোজেক্টের জন্য প্রযোজ্য হবে।এভাবেই আপনি Ansible কনফিগারেশন ফাইল ব্যবহার করে আপনার ডিফল্ট সেটিংস কাস্টমাইজ এবং নিয়ন্ত্রণ করতে পারেন।
Ansible ইনভেন্টরি ফাইল হল একটি ফাইল যেখানে আপনি আপনার ম্যানেজড হোস্ট বা সার্ভারের তালিকা রাখেন। এই ফাইলের মাধ্যমে Ansible জানে কোন হোস্টগুলির সাথে যোগাযোগ করতে হবে এবং কোন গ্রুপে কোন হোস্ট আছে। ইনভেন্টরি ফাইলটি সাধারণত /etc/ansible/hosts
এ থাকে, কিন্তু আপনি চাইলে প্রোজেক্ট ডিরেক্টরিতে বা কাস্টম লোকেশনে রাখতে পারেন।
Ansible ইনভেন্টরি ফাইল সাধারণত দুটি ফরম্যাটে লেখা হয়:
INI ফরম্যাটে ইনভেন্টরি ফাইলের লেখার নিয়ম সহজ এবং এটি সাধারণত হোস্ট এবং গ্রুপের তালিকা আকারে লেখা হয়। নিচে একটি উদাহরণ দেওয়া হলো:
# হোস্টের তালিকা
192.168.1.10
webserver.example.com
# গ্রুপ দিয়ে হোস্ট সংগঠিত করা
[webservers]
web1.example.com
web2.example.com
[databases]
db1.example.com
db2.example.com
# গ্রুপের ভেতরে ভ্যারিয়েবল
[webservers:vars]
ansible_user=ansible_user
ansible_ssh_private_key_file=~/.ssh/id_rsa
[]
এর ভেতরে গ্রুপের নাম দিলে এবং তার নিচে হোস্টগুলির নাম দিলে Ansible সেই হোস্টগুলিকে একসাথে সেই গ্রুপ হিসেবে ধরবে।[group_name:vars]
দিয়ে আপনি গ্রুপের জন্য নির্দিষ্ট ভ্যারিয়েবল সেট করতে পারেন, যেমন ansible_user
বা ansible_ssh_private_key_file
।YAML ফরম্যাট আরো আধুনিক এবং ফ্লেক্সিবল। এটি বড় এবং জটিল ইনভেন্টরি ব্যবস্থাপনার জন্য উপযোগী। নিচে YAML ইনভেন্টরি ফাইলের একটি উদাহরণ দেওয়া হলো:
all:
children:
webservers:
hosts:
web1.example.com:
ansible_user: ansible_user
web2.example.com:
ansible_user: ansible_user
databases:
hosts:
db1.example.com:
ansible_user: db_user
db2.example.com:
ansible_user: db_user
vars:
ansible_ssh_private_key_file: ~/.ssh/id_rsa
webservers
এবং databases
।Ansible ইনভেন্টরি ফাইলটি ব্যবহার করে আপনি যেকোনো কমান্ড বা প্লেবুক রান করতে পারেন। উদাহরণস্বরূপ:
ansible all -i ./inventory -m ping
-i ./inventory
: আপনার কাস্টম ইনভেন্টরি ফাইলটি নির্দেশ করে।-m ping
: ping
মডিউল ব্যবহার করে সমস্ত হোস্ট চেক করা হয়।যদি আপনার হোস্টের সংখ্যা অনেক বেশি হয় এবং তাদের আইপি বা হোস্টনেমগুলো পরিবর্তনশীল হয়, তাহলে Ansible ডায়নামিক ইনভেন্টরি সমর্থন করে। ডায়নামিক ইনভেন্টরি ফাইল একটি স্ক্রিপ্ট বা প্লাগইন আকারে লেখা হয় যা রান টাইমে হোস্টের তথ্য জেনারেট করে।
এভাবেই আপনি Ansible ইনভেন্টরি ফাইল তৈরি এবং সেটআপ করে আপনার হোস্টগুলো সহজেই ম্যানেজ করতে পারবেন।
YAML (Yet Another Markup Language, বর্তমানে YAML Ain’t Markup Language) একটি হিউম্যান-রিডেবল ডেটা সিরিয়ালাইজেশন ভাষা যা কনফিগারেশন ফাইল, ডেটা স্টোরেজ এবং ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়। YAML এর মূল বৈশিষ্ট্য হলো এটি সহজবোধ্য, হিউম্যান-ফ্রেন্ডলি এবং পড়তে সহজ, যা JSON বা XML এর তুলনায় অনেক সহজ এবং কম জটিল। YAML সাধারণত কনফিগারেশন ফাইল (যেমন Docker Compose, Ansible, Kubernetes) এবং ডেটা ডিফিনিশনের ক্ষেত্রে ব্যবহৃত হয়।
নিচে একটি সাধারণ YAML ফাইলের উদাহরণ এবং তার ব্যাখ্যা দেওয়া হলো:
# একটি সাধারণ YAML ডকুমেন্ট
name: John Doe
age: 30
is_employee: true
address:
street: 123 Main St
city: New York
zip_code: 10001
skills:
- Python
- JavaScript
- Docker
name: John Doe
বা age: 30
এর মতো। এটি YAML এর সবচেয়ে মৌলিক ফরম্যাট।address
এর ভেতরে আরও কী-ভ্যালু পেয়ার রয়েছে যা ইনডেন্টেশন দিয়ে উপস্থাপন করা হয়েছে। YAML ইনডেন্টেশন ব্যবহার করে নেস্টেড ডেটা বা ডিকশনারি তৈরির জন্য উপযুক্ত।skills
ফিল্ড একটি লিস্ট যার মধ্যে একাধিক আইটেম রয়েছে। YAML-এ লিস্ট ডিফাইন করতে -
সিম্বল ব্যবহার করা হয়।YAML ফাইল বিভিন্ন প্ল্যাটফর্ম এবং টুলে ব্যবহৃত হয়, যেমন:
YAML এর কিছু সাধারণ গঠন এবং সেগুলোর উদাহরণ:
key: value
2. নেস্টেড ডিকশনারি:
parent_key:
child_key: child_value
3. লিস্ট/আরেই:
fruits:
- apple
- banana
- orange
4. মাল্টি-লাইন স্ট্রিং: |
বা >
ব্যবহার করে মাল্টি-লাইন স্ট্রিং সংরক্ষণ করা হয়।
description: |
This is a multi-line string.
It preserves line breaks.
YAML একটি জনপ্রিয় ফরম্যাট যা কনফিগারেশন এবং ডেটা ডিফিনিশনের জন্য ব্যবহার করা হয়। এটি সহজবোধ্য, হিউম্যান-রিডেবল এবং JSON এর সাথে সামঞ্জস্যপূর্ণ হওয়ায়, এটি আধুনিক ডেভেলপমেন্ট পরিবেশে ব্যাপকভাবে ব্যবহৃত হচ্ছে। YAML এর মাধ্যমে আপনি সহজেই কনফিগারেশন ফাইল তৈরি ও পরিচালনা করতে পারবেন, যা আপনার ডেভেলপমেন্ট ও ডেপ্লয়মেন্ট প্রক্রিয়াকে সহজতর করবে।