উত্তরযোগ্য চলক এবং তথ্যগুলির সাথে কীভাবে কাজ করবেন - পার্ট 8


আমরা এই উত্তরীয় সিরিজে ভেরিয়েবলগুলি উল্লেখ করেছি এবং আপনার মনের দিকে কিছুটা দৌড়ানোর জন্য। একটি পরিবর্তনশীল, ঠিক যেমন অনেক প্রোগ্রামিং ভাষার মতো, মূলত একটি মূল যা একটি প্রতিনিধিত্ব করে।

একটি বৈধ পরিবর্তনশীল নাম গঠন করে কি?

একটি চলক নামের মধ্যে অক্ষর, সংখ্যা, আন্ডারস্কোর বা 2 বা তাদের সমস্তগুলির মিশ্রণ থাকে। তবে, মনে রাখবেন যে একটি পরিবর্তনশীল নাম সর্বদা একটি বর্ণ দিয়ে শুরু করা উচিত এবং এতে ফাঁকা স্থান থাকা উচিত নয়।

আসুন দেখে নেওয়া যাক বৈধ এবং অগ্রহণযোগ্য পরিবর্তনশীল নামের কয়েকটি উদাহরণ:

football 
foot_ball
football20 
foot_ball20
foot ball
20 
foot-ball

চলুন চলক প্রকারগুলি নিয়ে আলোচনা করা যাক:

1. প্লেবুক ভেরিয়েবল

প্লেবুকের ভেরিয়েবলগুলি বেশ সহজ এবং সোজা are প্লেবুকের একটি ভেরিয়েবল সংজ্ঞায়িত করতে, খালি আপনার ভেরিয়েবলগুলি লেখার আগে কীওয়ার্ড ওয়ার্সটি ব্যবহার করুন।

ভেরিয়েবলের মানটি অ্যাক্সেস করতে, এটিকে উদ্ধৃতি চিহ্নের সাথে সংযুক্ত ডাবল কোঁকড়া ধনুর্বন্ধনীগুলির মধ্যে রাখুন।

এখানে একটি সহজ প্লেবুক উদাহরণ:

- hosts: all
  vars:
    greeting: Hello world! 

  tasks:
  - name: Ansible Basic Variable Example
    debug:
      msg: "{{ greeting }}"

উপরের প্লেবুকে, অভিবাদন ভেরিয়েবল হ্যালো ওয়ার্ল্ডের দ্বারা প্রতিস্থাপিত হয়! যখন প্লেবুকটি চালানো হয়। প্লেবুকটি কেবল হ্যালো ওয়ার্ল্ড বার্তা প্রিন্ট করে! মৃত্যুদন্ড কার্যকর করা হয়

অতিরিক্ত হিসাবে, আপনার যেমন দেখানো হয়েছে তেমন একটি তালিকা বা ভেরিয়েবলের একটি অ্যারে থাকতে পারে:

নীচের প্লেবুকটি মহাদেশ নামে একটি পরিবর্তনশীল দেখায়। ভেরিয়েবলের 5 টি বিভিন্ন মান রয়েছে - মহাদেশের নাম। এই ভ্যালুগুলির প্রতিটি সহজেই প্রথম পরিবর্তনশীল হিসাবে সূচক 0 ব্যবহার করে অ্যাক্সেস করা যায়।

নীচের প্লেবুকের উদাহরণ এশিয়া পুনরুদ্ধার এবং প্রদর্শন করে (সূচিপত্র 1)।

- hosts: all
  vars:
    continents:
      - Africa
      - Asia
      - South America
      - North America
      - Europe
      
  tasks:
  - name: Ansible List variable Example
    debug:
      msg: "{{ continents [1] }}"

পরিবর্তনশীল তালিকাটি একইভাবে প্রদর্শিত হিসাবে কাঠামোগত করা যেতে পারে:

vars:
    Continents: [Africa, Asia, South America, North America, Europe]

তালিকার সমস্ত আইটেম তালিকা করতে, উইথ_আইটিএমএস মডিউলটি ব্যবহার করুন। এটি অ্যারের সমস্ত মানগুলি লুপ করবে।

- hosts: all
  vars:
    continents: [Africa, Asia, South America, North America, Europe]

  tasks:
  - name: Ansible array variables example
    debug: 
      msg: "{{ item }}"
    with_items:
      - "{{ continents }}"

আর এক প্রকারের উত্তরযোগ্য ভেরিয়েবল হ'ল অভিধান ভেরিয়েবল।

অভিধানের ভেরিয়েবলগুলি প্লেবুকে অতিরিক্ত সমর্থন করে। অভিধান ভেরিয়েবলটি সংজ্ঞায়িত করতে, অভিধান ভেরিয়েবল নামের ঠিক নীচে কী-মান জোড়টি সনাক্ত করুন।

hosts: switch_f01

vars:
   http_port: 8080
   default_gateway: 10.200.50.1
   vlans:
       id: 10
       port: 2

