Ansible کو تیز کرنا

Ansible کو تیز کرنا
یہ کوئی راز نہیں ہے کہ ڈیفالٹ سیٹنگز کے ساتھ Ansible اپنا کام بہت جلد نہیں کر سکتا۔ مضمون میں میں اس کی کئی وجوہات کی نشاندہی کروں گا اور ایک مفید کم از کم ترتیبات پیش کروں گا جو کہ ممکنہ طور پر آپ کے پروجیکٹ کی رفتار کو بڑھا دے گی۔

یہاں اور نیچے ہم Ansible 2.9.x پر تبادلہ خیال کرتے ہیں، جو آپ کے پسندیدہ انداز میں ایک تازہ تخلیق کردہ ورچوئل این وی میں انسٹال کیا گیا تھا۔

انسٹالیشن کے بعد، اپنی پلے بک کے آگے ایک "ansible.cfg" فائل بنائیں - یہ مقام آپ کو ان سیٹنگز کو پروجیکٹ کے ساتھ منتقل کرنے کی اجازت دے گا، اور یہ خود بخود لوڈ ہو جائیں گی۔

پائپ لائننگ

کچھ لوگوں نے پائپ لائننگ استعمال کرنے کی ضرورت کے بارے میں پہلے ہی سنا ہوگا، یعنی ماڈیولز کو ٹارگٹ سسٹم کے فائل سسٹم میں کاپی نہیں کرنا، بلکہ بیس 64 میں لپٹے ہوئے زپ آرکائیو کو براہ راست ازگر کے مترجم کے stdin میں منتقل کرنا، لیکن دوسروں نے ایسا نہیں کیا، لیکن حقیقت یہ ہے۔ ایک حقیقت ہے: یہ ترتیب اب بھی کم سمجھا جاتا ہے. بدقسمتی سے، کچھ مقبول لینکس ڈسٹری بیوشنز جو ڈیفالٹ کے لحاظ سے sudo کو بہت اچھی طرح سے ترتیب دینے کے لیے استعمال ہوتی ہیں - تاکہ اس کمانڈ کو tty (ٹرمینل) کی ضرورت ہو، اس لیے Ansible نے اس انتہائی مفید ترتیب کو بطور ڈیفالٹ غیر فعال کر دیا۔

pipelining = True

حقائق جمع کرنا

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

gathering = smart|explicit

ssh کنکشنز کو دوبارہ استعمال کرنا

اگر آپ نے کبھی ڈیبگنگ موڈ میں Ansible چلایا ہے ("v" آپشن، ایک سے نو بار دہرایا گیا ہے)، تو آپ نے محسوس کیا ہوگا کہ ssh کنکشن مسلسل بنتے اور ٹوٹتے رہتے ہیں۔ تو، یہاں بھی چند باریکیاں ہیں۔

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

ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"

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

transfer_method = piped

ویسے، "develop" برانچ میں یہ ترتیب بھی موجود ہے۔ کہیں نہیں جا رہا.

چھری سے مت ڈرو کانٹے سے ڈرو

ایک اور مفید ترتیب فورکس ہے۔ یہ کارکن کے عمل کی تعداد کا تعین کرتا ہے جو بیک وقت میزبانوں سے جڑیں گے اور کام انجام دیں گے۔ ایک زبان کے طور پر ازگر کی خصوصیات کی وجہ سے، پروسیس استعمال کیے جاتے ہیں، نہ کہ تھریڈز، کیونکہ Ansible اب بھی Python 2.7 کو سپورٹ کرتا ہے - آپ کے لیے کوئی asyncio نہیں، یہاں غیر مطابقت پذیر رویے کو متعارف کرانے کا کوئی فائدہ نہیں ہے! پہلے سے طے شدہ جوابی چلتا ہے۔ پانچ کارکنوں، لیکن اگر صحیح طریقے سے پوچھا جائے تو، یہ مزید شروع کرے گا:

forks = 20

میں ابھی آپ کو متنبہ کرتا ہوں کہ کنٹرول مشین پر میموری کی دستیاب مقدار سے متعلق یہاں کچھ مشکلات ہوسکتی ہیں۔ دوسرے لفظوں میں، آپ یقیناً فورکس = 100500 سیٹ کر سکتے ہیں، لیکن کس نے کہا کہ یہ کام کرے گا؟

