Ansible এ when কন্ডিশন ব্যবহার করে আপনি নির্দিষ্ট শর্ত (condition) মেনে টাস্ক নিয়ন্ত্রণ করতে পারেন। অর্থাৎ, আপনি টাস্ক বা টাস্কগুলিকে এমনভাবে কন্ডিশনাল করতে পারেন যেন তা শুধুমাত্র নির্দিষ্ট শর্ত পূরণ হলেই কার্যকর হয়। এটি Ansible প্লেবুককে ডাইনামিক এবং নমনীয় করতে সাহায্য করে।
when কন্ডিশন কীভাবে কাজ করে?
when কন্ডিশন সাধারণত একটি লজিক্যাল এক্সপ্রেশন গ্রহণ করে, যা সত্য (true) বা মিথ্যা (false) হতে পারে। যদি কন্ডিশন সত্য হয়, তাহলে টাস্কটি কার্যকর হয়; অন্যথায়, তা স্কিপ করা হয়।
when কন্ডিশন ব্যবহার করার সাধারণ ফরম্যাট
tasks:
- name: Task Name
module_name:
parameter: value
when: condition
উদাহরণ ১: অপারেটিং সিস্টেম ভিত্তিক টাস্ক
নিচের উদাহরণে আমরা দেখবো কিভাবে when কন্ডিশন ব্যবহার করে একটি টাস্ককে নির্দিষ্ট অপারেটিং সিস্টেমে কার্যকর করা যায়।
---
- name: Install Apache only on Ubuntu systems
hosts: all
become: yes
tasks:
- name: Install Apache on Ubuntu
apt:
name: apache2
state: present
when: ansible_distribution == "Ubuntu"
এখানে, when কন্ডিশন চেক করছে হোস্টের অপারেটিং সিস্টেম Ubuntu কিনা (ansible_distribution == "Ubuntu")। যদি হোস্টের অপারেটিং সিস্টেম Ubuntu হয়, তখন Apache ইনস্টল করা হবে।
উদাহরণ ২: ভ্যারিয়েবল ভিত্তিক কন্ডিশন
অনেক সময় প্লেবুকে ডিফাইন করা ভ্যারিয়েবল বা হোস্ট ভ্যারিয়েবলের উপর ভিত্তি করে টাস্ক নিয়ন্ত্রণ করতে হয়।
---
- name: Install Nginx based on variable
hosts: all
become: yes
vars:
install_nginx: true
tasks:
- name: Install Nginx
apt:
name: nginx
state: present
when: install_nginx
এখানে, install_nginx নামে একটি ভ্যারিয়েবল তৈরি করা হয়েছে। যদি এর মান true হয়, তাহলে Nginx ইনস্টল করা হবে।
উদাহরণ ৩: মডিউল আউটপুট ভিত্তিক কন্ডিশন
কিছু কিছু ক্ষেত্রে, একটি টাস্কের আউটপুট বা রেজাল্টের উপর ভিত্তি করে পরবর্তী টাস্ক কার্যকর করা হয়।
---
- name: Check if a file exists and create if it doesn't
hosts: all
become: yes
tasks:
- name: Check if /tmp/testfile exists
stat:
path: /tmp/testfile
register: file_status
- name: Create the file if it doesn't exist
file:
path: /tmp/testfile
state: touch
when: not file_status.stat.exists
এখানে, প্রথম টাস্কটি /tmp/testfile ফাইলের স্ট্যাটাস চেক করে এবং আউটপুট file_status নামে রেজিস্টারে সংরক্ষণ করে। পরবর্তী টাস্কটি when কন্ডিশন ব্যবহার করে চেক করে যদি ফাইলটি না থাকে (not file_status.stat.exists), তখন এটি ফাইল তৈরি করবে।
when কন্ডিশন: অপারেটর এবং লজিক্যাল এক্সপ্রেশন
when কন্ডিশনে আপনি বিভিন্ন অপারেটর এবং লজিক্যাল এক্সপ্রেশন ব্যবহার করতে পারেন:
- সমান (==): দুটি মান সমান কিনা চেক করে।
- অসমান (!=): দুটি মান অসমান কিনা চেক করে।
- বৃহত্তর (>), ছোট (<): তুলনামূলক অপারেটর।
- and, or, not: লজিক্যাল অপারেটর যা একাধিক শর্ত একত্রে চেক করতে সাহায্য করে।
উদাহরণ:
- name: Install package if OS is Ubuntu and version is 20.04
apt:
name: apache2
state: present
when: ansible_distribution == "Ubuntu" and ansible_distribution_version == "20.04"
এখানে, Apache ইনস্টল করা হবে শুধুমাত্র যদি অপারেটিং সিস্টেম Ubuntu হয় এবং এর ভার্সন 20.04 হয়।
সংক্ষেপে
Ansible এ when কন্ডিশন ব্যবহার করে টাস্ক বা টাস্কগুলোকে নির্দিষ্ট শর্ত অনুযায়ী কার্যকর করা যায়। এটি প্লেবুককে ডাইনামিক এবং নমনীয় করে তোলে, যাতে বিভিন্ন হোস্ট বা ভ্যারিয়েবলের ভিত্তিতে স্বয়ংক্রিয়ভাবে কাজ সম্পন্ন করা যায়।