উপরের উদাহরণে, ভ্ল্যানস অভিধান অভিধান হয় যখন আইডি এবং পোর্ট মূল-মান জোড়া হয়।

hosts: switch_f01

vars:
   http_port: 8080
   default_gateway: 
   vlans:
      id: 10
      port: 20

 tasks:
   name: Configure default gateway
   system_configs:
   default_gateway_ip: “{{ default_gateway  }}“


   name: Label port on vlan 10
   vlan_config:
	vlan_id: “{{ vlans[‘id’]  }}“
     port_id: 1/1/ {{ vlans[‘port’]  }}

পোর্ট_আইডের জন্য, যেহেতু আমরা পাঠ্যের সাহায্যে মানটি শুরু করছি এবং পরিবর্তনশীল নয়, তাই কোঁকড়ানো ধনুর্বন্ধনীকে ঘিরে কোটেশন চিহ্নগুলি প্রয়োজনীয় নয়।

2. বিশেষ চলক

জবাব পূর্বনির্ধারিত ভেরিয়েবলগুলির একটি তালিকা সরবরাহ করে যা জিনজা 2 টেম্পলেট এবং প্লেবুকগুলিতে উল্লেখ করা যেতে পারে তবে ব্যবহারকারীর দ্বারা পরিবর্তন বা সংজ্ঞা দেওয়া যায় না।

সম্মিলিতভাবে, উত্তরযোগ্য পূর্বনির্ধারিত ভেরিয়েবলগুলির তালিকাটিকে উত্তরযোগ্য তথ্য হিসাবে উল্লেখ করা হয় এবং যখন কোনও প্লেবুক কার্যকর করা হয় তখন এগুলি সংগ্রহ করা হয়।

সমস্ত উত্তরযোগ্য ভেরিয়েবলের একটি তালিকা পেতে, নীচের মতো বর্ণিত অ্যাড-হক কমান্ডে সেটআপ মডিউলটি ব্যবহার করুন:

# ansible -m setup hostname

এটি প্রদর্শিত হিসাবে JSON ফর্ম্যাটে আউটপুট প্রদর্শন করে:

# ansible -m setup localhost

আউটপুট থেকে, আমরা দেখতে পাচ্ছি যে উত্তরীয় বিশেষ ভেরিয়েবলের কয়েকটি উদাহরণের মধ্যে রয়েছে:

ansible_architecture
ansible_bios_date
ansible_bios_version
ansible_date_time
ansible_machine
ansible_memefree_mb
ansible_os_family
ansible_selinux

আরও অনেক উত্তরযোগ্য বিশেষ ভেরিয়েবল রয়েছে এটি কয়েকটি উদাহরণ।

এই ভেরিয়েবলগুলি জিনজা 2 টেমপ্লেটে প্রদর্শিত হিসাবে ব্যবহার করা যেতে পারে:

<html>
<center>
   <h1> The hostname of this webserver is {{ ansible_hostname }}</h1>
   <h3> It is running on {{ ansible_os_family}}system </h3>
</center>
</html>

3. ইনভেন্টরি ভেরিয়েবল

সবশেষে, তালিকায়, আমাদের কাছে উত্তরীয় জায় ভেরিয়েবল রয়েছে। ইনভেন্টরিটি আইএনআই ফর্ম্যাটে এমন একটি ফাইল যা জবাব দ্বারা পরিচালিত সমস্ত হোস্ট ধারণ করে।

জায়গুলিতে, আপনি একটি হোস্ট সিস্টেমে একটি ভেরিয়েবল বরাদ্দ করতে পারেন এবং পরে এটি কোনও প্লেবুকে ব্যবহার করতে পারেন।

[web_servers]

web_server_1 ansible_user=centos http_port=80
web_server_2 ansible_user=ubuntu http_port=8080

উপরেরগুলি প্রদর্শিত হিসাবে প্লেবুক ওয়াইএএমএল ফাইলটিতে উপস্থাপন করা যেতে পারে:

---
   web_servers:
     web_server_1:
        ansible_user=centos
	   http_port=80

web_server_2:
        ansible_user=ubuntu
	   http_port=8080

হোস্ট সিস্টেমগুলি একই ভেরিয়েবলগুলি ভাগ করে নিলে আপনি আরও কম গ্রুপ তৈরি করতে এবং অপ্রয়োজনীয় পুনরাবৃত্তি এড়াতে ইনভেন্টরি ফাইলটিতে অন্য একটি গ্রুপকে সংজ্ঞায়িত করতে পারেন।

উদাহরণ স্বরূপ:

[web_servers]

web_server_1 ansible_user=centos http_port=80
web_server_2 ansible_user=centos http_port=80

উপরোক্ত হিসাবে কাঠামোগত করা যেতে পারে:

[web_servers]
web_server_1
web_server_2


[web_servers:vars]
ansible_user=centos
http_port=80

এবং প্লেবুক ওয়াইএএমএল ফাইলটিতে এটি প্রদর্শিত হিসাবে সংজ্ঞায়িত করা হবে:

---
   web_servers:
    
     hosts: 
       web_server_1:
	  web_server_2:

     vars: 
        ansible_user=centos
   http_port=80

উত্তরযোগ্য ঘটনা

প্লেবুকগুলি চলাকালীন, উত্তরটি যে প্রথম কাজটি করে তা হ'ল সেটআপ টাস্কটি সম্পাদন। আমি নিশ্চিত যে আপনি অবশ্যই আউটপুট জুড়ে এসেছেন:

TASK:  [Gathering facts] *********

জবাবদিহি করা তথ্যগুলি সিস্টেমের বৈশিষ্ট্য বা আপনি সংযুক্ত থাকা দূরবর্তী নোডগুলি সম্পর্কে তথ্যের টুকরা ছাড়া কিছুই নয়। এই তথ্যগুলির মধ্যে সিস্টেম আর্কিটেকচার, ওএস সংস্করণ, বিআইওএস তথ্য, সিস্টেমের সময় এবং তারিখ, সিস্টেম আপটাইম, আইপি ঠিকানা এবং হার্ডওয়্যার সম্পর্কিত তথ্য রয়েছে যা কয়েকটি উল্লেখ করতে পারে।

যে কোনও সিস্টেম সম্পর্কে তথ্য পেতে নীচের কমান্ডের মতো সেটআপ মডিউলটি কেবল ব্যবহার করুন:

# ansible -m setup hostname

উদাহরণ স্বরূপ:

# ansible -m setup database_server

এটি JSON ফর্ম্যাটে প্রদর্শিত হিসাবে বড় আকারের ডেটা মুদ্রণ করে:

যথাযথ তথ্যগুলি সিস্টেম অ্যাডমিনিস্ট্রেটরদের কোন অপারেশনগুলি পরিচালনা করতে সহায়তা করে, উদাহরণস্বরূপ, অপারেটিং সিস্টেমের উপর নির্ভর করে, তারা জানতে পারবেন যে কোন সফ্টওয়্যার প্যাকেজ ইনস্টল করা দরকার, এবং সেগুলি কীভাবে কনফিগার করা হবে ইত্যাদি।

কাস্টম তথ্য

আপনি কি জানতেন যে আপনি আপনার নিজস্ব কাস্টম তথ্য তৈরি করতে পারবেন যা উত্তরযোগ্য দ্বারা সংগ্রহ করা যায়? হ্যা, তুমি পারো. আপনি কিভাবে এটি সম্পর্কে যেতে না? আসুন গিয়ার্স শিফট করুন এবং দেখুন কীভাবে।

প্রথম পদক্ষেপটি হ'ল পরিচালিত বা দূরবর্তী নোডে একটি /etc/ansible/facts.d ডিরেক্টরি তৈরি করা।

এই ডিরেক্টরিতে, এই ফাইল (গুলি) প্লেবুকটি আনসিবল কন্ট্রোল নোডে চালিত হলে JSON ডেটা ফেরত দেবে, যা প্লেবুক চালানোর পরে উত্তরীয় পুনরুদ্ধার করে এমন অন্যান্য তথ্যের সাথে অন্তর্ভুক্ত।

এখানে ডেট_টাইম.ফ্যাক্ট নামে একটি কাস্টম ফ্যাক্ট ফাইলের একটি উদাহরণ যা তারিখ এবং সময় পুনরুদ্ধার করে।

# mkdir -p /etc/ansible/facts.d
# vim /etc/ansible/facts.d/date_time.fact

এটিতে নিম্নলিখিত লাইনগুলি যুক্ত করুন।

#!/bin/bash
DATE=`date`
echo "{\"date\" : \"${DATE}\"}"

ফাইলটি সংরক্ষণ করুন এবং প্রস্থান করুন।

এখন নির্বাহের অনুমতিগুলি বরাদ্দ করুন:

# chmod +x /etc/ansible/facts.d/date_time.fact

এখন, আমি চেক_ডেট.আইএমএল নামে উত্তরীয় নিয়ন্ত্রণ নোডে একটি প্লেবুক তৈরি করেছি।

---

- hosts: webservers

  tasks:
   - name: Get custom facts
     debug:
      msg: The custom fact is {{ansible_local.date_time}}

অ্যাসিবিল_লোকাল ভেরিয়েবলের সাথে ফ্যাক্ট ফাইল যুক্ত করুন। উত্তরযোগ্য_লোকাল সমস্ত কাস্টম তথ্য সংরক্ষণ করে।

এখন প্লেবুক চালান এবং ফ্যাক্ট ফাইলটিতে সংরক্ষিত উত্তর পুনরুদ্ধার তথ্য পর্যবেক্ষণ করুন:

# ansible_playbook check_date.yml

এটি আমাদের উত্তরীয় ভেরিয়েবল এবং তথ্যগুলির সাথে কাজ করার জন্য এই টিউটোরিয়ালটির শেষে এনেছে।