یہ سب ایک ساتھ ڈالنا

نتیجے کے طور پر، ansible.cfg (ini فارمیٹ) کے لیے، ضروری ترتیبات اس طرح نظر آسکتی ہیں:

[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped

اور اگر آپ صحت مند شخص کی عام YaML انوینٹری میں سب کچھ چھپانا چاہتے ہیں، تو یہ کچھ اس طرح نظر آسکتا ہے:

---
all:
  vars:
    ansible_ssh_pipelining: true
    ansible_ssh_transfer_method: piped
    ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m

بدقسمتی سے، یہ ترتیبات کے ساتھ کام نہیں کرے گا "gathering = smart/explicit" اور "forks = 20": ان کے YaML مساوی موجود نہیں ہیں۔ یا تو ہم انہیں ansible.cfg میں سیٹ کرتے ہیں، یا ہم انہیں ماحولیاتی تغیرات ANSIBLE_GATHERING اور ANSIBLE_FORKS سے گزرتے ہیں۔

Mitogen کے بارے میں
- یہ Mitogen کے بارے میں کہاں ہے؟ - آپ کو پوچھنے کا حق ہے، پیارے قارئین۔ اس مضمون میں کہیں نہیں۔ لیکن اگر آپ واقعی اس کا کوڈ پڑھنے اور یہ جاننے کے لیے تیار ہیں کہ کیوں آپ کی پلے بک مائٹوجن کے ساتھ کریش ہو جاتی ہے، لیکن ونیلا اینسیبل کے ساتھ ٹھیک کام کرتی ہے، یا پھر وہی پلے بک پہلے کیوں ٹھیک کام کر رہی تھی، لیکن اپ ڈیٹ کے بعد عجیب و غریب چیزیں کرنا شروع کر دیں - ٹھیک ہے، Mitogen ممکنہ طور پر آپ کا آلہ ہو سکتا ہے. اسے لاگو کریں، اسے سمجھیں، مضامین لکھیں - میں اسے دلچسپی سے پڑھوں گا۔

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

ان میں سے کچھ ترتیبات پڑھنے کے عمل کے دوران دریافت ہوئیں سورس کوڈ خود وضاحتی نام "ssh.py" کے تحت کنکشن پلگ ان۔ میں اس امید کے ساتھ پڑھنے کے نتائج کا اشتراک کرتا ہوں کہ یہ کسی اور کو ذرائع کو دیکھنے، انہیں پڑھنے، عمل درآمد کی جانچ کرنے، دستاویزات کے ساتھ موازنہ کرنے کی ترغیب دے گا - بہر حال، جلد یا بدیر یہ سب آپ کے مثبت نتائج لائے گا۔ اچھی قسمت!

سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ سائن ان، برائے مہربانی.

آپ اپنے منصوبوں کو تیز کرنے کے لیے درج ذیل میں سے کون سی جوابی ترتیبات استعمال کرتے ہیں؟

  • 69,6٪پائپ لائننگ = سچ 32

  • 34,8٪اجتماع = سمارٹ/واضح 16

  • 52,2٪ssh_args = "-o ControlMaster=auto-o ControlPersist=..."24

  • 17,4٪ٹرانسفر_میتھڈ = پائپڈ 8

  • 63,0٪فورکس = XXX29

  • 6,5٪اس میں سے کوئی نہیں، صرف Mitogen3

  • 8,7٪Mitogen + میں نوٹ کروں گا کہ ان میں سے کون سی ترتیبات 4

46 صارفین نے ووٹ دیا۔ 21 صارف نے پرہیز کیا۔

Ansible کے بارے میں مزید چیزیں چاہتے ہیں؟

  • 78,3٪جی ہاں، بالکل54

  • 21,7٪ہاں، مجھے صرف مزید سخت چیزیں چاہیے!15

  • 0,0٪نہیں، اور یہ کسی چیز کے لیے ضروری نہیں ہے۔

  • 0,0٪نہیں، یہ پیچیدہ ہے!!!0

69 صارفین نے ووٹ دیا۔ 7 صارفین غیر حاضر رہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں