Ansible-এ লুপ ব্যবহার করা হয় একাধিক আইটেম বা উপাদানের উপর একই কাজ বারবার চালানোর জন্য। লুপ ব্যবহার করে আপনি একটি টাস্ককে পুনরাবৃত্তি করতে পারেন, যা প্লেবুককে আরও কার্যকর এবং সংক্ষিপ্ত করে তোলে। Ansible-এ লুপের জন্য প্রধানত দুটি পদ্ধতি ব্যবহৃত হয়: loop এবং with_items। Ansible 2.5 থেকে loop পদ্ধতিটি প্রচলিত এবং এটি নতুনতম ও আরও কার্যকর উপায়, যেখানে with_items পুরোনো এবং সামঞ্জস্য বজায় রাখার জন্য রাখা হয়েছে।
১. loop ব্যবহার
loop হলো Ansible-এ লুপ চালানোর আধুনিক পদ্ধতি। এটি সাধারণত এক বা একাধিক আইটেমের উপর টাস্ক পুনরাবৃত্তি করার জন্য ব্যবহার করা হয়। এটি সহজ, সরল এবং পড়তে সুবিধাজনক।
উদাহরণ
নিচে একটি সাধারণ উদাহরণ দেয়া হলো যেখানে একটি সার্ভার-এ একাধিক প্যাকেজ ইনস্টল করা হচ্ছে:
---
- name: Install multiple packages
hosts: all
become: yes
tasks:
- name: Install packages
yum:
name: "{{ item }}"
state: present
loop:
- httpd
- mariadb-server
- php
বিশ্লেষণ:
- এখানে
loopব্যবহার করে একাধিক প্যাকেজ (httpd,mariadb-server,php) ইনস্টল করা হচ্ছে। {{ item }}হলো লুপের প্রতিটি আইটেমের মান, যা প্রতিবার লুপ চলার সময় পরিবর্তিত হয়।
loop এর আরও উদাহরণ
একটি ফাইলের মালিকানা পরিবর্তন করতে নিচের মত লুপ ব্যবহার করা যেতে পারে:
---
- name: Change ownership of files
hosts: all
become: yes
tasks:
- name: Set ownership of files
file:
path: "{{ item.path }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
mode: "{{ item.mode }}"
loop:
- { path: /var/www/html/index.html, owner: apache, group: apache, mode: '0644' }
- { path: /var/www/html/app.php, owner: apache, group: apache, mode: '0644' }
বিশ্লেষণ:
- এখানে লুপের মাধ্যমে একাধিক ফাইলের মালিকানা এবং অনুমতি সেট করা হচ্ছে।
- প্রতিটি আইটেম একটি ডিকশনারি হিসাবে উল্লেখ করা হয়েছে, যা ভিন্ন ভিন্ন মান ধরে রাখছে।
২. with_items ব্যবহার
with_items হলো লুপ চালানোর পুরোনো পদ্ধতি। এটি loop এর মত কাজ করে, তবে নতুন সংস্করণগুলোতে loop ব্যবহারে উৎসাহিত করা হয়। যদিও এটি এখনও কার্যকর, এটি মূলত পুরোনো প্লেবুকগুলোর সাথে সামঞ্জস্য বজায় রাখার জন্য রাখা হয়েছে।
উদাহরণ
নিচে একটি উদাহরণ দেয়া হলো যেখানে with_items ব্যবহার করে একাধিক প্যাকেজ ইনস্টল করা হচ্ছে:
---
- name: Install multiple packages
hosts: all
become: yes
tasks:
- name: Install packages
yum:
name: "{{ item }}"
state: present
with_items:
- httpd
- mariadb-server
- php
loop এবং with_items এর তুলনা
| বৈশিষ্ট্য | loop | with_items |
|---|---|---|
| আধুনিকতা | নতুন এবং প্রচলিত | পুরোনো এবং সামঞ্জস্য বজায় রাখার জন্য |
| সিনট্যাক্স | সহজ এবং সরল | কিছুটা বেশি লিখতে হয় |
| কার্যকারিতা | অধিক কার্যকর | সাধারণ কার্যকর, তবে পুরোনো পদ্ধতি |
লুপের ব্যবহার ক্ষেত্র
- একাধিক প্যাকেজ ইনস্টল: যেমন একটি টাস্কে একাধিক প্যাকেজ ইনস্টল করা।
- ফাইল মালিকানা ও অনুমতি পরিবর্তন: যেমন একাধিক ফাইলের মালিকানা বা অনুমতি পরিবর্তন করা।
- সার্ভিস ম্যানেজমেন্ট: যেমন একাধিক সার্ভিস চালু বা বন্ধ করা।
সারাংশ
loop: নতুন এবং আধুনিক পদ্ধতি, যা সাধারণত ব্যবহার করা উচিত।with_items: পুরোনো পদ্ধতি, যা পুরোনো প্লেবুকগুলোর সামঞ্জস্য রক্ষার জন্য রাখা হয়েছে।
Ansible প্লেবুক লেখার সময় loop ব্যবহার করা হলে কোড আরও সংক্ষিপ্ত এবং কার্যকর হয়। with_items ব্যবহার করা যায়, তবে নতুন কোড লেখার সময় loop ব্যবহারে উৎসাহিত করা হয়।