جواب میں ٹیگز کا استعمال کیسے کریں۔

Jwab My Ygz Ka Ast Mal Kys Kry



ڈرامے، کردار اور کام قابل جواب ڈھانچہ ہیں اور اس قابل جواب ڈھانچے میں وہ اہم وصف ہوتا ہے جسے جواب میں ٹیگ کہتے ہیں۔ جب بھی ہم Ansible میں پلے بک لانچ کرتے ہیں، تو آپ -tags اور -skip tags کمانڈز کو استعمال کر سکتے ہیں تاکہ ہم کاموں، ڈراموں اور کرداروں کی صرف ایک خاص سیریز کو انجام دے سکیں۔ اگر ہمارے پاس ایک پلے بک ہے جس میں بہت سارے کام ہیں، لیکن ہم پلے بک کے تمام کاموں کو انجام نہیں دینا چاہتے ہیں، پوری پلے بک پر عمل کرنے کے بجائے، ہم جوابی پلے بک میں ٹیگ کمانڈ کا استعمال کرکے صرف چند کام چلائیں گے۔

ہم اس موضوع میں ٹیگز پر بات کرنے جا رہے ہیں، جو جواب کے سب سے اہم پہلوؤں میں سے ایک کے طور پر کام کرتے ہیں۔ ہم یہ بتانے کی کوشش کریں گے کہ ٹیگز کیا ہیں اور ٹیگز جوابی میں کیسے کام کرتے ہیں کیونکہ یہ جوابی پلیٹ فارم کی ایک پریشان کن خصوصیت ہے۔







مثال کے طور پر، ایک پلے بک میں تین ذمہ داریاں ہوسکتی ہیں: ماڈیول کو انسٹال کرنا، اسے کنفیگر کرنا، اور تعینات کردہ ماڈیول کی حیثیت کی جانچ کرنا، جیسے کہ سروس چل رہی ہے اور قابل رسائی ہے۔ چونکہ ہمیں صرف چند ریموٹ مشینوں پر ماڈیولز کی حالت دیکھنے کی ضرورت ہے، اس لیے ہم اس صورت حال میں پلے بک میں موجود تمام کاموں کو انجام دینے کے بجائے جوابی ٹیگز کا استعمال کرتے ہیں۔ یہ ہمیں ایک مخصوص آپریشن کو خصوصی طور پر چلانے کے قابل بناتا ہے، جس سے ہم تمام متعلقہ سرگرمیوں کو ایک ہی پلے بک میں رکھ کر چلانے کا وقت کم کر سکتے ہیں۔



جوابی پلے بک میں ٹیگز کے استعمال کی شرائط

جوابی سافٹ ویئر میں عملی مثالیں ڈالنے کے لیے، ہمیں درج ذیل تقاضوں کو پورا کرنا چاہیے۔



ایک جوابدہ کنٹرولنگ سرور کی ضرورت ہے تاکہ یہ تبدیلیاں کرے۔ جوابی سافٹ ویئر میں ٹیگ پیرامیٹر کو استعمال کرنے کے لیے، ہمیں مقامی میزبانوں کی ضرورت ہے کہ وہ ان کے ساتھ بات چیت کریں۔ اس صورت میں، ہم پورے عمل میں مقامی میزبان کو ٹارگٹ ریموٹ سرور کے طور پر استعمال کر رہے ہیں۔ ہم پلے بکس بنائیں گے، جوابی ٹیگ کمانڈز پر عمل کریں گے، اور جوابی کنٹرولر ڈیوائس سے ریموٹ میزبانوں پر نتائج کی نگرانی کریں گے۔





ہم جوابی ٹیگز میں سے چند کو جانچنے کے لیے مختلف منظرناموں کو استعمال کرنے کا مقصد بنائیں گے تاکہ سیکھنے والا جوابی پلے بک میں ٹیگز کے تصور کو آسانی سے سمجھ سکے۔

مثال 01: جوابدہ پلے بک میں ایک کام تک رسائی

ہم پلے بک میں ایک سے زیادہ ٹاسک فراہم کر کے Ansible میں لاگو کرنے جا رہے ہیں اور پھر ہم اس میں موجود ٹیگز کو استعمال کر کے صرف ایک کام تک رسائی حاصل کریں گے۔ ایسا کرنے کے لیے، ہم درج ذیل کمانڈ کو لکھ کر پہلے پلے بک بنائیں گے۔



