paint-brush
উত্তর 101: ফ্যাক্টস এবং টেমপ্লেট নিয়ে কাজ করাদ্বারা@cloudkungfu
972 পড়া
972 পড়া

উত্তর 101: ফ্যাক্টস এবং টেমপ্লেট নিয়ে কাজ করা

দ্বারা cloud-kung-fu4m2024/01/30
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

অভিযোজনযোগ্য অটোমেশন ওয়ার্কফ্লো তৈরি করতে অ্যান্সিবল ভেরিয়েবল, ফ্যাক্ট এবং টেমপ্লেট ব্যবহার করে। ভেরিয়েবলগুলি গতিশীল কনফিগারেশন পরিচালনা সক্ষম করে, তথ্যগুলি সিস্টেম-নির্দিষ্ট তথ্য প্রদান করে এবং টেমপ্লেটগুলি কাস্টমাইজযোগ্য কনফিগারেশন ফাইল তৈরি করে। এই পদ্ধতিটি নিশ্চিত করে যে প্লেবুকগুলি বিভিন্ন পরিবেশে পুনরায় ব্যবহারযোগ্য এবং নমনীয়।
featured image - উত্তর 101: ফ্যাক্টস এবং টেমপ্লেট নিয়ে কাজ করা
cloud-kung-fu HackerNoon profile picture
0-item

উত্তরে, ভেরিয়েবল এবং ফ্যাক্ট, টেমপ্লেট সহ, নমনীয় অটোমেশন ওয়ার্কফ্লো তৈরির জন্য ভিত্তিমূলক সরঞ্জাম। ভেরিয়েবল আপনাকে আপনার কনফিগারেশনগুলি গতিশীলভাবে পরিচালনা এবং পরিবর্তন করতে দেয়। Facts হল ভেরিয়েবলের একটি বিশেষ উপসেট যা Ansible দূরবর্তী সিস্টেম থেকে সংগ্রহ করে, প্রসঙ্গ-নির্দিষ্ট তথ্য প্রদান করে।


টেমপ্লেটগুলি পরিবর্তনশীল-চালিত কনফিগারেশন ফাইলগুলির প্রজন্মকে সক্ষম করে, আপনার প্লেবুকগুলিকে বিভিন্ন পরিবেশ এবং পরিস্থিতিতে অভিযোজিত করে তোলে।


এই সরঞ্জামগুলি প্লেবুকগুলিকে পুনরায় ব্যবহারযোগ্য এবং অভিযোজনযোগ্য করে তোলে, আপনাকে হার্ড-কোডিং মানগুলি এড়াতে এবং বিভিন্ন পরিবেশের জন্য কাস্টমাইজেশন সক্ষম করার অনুমতি দেয়৷

ভেরিয়েবল ও ফ্যাক্টস

ভেরিয়েবল প্লেবুকের মূল লজিক পরিবর্তন না করেই প্যারামিটার পরিবর্তন করার অনুমতি দেয়।

কিভাবে তথ্য, ভেরিয়েবল এবং টেমপ্লেট একসাথে কাজ করে

  • ভেরিয়েবলের ধরন:
    • বুলিয়ান: সত্য বা মিথ্যা মান।

    • তালিকা: আইটেম একটি আদেশ সংগ্রহ.

    • অভিধান: জটিল ডেটা স্ট্রাকচারের জন্য কী-মান জোড়া।

    • নিবন্ধিত ভেরিয়েবল: আপনার প্লেবুকে পরে ব্যবহার করার জন্য কাজের আউটপুট ক্যাপচার করে।

    • তথ্য: স্বয়ংক্রিয়ভাবে সংগৃহীত ভেরিয়েবল যা আপনার পরিচালনা করা দূরবর্তী সিস্টেম সম্পর্কে বিশদ প্রদান করে।


দ্রষ্টব্য: বন্ধনী স্বরলিপি ব্যবহার করে পরিবর্তনশীল নামের দ্বন্দ্ব এড়িয়ে চলুন।


 - name: Print the distribution of the target hosts: all vars: curr_time: "{{ now() }}" tasks: - name: Distro Check ansible.builtin.debug: msg: "The target system is {{ ansible_facts['distribution'] }}. Timestamp: {{ curr_time }}"

টেমপ্লেট এবং ফাইল

উত্তরযোগ্য টেমপ্লেটগুলি পরিবর্তনশীল ইন্টারপোলেশন, লুপ এবং শর্তাবলী ব্যবহার করে গতিশীলভাবে ফাইল তৈরি করতে জিঞ্জা 2 টেমপ্লেটিং ভাষা ব্যবহার করে।


 - name: Write distro name hosts: all tasks: - name: Write distro name ansible.builtin.template: src: distro.j2 dest: /root/distro.txt mode: '644' # src: location of jinja2 template file # dest: location it will be copied to # permissions that will be granted to the file

অনুশীলন করা

Lighttpd-এর NGINX ইনস্টল করতে হবে কিনা তা নির্ধারণ করতে আমরা OS Family ব্যবহার করতে যাচ্ছি, এবং তারপরে, আমরা হার্ডকোডিং হোস্টনাম ছাড়াই NGINX ধারণকারী রিমোট হোস্টে একটি কাস্টম হোমপেজ স্থাপন করব।


  1. রেপো ক্লোন করুন।
 git clone https://github.com/perplexedyawdie/ansible-learn.git


2. তথ্য ও টেমপ্লেটে ডিরেক্টরি পরিবর্তন করুন

 cd ansible-learn/facts-and-templates


3. ডকার-কম্পোজ ব্যবহার করে পরিবেশকে স্পিন করুন

 docker compose up -d --build


4. উত্তরযোগ্য সার্ভারে SSH

 ssh -o StrictHostKeyChecking=no -o NoHostAuthenticationForLocalhost=yes root@localhost -p 2200 # password: test123

ভেরিয়েবল ও ফ্যাক্টস

5. server_setup.yaml নামে একটি প্লেবুক তৈরি করুন। এখানে, আমরা NGINX এবং Lighthttpd সেটআপ করব এবং তারপরে, প্রতিটি দূরবর্তী হোস্টের জন্য ডিস্ট্রোর নাম আউটপুট করব।


 - name: Install NGINX on Debian & Lighttpd on RedHat hosts: all vars: dev1: "Debian" dev2: "RedHat" tasks: - name: Install NGINX for Debian-based systems ansible.builtin.apt: name: nginx state: present when: ansible_facts['os_family'] == dev1 - name: Install Lighttpd for RedHat-based systems ansible.builtin.yum: name: lighttpd state: present when: ansible_facts['os_family'] == dev2 - name: Display the distribution ansible.builtin.debug: msg: "The server is running {{ ansible_facts['distribution'] }}"


6. ansible-lint.

 ansible-lint server_setup.yaml


7. প্লেবুক চালান।

 ansible-playbook --key-file /root/.ssh/id_rsa_ansible -u root -i inventory.yaml server_setup.yaml


8. সেটআপ সফল হয়েছে তা নিশ্চিত করুন৷

 ssh -i /root/.ssh/id_rsa_ansible root@server3 nginx -V ssh -i /root/.ssh/id_rsa_ansible root@server2 lighttpd -v ssh -i /root/.ssh/id_rsa_ansible root@server1 lighttpd -v

টেমপ্লেট এবং ফাইল

9. index.html.j2 নামে একটি Jinja2 টেমপ্লেট ফাইল তৈরি করুন


এটি OS পরিবার এবং বিতরণের সাথে স্বয়ংক্রিয়ভাবে জনবহুল হয়ে যাবে।


 <html> <head> <title>Welcome to {{ ansible_facts['os_family'] }}</title> </head> <body> <h1>Server running on {{ ansible_facts['distribution'] }}</h1> </body> </html>


10. custom_homepage.yaml.


আমরা উপরে তৈরি করা কাস্টম হোমপেজটি NGINX-এ স্থাপন করছি তারপর সার্ভারটি পুনরায় চালু করছি।


 - name: Deploy Custom Homepage and restart hosts: all vars: dev1: "Debian" dev2: "RedHat" tasks: - name: Create Homepage with Jinja2 Template for NGINX ansible.builtin.template: src: index.html.j2 dest: /var/www/html/index.html mode: '644' when: ansible_facts['os_family'] == dev1 notify: restart nginx handlers: - name: Restart NGINX listen: "restart nginx" ansible.builtin.service: name: nginx state: restarted when: ansible_facts['os_family'] == dev1


11. লিন্টার চালান।

 ansible-lint custom_homepage.yaml


12. প্লেবুক চালান।

 ansible-playbook --key-file /root/.ssh/id_rsa_ansible -u root -i inventory.yaml custom_homepage.yaml


13. আপনার ব্রাউজারে http://localhost:2203 গিয়ে স্থাপনা নিশ্চিত করুন।

রিক্যাপ

অসাধারণ প্রচেষ্টা! 🙌 আমরা শিখেছি কিভাবে টেমপ্লেট ব্যবহার করে ডায়নামিক ফাইল তৈরি করতে হয় এবং প্লেবুকে কিভাবে ভেরিয়েবল এবং ফ্যাক্ট ব্যবহার করতে হয়। এর পরে, আমরা মডুলারাইজেশন এবং ত্রুটি পরিচালনার দিকে নজর দেব। ততক্ষণ, যত্ন নিন!