উত্তরযোগ্য ট্যাগগুলি কীভাবে ব্যবহার করবেন

Uttarayogya Tyagaguli Kibhabe Byabahara Karabena



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

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







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



উত্তরযোগ্য প্লেবুকে ট্যাগ ব্যবহার করার পূর্বশর্ত

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



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





আমরা কয়েকটি উত্তরযোগ্য ট্যাগ পরীক্ষা করার জন্য বিভিন্ন পরিস্থিতিতে নিয়োগ করার লক্ষ্য রাখব যাতে শিক্ষার্থীরা একটি উত্তরযোগ্য প্লেবুকের ট্যাগের ধারণাটি সহজেই বুঝতে পারে।

উদাহরণ 01: উত্তরযোগ্য প্লেবুকে একটি একক কাজ অ্যাক্সেস করা

আমরা প্লেবুকে একাধিক টাস্ক প্রদান করে Ansible-এ বাস্তবায়ন করতে যাচ্ছি এবং তারপরে ট্যাগগুলি ব্যবহার করে আমরা শুধুমাত্র একটি টাস্ক অ্যাক্সেস করব। এটি করার জন্য, আমরা নিম্নলিখিত কমান্ডটি লিখে প্রথমে প্লেবুক তৈরি করব:



[root@master ansible # ন্যানো ansible_tags.yml

ansible_tags.yml প্লেবুক তৈরি এবং চালু করার পরে। এখন আমরা প্লেবুকে কমান্ড লেখা শুরু করব। প্রথমত, আমরা প্রদত্ত হোস্টগুলিকে 'হোস্টস' প্যারামিটারে পাস করব যা আমরা 'লোকালহোস্ট' ব্যবহার করব। তারপর, আমরা 'false' মানটি 'gather_facts' প্যারামিটারে লিখব যাতে আমরা প্লেবুকটি কার্যকর করার সময় লোকালহোস্ট সম্পর্কে অতিরিক্ত তথ্য পেতে না পারি।

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

- হোস্ট:

- স্থানীয় হোস্ট
gather_facts: মিথ্যা


কাজ:
- নাম: ফাইলের অস্তিত্ব x` চেক করুন
stat: path=./host.yml
নিবন্ধন: ফাইল বিদ্যমান
ট্যাগ: check_file


- ডিবাগ:
msg: '{{ 'ফাইল বিদ্যমান' যদি fileExists.stat.exists অন্য 'ফাইল পাওয়া যায়নি' }}'
ট্যাগ: check_file


- নাম: বর্তমান ব্যবহারকারী দ্বারা host.yml অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করুন
শেল: stat -c '%a' ./host.yml
নিবন্ধন: অ্যাক্সেসপাথ
ট্যাগ: check_access


- ডিবাগ:
msg: '{{ 'ফাইল অ্যাক্সেসযোগ্য' যদি (accessPath.stdout|int) < 660 else 'ফাইল অ্যাক্সেসযোগ্য নয়' }}'
ট্যাগ: check_access

এখন, আমরা প্লেবুক সংরক্ষণ করব এবং তারপর এটি বন্ধ করব। আমরা ansible_tags.yml প্লেবুক চালাতে চাই তাই আমরা ব্যবহারকারীদের কাছে আউটপুট প্রদর্শন করতে Ansible টার্মিনালে নিম্নলিখিত কমান্ডটি লিখব।

[root@master ansible]# ansible-playbook ansible_tags.yml -ট্যাগ check_file

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

উদাহরণ 02: উত্তরযোগ্য প্লেবুকে বিশেষ ট্যাগ উপেক্ষা করুন

এখানে Ansible ট্যাগের দ্বিতীয় উদাহরণ যেখানে আমরা 'skip' ট্যাগে যাচ্ছি। আপনি সমস্ত কাজকে উপেক্ষা করতে চান নাকি অ্যান্সিবলের প্লেবুকের একটি নির্দিষ্ট কাজকে উপেক্ষা করতে চান তা আপনার উপর নির্ভর করে। আমরা উদাহরণ 1 বাস্তবায়ন ব্যবহার করছি এবং তারপরে আমরা শুধুমাত্র উত্তরযোগ্য টার্মিনালে নীচের বিবৃতিটি লিখে কাজটি এড়িয়ে যাব।

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

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

উদাহরণ 03: সর্বদা উত্তরযোগ্য প্লেবুকে টাস্কটি চালাতে থাকুন

আমরা Ansible ট্যাগের উপর ভিত্তি করে তৃতীয় উদাহরণ বাস্তবায়ন করতে যাচ্ছি। এই উদাহরণে, আমরা 'সর্বদা' ট্যাগ ব্যবহার করব যার অর্থ হল একটি নির্দিষ্ট ট্যাগ সর্বদা উত্তরযোগ্য প্লেবুকে কার্যকর হবে। প্লেবুক চালু করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

[root@master ansible]# ন্যানো ansible_tags.yml

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

- হোস্ট: সব

gather_facts: মিথ্যা


কাজ:
- নাম: ফাইলের অস্তিত্ব পরীক্ষা করুন
stat: path=./host.yml
নিবন্ধন: ফাইল বিদ্যমান
delegate_to: localhost
ট্যাগ: check_file


- ডিবাগ:
msg: '{{ 'ফাইল বিদ্যমান' যদি fileExists.stat.exists অন্য 'ফাইল পাওয়া যায়নি' }}'
ট্যাগ: check_file


- নাম: বর্তমান ব্যবহারকারী দ্বারা host.yml অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করুন
শেল: stat -c '%a' ./host.yml
নিবন্ধন: অ্যাক্সেসপাথ
delegate_to: localhost
ট্যাগ: check_access


- ডিবাগ:
msg: '{{ 'ফাইল অ্যাক্সেসযোগ্য' যদি (accessPath.stdout|int) < 660 else 'ফাইল অ্যাক্সেসযোগ্য নয়' }}'
ট্যাগ: check_access


- নাম: তালিকা থেকে পাসওয়ার্ড মুছুন
লাইনইনফাইল:
পথ: '{{inventory_file}}'
regexp: '\b{{item}}.*\b'
রাষ্ট্র: অনুপস্থিত
delegate_to: localhost
become: মিথ্যা
ট্যাগ: সবসময়
with_items:
- উত্তরযোগ্য_পাসওয়ার্ড

এর পরে, আমরা কন্ট্রোলার এবং টার্গেট রিমোট হোস্টের মধ্যে সংযোগ তৈরি করতে ইনভেন্টরি ফাইল তৈরি করব। নিম্নে কমান্ড দেওয়া হল:

[root@master ansible # ন্যানো হোস্ট.yml

এখানে একটি ইনভেন্টরি ফাইল রয়েছে যাতে উত্তরে “Linux_host” সম্পর্কিত তথ্য রয়েছে।

সব:

হোস্ট:
Linux_Host:
উত্তরযোগ্য_হোস্ট: 192.168.3.229
ansible_user: উত্তরযোগ্য
ansible_password: ******
ansible_connection: ssh
উত্তরযোগ্য_বন্দর: 22

পছন্দসই আউটপুট পেতে, আমরা উত্তর টার্মিনালে নিম্নলিখিত কমান্ডটি চালাব:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

উপসংহার

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