[root@master ansible]# nano ansible_tags.yml

ansible_tags.yml پلے بک بنانے اور لانچ کرنے کے بعد۔ اب ہم پلے بک میں کمانڈز لکھنا شروع کریں گے۔ سب سے پہلے، ہم فراہم کردہ میزبانوں کو 'میزبان' پیرامیٹر میں پاس کریں گے جسے ہم 'لوکل ہوسٹ' استعمال کریں گے۔ اس کے بعد، ہم 'false' ویلیو کو 'gather_facts' پیرامیٹر میں لکھیں گے تاکہ جب ہم پلے بک کو چلاتے ہیں تو ہم لوکل ہوسٹ کے بارے میں اضافی معلومات حاصل نہ کر سکیں۔

اس کے بعد، ہم 'ٹاسک' پیرامیٹر کے تحت ایک ایک کرکے ان سرگرمیوں کی فہرست بنانا شروع کر دیں گے جنہیں ہم انجام دینا چاہتے ہیں۔ ہم اس بات کا تعین کریں گے کہ آیا دستاویز پہلے عمل میں لوکل ہوسٹ مشین پر موجود ہے۔ اگر یہ دستیاب ہے، تو ہم اسے 'رجسٹر' پیرامیٹر میں محفوظ کریں گے اور پھر ہم ٹیگ کو منفرد نام دیں گے تاکہ جب ہم پلے بک پر عمل کریں، تو ہمارے لیے ٹیگ تک رسائی آسان ہو جائے۔ دوسرے ٹاسک میں ہم ویسا ہی کریں گے جیسا کہ ہم نے پہلے ٹاسک میں کیا تھا، لیکن ٹیگ کو منفرد ہونا چاہیے اور پھر ہم متعلقہ پیغام کے ساتھ کام کو دکھانے کے لیے ڈیبگ آپشن کا استعمال کریں گے۔

- میزبان:

- لوکل ہوسٹ
جمع_حقائق: غلط


