Ansible এ Facts এবং gather_facts হলো এমন উপাদান যা মেশিন বা হোস্টের সিস্টেম ইনফরমেশন সংগ্রহ ও ব্যবহার করতে সাহায্য করে। এগুলো প্লেবুকের কার্যকারিতা ও ডাইনামিক কনফিগারেশনে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।

Facts কী?

Facts হলো মেশিন বা হোস্ট সম্পর্কে বিভিন্ন তথ্য যা Ansible স্বয়ংক্রিয়ভাবে সংগ্রহ করে। এগুলোর মধ্যে অন্তর্ভুক্ত রয়েছে:

  • অপারেটিং সিস্টেম সম্পর্কিত তথ্য (নাম, ভার্সন ইত্যাদি)
  • নেটওয়ার্ক কনফিগারেশন (আইপি অ্যাড্রেস, ইন্টারফেসের নাম ইত্যাদি)
  • সিপিইউ ও মেমোরি ইনফরমেশন
  • ডিস্ক স্টোরেজ ইনফরমেশন
  • বিভিন্ন সিস্টেম সেটিংস ও কনফিগারেশন

Ansible এর setup মডিউল ডিফল্টভাবে এই ফ্যাক্টগুলো গ্যাদার করে এবং এগুলোকে প্লেবুকে ব্যবহার করার সুযোগ দেয়।

gather_facts কী?

gather_facts হলো একটি প্যারামিটার যা প্লেবুকে সেট করা হয়, এবং এটি নির্দেশ করে যে Ansible প্লেবুক রান করার সময় হোস্ট বা মেশিন থেকে ফ্যাক্টস সংগ্রহ করবে কি না। ডিফল্টভাবে, এটি yes বা true হিসেবে সেট করা থাকে, তাই Ansible স্বয়ংক্রিয়ভাবে ফ্যাক্টস গ্যাদার করে।

gather_facts এর উদাহরণ

---
- name: Gather facts example
  hosts: all
  gather_facts: yes

  tasks:
    - name: Display OS information
      debug:
        msg: "The operating system is {{ ansible_distribution }} and version is {{ ansible_distribution_version }}"

উপরের উদাহরণে, gather_facts: yes থাকায় Ansible হোস্ট থেকে ফ্যাক্টস গ্যাদার করবে এবং ansible_distributionansible_distribution_version ফ্যাক্টসের মাধ্যমে অপারেটিং সিস্টেম ও এর ভার্সনের তথ্য প্রদর্শন করবে।

gather_facts এর মান no বা false করা

কিছু ক্ষেত্রে আপনি ফ্যাক্টস গ্যাদার করতে না চাইলে gather_facts: no বা false সেট করতে পারেন। এটি প্লেবুক এক্সিকিউশনকে দ্রুততর করতে পারে যদি ফ্যাক্টসের প্রয়োজন না থাকে।

---
- name: Playbook without gathering facts
  hosts: all
  gather_facts: no

  tasks:
    - name: Simple task
      debug:
        msg: "This is a simple task without gathering facts."

Facts ব্যবহার করার সুবিধা

  1. ডাইনামিক কনফিগারেশন: ফ্যাক্টসের মাধ্যমে আপনি হোস্টের বর্তমান অবস্থা বুঝতে পারেন এবং প্লেবুকে সেই অনুযায়ী শর্ত (condition) প্রয়োগ করতে পারেন।
  2. কাস্টমাইজেশন: বিভিন্ন হোস্টের কনফিগারেশন অনুযায়ী টাস্ক বা কনফিগারেশন পরিবর্তন করতে পারেন, যেমন: যদি কোনো হোস্টে একটি নির্দিষ্ট অপারেটিং সিস্টেম থাকে, তাহলে সেই অনুযায়ী টাস্ক রান করা।
  3. সহজ ডিবাগিং: ফ্যাক্টস ব্যবহার করে আপনি সহজে জানতে পারেন কোনো মেশিনের সিস্টেম ইনফরমেশন, যা ডিবাগিং বা সমস্যা সমাধানের ক্ষেত্রে সহায়ক হতে পারে।

সাধারণ ফ্যাক্টস

ফ্যাক্টবিবরণ
ansible_distributionহোস্টের অপারেটিং সিস্টেমের নাম
ansible_distribution_versionঅপারেটিং সিস্টেমের ভার্সন
ansible_hostnameহোস্ট মেশিনের নাম
ansible_all_ipv4_addressesসমস্ত IPv4 অ্যাড্রেস
ansible_processorপ্রসেসরের তথ্য
ansible_memory_mbমেমোরি (RAM) সম্পর্কিত তথ্য

ফ্যাক্টস ব্যবহার করার উদাহরণ

---
- name: Example playbook using facts
  hosts: all
  gather_facts: yes

  tasks:
    - name: Display IP address information
      debug:
        msg: "The IP addresses are: {{ ansible_all_ipv4_addresses }}"

    - name: Check if the OS is Ubuntu
      debug:
        msg: "This is an Ubuntu system."
      when: ansible_distribution == "Ubuntu"

এখানে, ansible_all_ipv4_addresses ব্যবহার করে হোস্টের সমস্ত IPv4 অ্যাড্রেস প্রদর্শন করা হয়েছে এবং when শর্ত ব্যবহার করে চেক করা হয়েছে হোস্টের অপারেটিং সিস্টেম Ubuntu কিনা।

সংক্ষেপে

  • Facts: হোস্টের সিস্টেম ইনফরমেশন যা Ansible স্বয়ংক্রিয়ভাবে গ্যাদার করে এবং প্লেবুকে ব্যবহার করা যায়।
  • gather_facts: Ansible প্লেবুক চালানোর সময় ফ্যাক্টস গ্যাদার করবে কি না, তা নির্ধারণ করে। ডিফল্টভাবে এটি yes থাকে।

Facts এবং gather_facts এর সঠিক ব্যবহার করে আপনি আপনার Ansible প্লেবুককে আরও কার্যকরী, কাস্টমাইজড এবং ডাইনামিক করতে পারেন।

আরও দেখুন...

Promotion