লুপ এবং এর ব্যবহার (loop, with_items)

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 এর তুলনা

বৈশিষ্ট্যloopwith_items
আধুনিকতানতুন এবং প্রচলিতপুরোনো এবং সামঞ্জস্য বজায় রাখার জন্য
সিনট্যাক্সসহজ এবং সরলকিছুটা বেশি লিখতে হয়
কার্যকারিতাঅধিক কার্যকরসাধারণ কার্যকর, তবে পুরোনো পদ্ধতি

লুপের ব্যবহার ক্ষেত্র

  • একাধিক প্যাকেজ ইনস্টল: যেমন একটি টাস্কে একাধিক প্যাকেজ ইনস্টল করা।
  • ফাইল মালিকানা ও অনুমতি পরিবর্তন: যেমন একাধিক ফাইলের মালিকানা বা অনুমতি পরিবর্তন করা।
  • সার্ভিস ম্যানেজমেন্ট: যেমন একাধিক সার্ভিস চালু বা বন্ধ করা।

সারাংশ

  • loop: নতুন এবং আধুনিক পদ্ধতি, যা সাধারণত ব্যবহার করা উচিত।
  • with_items: পুরোনো পদ্ধতি, যা পুরোনো প্লেবুকগুলোর সামঞ্জস্য রক্ষার জন্য রাখা হয়েছে।

Ansible প্লেবুক লেখার সময় loop ব্যবহার করা হলে কোড আরও সংক্ষিপ্ত এবং কার্যকর হয়। with_items ব্যবহার করা যায়, তবে নতুন কোড লেখার সময় loop ব্যবহারে উৎসাহিত করা হয়।

আরও দেখুন...

Promotion