کام:
- نام: فائل کا وجود x` چیک کریں۔
اسٹیٹ: path=./host.yml
رجسٹر: فائل موجود ہے۔
ٹیگز: check_file


- ڈیبگ:
msg: '{{ 'فائل موجود ہے' اگر fileExists.stat.exists دوسری 'فائل نہیں ملی' }}'
ٹیگز: check_file


- نام: چیک کریں کہ آیا host.yml موجودہ صارف کے ذریعے قابل رسائی ہے۔
شیل: stat -c '%a' ./host.yml
رجسٹر: رسائی پاتھ
ٹیگز: چیک_رسائی


- ڈیبگ:
msg: '{{ 'فائل قابل رسائی' اگر (accessPath.stdout|int) < 660 else 'فائل قابل رسائی نہیں ہے' }}'
ٹیگز: چیک_رسائی

اب، ہم پلے بک کو محفوظ کریں گے اور پھر اسے بند کریں گے۔ ہم ansible_tags.yml پلے بک کو چلانا چاہتے ہیں لہذا ہم صارفین کو آؤٹ پٹ دکھانے کے لیے جوابی ٹرمینل میں درج ذیل کمانڈ لکھیں گے۔

[root@master ansible] # جوابی پلے بک ansible_tags.yml -ٹیگز check_file

اوپر کمانڈ چلانے کے بعد، ہمیں بدلے میں مطلوبہ آؤٹ پٹ ملے گا۔ جیسا کہ ذیل میں دکھایا گیا ہے، صرف ایک کام انجام دیا جاتا ہے اور وہ آؤٹ پٹ میں ظاہر ہوتا ہے جو کہ 'چیک فائل کا وجود' ہے۔

مثال 02: جوابی پلے بک میں خاص ٹیگ کو نظر انداز کریں۔

یہاں جوابی ٹیگ کی دوسری مثال ہے جہاں ہم 'اسکیپ' ٹیگ پر جا رہے ہیں۔ یہ آپ پر منحصر ہے کہ آپ تمام کاموں کو نظر انداز کرنا چاہتے ہیں یا آپ جوابی میں پلے بک کے کسی خاص کام کو نظر انداز کرنا چاہتے ہیں۔ ہم مثال 1 کے نفاذ کو استعمال کر رہے ہیں اور پھر ہم جوابی ٹرمینل میں صرف ذیل کا بیان لکھ کر کام کو چھوڑ دیں گے۔

[root@master ansible] # جوابی پلے بک ansible_tags.yml --skip-tags check_file

مندرجہ بالا کمانڈ سے، ہم نے صرف 'چیک فائل وجود' کے کام کو نظر انداز کر دیا ہے۔ اب آؤٹ پٹ میں صرف ایک ہی ٹاسک ظاہر ہوتا ہے جو کہ گرین فونٹ میں 'فائل قابل رسائی' ہے۔

مثال 03: جوابدہ پلے بک میں ٹاسک کو ہمیشہ چلاتے رہیں

ہم جواب دینے والے ٹیگ کی بنیاد پر تیسری مثال کو نافذ کرنے جا رہے ہیں۔ اس مثال میں، ہم 'ہمیشہ' ٹیگ کا استعمال کریں گے جس کا مطلب ہے کہ ایک خاص ٹیگ ہمیشہ جوابی پلے بک میں عمل میں آئے گا۔ پلے بک لانچ کرنے کے لیے درج ذیل کمانڈ کا استعمال کریں:

[root@master ansible]# nano ansible_tags.yml

پلے بک میں، ہم نے چلانے کے لیے متعدد ٹاسک بنائے ہیں لیکن ہم نے آخری ٹاسک میں 'ہمیشہ' ٹیگ کو پاس کیا جو کہ 'انوینٹری سے پاس ورڈ حذف کریں' ہے۔ پلے بک میں مندرجہ ذیل کمانڈ نافذ کی گئی ہیں۔

- میزبان: تمام

جمع_حقائق: غلط


کام:
- نام: فائل کا وجود چیک کریں۔
اسٹیٹ: path=./host.yml
رجسٹر: فائل موجود ہے۔
delegate_to: لوکل ہوسٹ
ٹیگز: check_file


- ڈیبگ:
msg: '{{ 'فائل موجود ہے' اگر fileExists.stat.exists دوسری 'فائل نہیں ملی' }}'
ٹیگز: check_file


- نام: چیک کریں کہ آیا host.yml موجودہ صارف کے ذریعے قابل رسائی ہے۔
شیل: stat -c '%a' ./host.yml
رجسٹر: رسائی پاتھ
delegate_to: لوکل ہوسٹ
ٹیگز: چیک_رسائی


- ڈیبگ:
msg: '{{ 'فائل قابل رسائی' اگر (accessPath.stdout|int) < 660 else 'فائل قابل رسائی نہیں ہے' }}'
ٹیگز: چیک_رسائی


- نام: انوینٹری سے پاس ورڈ حذف کریں۔
lineinfile:
راستہ: '{{inventory_file}}'
regexp: '\b{{item}}.*\b'
حالت: غیر حاضر
delegate_to: لوکل ہوسٹ
become : جھوٹا ۔
ٹیگز: ہمیشہ
اشیاء کے ساتھ:
- جوابدہ_ پاس ورڈ

اس کے بعد، ہم کنٹرولر اور ٹارگٹ ریموٹ ہوسٹ کے درمیان کنکشن بنانے کے لیے انوینٹری فائل بنائیں گے۔ ذیل میں حکم ہے:

[root@master ansible# نینو میزبان.yml

یہ انوینٹری فائل ہے جس میں جواب میں 'Linux_host' سے متعلق معلومات موجود ہیں۔

تمام:

میزبان:
Linux_Host:
جوابی_میزبان: 192.168.3.229
ansible_user: قابل جواب
جوابی_پاس ورڈ: ******
ansible_connection: ssh
جوابی_پورٹ: 22

مطلوبہ آؤٹ پٹ حاصل کرنے کے لیے، ہم جوابی ٹرمینل میں درج ذیل کمانڈ کو چلائیں گے۔

[root@master ansible]# جوابی پلے بک ansible_tags.yml --tags check_file -i host.yml

نتیجہ

جواب میں ٹیگز کی وضاحت اس مضمون میں کی گئی ہے۔ اب ہم ٹیگز کے فنکشن اور جوابی جگہوں کو سمجھتے ہیں جہاں ہم انہیں لاگو کریں گے۔ جواب دینے والے ٹیگز کے تصور کو سمجھنے میں سیکھنے والوں کی مدد کرنے کے لیے، ہم نے متعدد مثالیں تیار کی ہیں۔