Ansible হল 2026-এর নেতৃস্থানীয় কনফিগারেশন ম্যানেজমেন্ট এবং অটোমেশন টুল, যা 70% DevOps টিমের দ্বারা সার্ভার প্রভিশনিং, অ্যাপ্লিকেশান ডিপ্লয়মেন্ট, এবং ইনফ্রাস্ট্রাকচার অটোমেশনের জন্য ব্যবহৃত হয়। পুতুল বা শেফের বিপরীতে, Ansible হল এজেন্টবিহীন — এটি SSH এবং YAML ব্যবহার করে। এই নির্দেশিকা প্লেবুক, ভূমিকা, জায়, এবং উত্পাদন নিদর্শন কভার করে।
📋 Table of Contents
কেন উত্তরযোগ্য?
- এজেন্টহীন– পরিচালিত নোডগুলিতে ইনস্টল করার জন্য কোনও সফ্টওয়্যার নেই (এসএসএইচ ব্যবহার করে)
- YAML সিনট্যাক্স– মানুষের পাঠযোগ্য, বোঝা সহজ
- অদম্য– দুবার দৌড়ানো নিরাপদ; শুধুমাত্র যা পরিবর্তন করা প্রয়োজন তা পরিবর্তন করে
- বিশাল মডিউল লাইব্রেরিক্লাউড, নেটওয়ার্ক, ওএস, অ্যাপের জন্য 7,000+ মডিউল
- মেঘের সাথে কাজ করে— VM-এর পাশাপাশি AWS, GCP, Azure পরিচালনা করুন
ইনস্টলেশন এবং সেটআপ
# Install Ansible
pip install ansible
# Or via package manager
brew install ansible # macOS
sudo apt install ansible # Ubuntu/Debian
# Verify
ansible --version
# Generate SSH key for managed nodes
ssh-keygen -t ed25519 -C "ansible@myserver"
ssh-copy-id user@192.168.1.100
ইনভেন্টরি
# inventory.ini — list of managed hosts
[webservers]
web1.example.com
web2.example.com
192.168.1.10
[databases]
db1.example.com ansible_user=postgres ansible_port=22
[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_ssh_private_key_file=~/.ssh/ansible_key
# inventory.yml — YAML format (preferred)
all:
vars:
ansible_user: ubuntu
ansible_ssh_private_key_file: ~/.ssh/ansible_key
children:
webservers:
hosts:
web1.example.com:
app_port: 8000
web2.example.com:
app_port: 8001
databases:
hosts:
db1.example.com:
postgres_version: "16"
monitoring:
hosts:
monitor.example.com:
আপনার প্রথম প্লেবুক
# site.yml — configure web servers
---
- name: Configure web servers
hosts: webservers
become: true # sudo
vars:
app_name: myapp
app_port: 8000
nginx_version: "1.24"
tasks:
- name: Update apt cache
apt:
update_cache: yes
cache_valid_time: 3600
- name: Install required packages
apt:
name:
- nginx
- python3-pip
- git
state: present
- name: Create app user
user:
name: "{{ app_name }}"
system: yes
shell: /bin/bash
- name: Deploy application code
git:
repo: https://github.com/mycompany/myapp.git
dest: /srv/{{ app_name }}
version: main
force: yes
notify: restart app
- name: Install Python dependencies
pip:
requirements: /srv/{{ app_name }}/requirements.txt
virtualenv: /srv/{{ app_name }}/venv
- name: Configure nginx
template:
src: nginx.conf.j2
dest: /etc/nginx/sites-available/{{ app_name }}
mode: '0644'
notify: reload nginx
- name: Enable nginx site
file:
src: /etc/nginx/sites-available/{{ app_name }}
dest: /etc/nginx/sites-enabled/{{ app_name }}
state: link
handlers:
- name: restart app
systemd:
name: "{{ app_name }}"
state: restarted
- name: reload nginx
systemd:
name: nginx
state: reloaded
প্লেবুক চলছে
# Run playbook
ansible-playbook site.yml -i inventory.yml
# Run with verbose output
ansible-playbook site.yml -i inventory.yml -v
# Dry run (check mode)
ansible-playbook site.yml -i inventory.yml --check
# Run specific tags only
ansible-playbook site.yml -i inventory.yml --tags nginx
# Limit to specific hosts
ansible-playbook site.yml -i inventory.yml --limit web1.example.com
# Pass extra variables
ansible-playbook site.yml -i inventory.yml --extra-vars "app_version=1.2.3"
# Ad-hoc commands
ansible webservers -i inventory.yml -m ping
ansible all -i inventory.yml -m command -a "uptime"
ansible databases -i inventory.yml -m apt -a "name=postgresql state=latest" --become
ভূমিকা — পুনরায় ব্যবহারযোগ্য কনফিগারেশন
# Create role structure
ansible-galaxy role init nginx
# roles/nginx/
# tasks/main.yml
# handlers/main.yml
# templates/
# files/
# vars/main.yml
# defaults/main.yml
# meta/main.yml
# roles/nginx/tasks/main.yml
---
- name: Install nginx
apt:
name: nginx
state: present
notify: Start nginx
- name: Copy nginx config
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Reload nginx
# roles/nginx/defaults/main.yml
---
nginx_worker_processes: auto
nginx_worker_connections: 1024
nginx_keepalive_timeout: 65
# Use role in playbook:
# - name: Setup servers
# hosts: webservers
# roles:
# - nginx
# - myapp
উত্তরযোগ্য ভল্ট – গোপন ব্যবস্থাপনা
# Encrypt a file
ansible-vault encrypt group_vars/production/vault.yml
# Decrypt to edit
ansible-vault edit group_vars/production/vault.yml
# Run playbook with vault
ansible-playbook site.yml --ask-vault-pass
ansible-playbook site.yml --vault-password-file ~/.vault_pass
# Encrypt a single variable
ansible-vault encrypt_string 'mysecretpassword' --name 'db_password'
AWS এর জন্য উত্তরযোগ্য
# Provision EC2 instance
- name: Launch EC2 instance
amazon.aws.ec2_instance:
name: "web-{{ env }}"
image_id: ami-0c55b159cbfafe1f0
instance_type: t3.medium
security_groups: [web-sg]
vpc_subnet_id: "{{ subnet_id }}"
key_name: my-keypair
tags:
Environment: "{{ env }}"
Project: myapp
wait: yes
register: ec2
- name: Add to dynamic inventory
add_host:
hostname: "{{ ec2.instances[0].public_ip_address }}"
groups: just_created
জটিল এজেন্ট বা সার্ভার অবকাঠামো ছাড়া শক্তিশালী অবকাঠামো ব্যবস্থাপনার প্রয়োজন এমন দলগুলির জন্য 2026 সালে উত্তরযোগ্য হল সবচেয়ে ব্যবহারিক অটোমেশন টুল। সাধারণ প্লেবুক দিয়ে শুরু করুন, পুনঃব্যবহারযোগ্য ভূমিকা বের করুন, গোপনীয়তার জন্য ভল্ট ব্যবহার করুন এবং সম্পূর্ণ স্বয়ংক্রিয় স্থাপনার জন্য আপনার CI/CD পাইপলাইনে একীভূত করুন।
🔗 Share this article
✍️ Leave a Comment