انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

ایسا لگتا ہے کہ Terraform ڈویلپرز AWS انفراسٹرکچر کے ساتھ کام کرنے کے لیے کافی آسان بہترین طریقے پیش کرتے ہیں۔ بس ایک نزاکت ہے۔ وقت گزرنے کے ساتھ، ماحول کی تعداد میں اضافہ ہوتا ہے، ہر ایک کی اپنی خصوصیات ہیں۔ ایپلیکیشن اسٹیک کی تقریباً ایک کاپی پڑوسی علاقے میں ظاہر ہوتی ہے۔ اور Terraform کوڈ کو احتیاط سے کاپی کرنے اور نئے تقاضوں کے مطابق ترمیم کرنے کی ضرورت ہے یا اسے سنو فلیک بنانے کی ضرورت ہے۔

ٹیرافارم کے پیٹرن کے بارے میں میری رپورٹ افراتفری کا مقابلہ کرنے کے لیے اور بڑے اور طویل منصوبوں پر دستی روٹین۔

ویڈیو:

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

میں 40 سال کا ہوں، میں 20 سال سے آئی ٹی میں ہوں۔ میں Ixtens کے لیے 12 سال سے کام کر رہا ہوں۔ ہم ای کامرس سے چلنے والی ترقی میں مصروف ہیں۔ اور میں 5 سالوں سے DevOps پریکٹس کر رہا ہوں۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

میری کہانی ایک ایسی کمپنی میں ایک پروجیکٹ میں میرے تجربے کے بارے میں ہوگی جس کا نام میں نہیں بتاؤں گا، ایک غیر انکشافی معاہدے کے پیچھے چھپا ہوا ہے۔

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

Matvey کا شکریہ، جنہوں نے کل ہمیں بتایا کہ ڈوڈو پیزا میں کیا ہوا۔ یہاں 4 سال پہلے ایسا ہی ہوا تھا۔

ڈویلپرز آئے اور انفراسٹرکچر کوڈ بنانے لگے۔

سب سے واضح وجوہات کیوں اس کی ضرورت تھی مارکیٹ کے لئے وقت تھا۔ یہ یقینی بنانا ضروری تھا کہ رول آؤٹ کے دوران DevOps ٹیم کوئی رکاوٹ نہ ہو۔ اور دوسری چیزوں کے علاوہ، Terraform اور Puppet کو پہلے ہی سطح پر استعمال کیا گیا تھا۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

Terraform HashiCorp کا ایک اوپن سورس پروجیکٹ ہے۔ اور ان لوگوں کے لیے جو یہ بھی نہیں جانتے کہ یہ کیا ہے، اگلی چند سلائیڈز۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

مثال کے طور پر، ہمیں ایک ورچوئل مشین کی ضرورت ہے۔ ہم کئی مطلوبہ پیرامیٹرز کی وضاحت اور اضافہ کریں گے۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

ایک بار جب آپ ہر چیز سے خوش ہو جائیں تو، آپ Terraform سے درخواست دینے کے لیے کہہ سکتے ہیں اور Terraform آپ کے لیے ایک مثال بنائے گا، اور آپ کو اپنے کلاؤڈ میں ایک ورچوئل مشین ملے گی۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

مزید ہمارا پروجیکٹ ترقی کر رہا ہے۔ ہم وہاں کچھ تبدیلیاں شامل کر رہے ہیں۔ ہم مزید مثالیں طلب کرتے ہیں، ہم 53 اندراجات شامل کرتے ہیں۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

اور ہم دہراتے ہیں۔ براہ کرم منصوبہ بنائیں۔ ہم دیکھتے ہیں کہ کیا تبدیلیوں کی منصوبہ بندی کی گئی ہے۔ ہم درخواست دیتے ہیں۔ اور اس طرح ہمارا بنیادی ڈھانچہ ترقی کرتا ہے۔

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

ہمارا انفراسٹرکچر بڑھ رہا ہے۔ ہمارا کوڈ یہ ہے۔ اور اب ہم صرف ایک ورچوئل مشین نہیں بنانا چاہتے، ہم ٹیسٹ کا ماحول چاہتے ہیں۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

Terraform آپ کو ایک ماڈیول جیسی چیز بنانے کی اجازت دیتا ہے، یعنی کسی فولڈر میں اسی چیز کو بیان کریں۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

اور، مثال کے طور پر، ٹیسٹنگ میں، اس ماڈیول کو کال کریں اور وہی چیز حاصل کریں جیسے کہ ہم نے ماڈیول میں ہی Terraform اپلائی کیا ہو۔ جانچ کے لیے یہ کوڈ ہوگا۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

پیداوار کے لیے، ہم وہاں کچھ تبدیلیاں بھیج سکتے ہیں، کیونکہ جانچ میں ہمیں بڑی مثالوں کی ضرورت نہیں ہوتی؛ پیداوار میں، بڑی مثالیں صرف مفید ہوتی ہیں۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

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

وسائل کی ایک وسیع لائبریری کے ساتھ، آپ جانچ اور پیداوار میں تقریباً ایک ہی چیز کو کال کر سکتے ہیں۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

Terraform تمام انحصار کا خیال رکھتا ہے۔ اور یہ ہمیشہ ترتیب میں وسائل تخلیق کرتا ہے تاکہ آپ ایک IP ایڈریس حاصل کر سکیں، مثال کے طور پر، ایک نئی تخلیق کردہ مثال سے، اور یہ IP پتہ روٹ53 ریکارڈ میں حاصل کر سکیں۔

اس کے علاوہ، پلیٹ فارم بہت بڑا ہے. اور ٹیسٹ اسٹیک لانچ کرنا، چاہے ایک گھنٹے کے لیے، چاہے 8 گھنٹے کے لیے، کافی مہنگا کام ہے۔

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

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

اور پھر اور بھی اقدامات تھے جن میں میں نہیں جانا چاہتا۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

اور ایسا ہوا کہ جانچ میں میں ان تبدیلیوں کی جانچ کرنا چاہتا ہوں جو آخر کار پیداوار میں آجائیں گی۔ لیکن حقیقت میں، ایک چیز کا تجربہ کیا گیا تھا، اور پیداوار میں تھوڑا سا مختلف استعمال کیا گیا تھا. اور پیٹرن میں ایک چھوٹا سا وقفہ تھا کہ پیداوار میں تمام تبدیلیوں کا اطلاق آپریشن ٹیم نے کیا تھا۔ اور کبھی کبھی یہ پتہ چلا کہ وہ تبدیلیاں جو جانچ سے پیداوار تک جانے والی تھیں وہ دوسرے ورژن میں رہیں۔

اس کے علاوہ، ایک ایسا مسئلہ تھا کہ ایک نئی سروس شامل کی گئی تھی، جو پہلے سے موجود کچھ سے کچھ مختلف تھی۔ اور موجودہ ماڈیول میں ترمیم کرنے کے بجائے، ہمیں اس کی ایک کاپی بنا کر ضروری تبدیلیاں شامل کرنی پڑیں۔

بنیادی طور پر، Terraform ایک حقیقی زبان نہیں ہے۔ یہ ایک اعلان ہے۔ اگر ہمیں کسی چیز کا اعلان کرنے کی ضرورت ہے، تو ہم اس کا اعلان کرتے ہیں۔ اور یہ سب کام کرتا ہے۔

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

اور اس طرح کے برف کے تودے کے نمودار ہونے کے بعد، تمام ٹیرافارم کوڈ جو ہم نے برف کے ایک بڑے، بڑے ڈھیر میں تبدیل کر دیا تھا۔

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

Symlinks کہاں ناکام ہوتے ہیں؟ جیسا کہ میں نے کہا، Terraform میں ریاستی فائلیں ہیں۔ اور وہ بہت، بہت اچھے ہیں. لیکن بات یہ ہے کہ Terraform بیک اینڈ کو پہلی جگہ پر شروع کرتا ہے۔ اور وہ ان پیرامیٹرز میں کوئی متغیر استعمال نہیں کر سکتا؛ انہیں ہمیشہ متن میں لکھا جانا چاہیے۔

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

ہم آگے کیا کر سکتے ہیں؟ Terraform کے ساتھ کام کرنے سے پہلے، آپ کو اسے شروع کرنے کی ضرورت ہے۔ شروع کرنے پر، Terraform تمام پلگ ان ڈاؤن لوڈ کرتا ہے۔ کسی وقت وہ یک سنگی سے زیادہ مائیکرو سروس فن تعمیر میں تقسیم ہو گئے۔ اور آپ کو ہمیشہ Terraform init کرنے کی ضرورت ہے تاکہ یہ تمام ماڈیولز، تمام پلگ انز کو کھینچ لے۔

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

میں ڈیٹا کہاں سے حاصل کر سکتا ہوں؟ JSON فائل۔ Terraform آپ کو نہ صرف hcl (HashiCorp Configuration Language) بلکہ JSON میں بھی انفراسٹرکچر لکھنے کی اجازت دیتا ہے۔

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

ٹیرافارم کے لیے بالٹی رکھنا کیوں ضروری ہے؟ کیونکہ ریموٹ اسٹیٹ فائلوں جیسی چیز ہے۔ یعنی، جب میں کچھ وسائل جمع کرتا ہوں، ایمیزون کو بتانے کے لیے: "براہ کرم مثال بڑھائیں،" مجھے بہت سارے مطلوبہ پیرامیٹرز بتانے کی ضرورت ہے۔

اور یہ شناخت کنندگان کسی دوسرے فولڈر میں محفوظ ہیں۔ اور میں جا کر کہہ سکتا ہوں: "Terraform، براہ کرم اسی وسائل کی اسٹیٹ فائل کی طرف بھاگیں اور مجھے یہ شناخت کنندگان حاصل کریں۔" اور اس طرح مختلف خطوں یا ماحول کے درمیان ایک خاص اتحاد ظاہر ہوتا ہے۔

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

اب ٹیسٹنگ کے بارے میں تھوڑا سا۔ آپ Terraform میں کیا ٹیسٹ کر سکتے ہیں؟ شاید بہت کچھ ممکن ہے لیکن میں ان 4 چیزوں کے بارے میں بات کروں گا۔

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

اگلا ایک Terraform validate ہے۔ یہ نحو کو چیک کرنے کے علاوہ کچھ زیادہ کرتا ہے - ala، چاہے تمام قوسین جوڑے ہوئے ہوں۔ یہاں کیا ضروری ہے؟ ہمارا انفراسٹرکچر بہت وسیع ہے۔ اس میں بہت سے مختلف ڈیڈیز ہیں۔ اور ہر ایک میں آپ کو Terraform validate چلانے کی ضرورت ہے۔

اس کے مطابق، جانچ کو تیز کرنے کے لیے، ہم متوازی استعمال کرتے ہوئے متوازی طور پر متعدد عمل چلاتے ہیں۔

متوازی بہت اچھی چیز ہے، اسے استعمال کریں۔

لیکن جب بھی Terraform شروع کرتا ہے، یہ HashiCorp کے پاس جاتا ہے اور پوچھتا ہے، "جدید پلگ ان ورژن کیا ہیں؟ اور جو پلگ ان میرے پاس کیشے میں ہے - کیا یہ صحیح ہے یا غلط؟" اور یہ ہر قدم پر سست ہوتا گیا۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

اگر آپ Terraform کو بتاتے ہیں کہ پلگ ان کہاں ہیں، تو Terraform کہے گا: "ٹھیک ہے، یہ شاید تازہ ترین چیز ہے جو وہاں موجود ہے۔ میں کہیں نہیں جاؤں گا، میں فوری طور پر آپ کے Terraform کوڈ کی توثیق کرنا شروع کر دوں گا۔"

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

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

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

ٹیرافارم کے منصوبے درخواست پر بنائے جائیں۔ کم از کم ہم یہی کرتے ہیں۔

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

ایک منصوبہ ایک بہت مہنگی چیز ہے۔ اس میں وقت لگتا ہے کیونکہ ٹیرافارم ایمیزون پر جاتا ہے اور پوچھتا ہے، "کیا یہ مثال اب بھی موجود ہے؟ کیا اس آٹو اسکیل میں بالکل ایک جیسے پیرامیٹرز ہیں؟" اور اس کو تیز کرنے کے لیے، آپ پیرامیٹر استعمال کر سکتے ہیں جیسے کہ refresh=false۔ اس کا مطلب ہے کہ Terraform S3 سے اسٹیٹ ڈاؤن لوڈ کرے گا۔ اور یہ یقین کرے گا کہ ریاست ایمیزون میں موجود چیزوں سے بالکل مماثل ہوگی۔

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

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

اگلی چیز جس کے بارے میں میں بات کرنا چاہوں گا وہ ہے صارف کے ڈیٹا کی جانچ۔

صارف کا ڈیٹا کیا ہے؟ ایمیزون میں، جب ہم ایک مثال بناتے ہیں، تو ہم مثال کے ساتھ ایک مخصوص خط بھیج سکتے ہیں - میٹا ڈیٹا۔ جب مثال شروع ہوتی ہے، عام طور پر کلاؤڈ init ان مثالوں پر ہمیشہ موجود ہوتا ہے۔ Cloud init اس خط کو پڑھتا ہے اور کہتا ہے: "ٹھیک ہے، آج میں لوڈ بیلنس کرنے والا ہوں۔" اور ان عہدوں کے مطابق وہ کچھ اعمال انجام دیتا ہے۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

دوسرا آپشن صارف کا ڈیٹا بنانے کے لیے ماڈیول استعمال کرنا ہے۔ آپ اس ماڈیول کو لاگو کریں گے۔ آپ کو ڈسک پر فائل موصول ہوتی ہے۔ اس کا موازنہ ایک حوالہ سے کریں۔ اور اس طرح، اگر کوئی لڑکا صارف کے ڈیٹا کو تھوڑا درست کرنے کا فیصلہ کرتا ہے، تو آپ کے ٹیسٹ کہیں گے: "ٹھیک ہے، یہاں اور وہاں کچھ تبدیلیاں ہیں - یہ عام بات ہے۔"

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

اگلی چیز جس کے بارے میں میں بات کرنا چاہوں گا وہ ہے Automate Terraform apply۔

بلاشبہ، خودکار موڈ میں Terraform کا اطلاق کرنا کافی خوفناک ہے، کیونکہ کون جانتا ہے کہ وہاں کیا تبدیلیاں آئی ہیں اور وہ زندہ انفراسٹرکچر کے لیے کتنی تباہ کن ثابت ہو سکتی ہیں۔

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

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

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

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

اور پڑھنا بہت مشکل ہے۔ اس کا جائزہ لینا بہت مشکل ہے۔ اور اکثر یہ پتہ چلتا ہے کہ کچھ پیرامیٹرز کا جائزہ لیا جاتا ہے اور وہ بالکل وہی نہیں ہیں جس کی ضرورت ہے۔ اور اس کو بعد میں ٹھیک کرنے میں وقت اور پیسہ خرچ ہوتا ہے۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

اس ماڈیول میں آپ مقامی لوگوں کے طور پر Terraform میں ایسی حالیہ خصوصیت کا استعمال کرتے ہوئے کچھ حساب کتاب کر سکتے ہیں۔ اور پھر، ایک آؤٹ پٹ کے ساتھ، کچھ پیچیدہ پیرامیٹر دیں، جس میں ارے ہیش وغیرہ شامل ہو سکتے ہیں۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

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

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

خلاصہ کرنے کے لئے:

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

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

  • ناقابل تغیر انفراسٹرکچر۔ AMI ڈیلیوری شیڈول کے مطابق۔
  • روٹ53 کے لیے ڈھانچہ جب آپ کے پاس بہت زیادہ اندراجات ہوں اور آپ چاہتے ہیں کہ وہ مستقل ترتیب میں ہوں۔
  • API کی شرح کی حدود سے لڑنا۔ یہ تب ہوتا ہے جب ایمیزون کہتا ہے، "یہ بات ہے، میں مزید درخواستیں قبول نہیں کر سکتا، براہ کرم انتظار کریں۔" اور دفتر کا آدھا حصہ اس وقت تک انتظار کر رہا ہے جب تک وہ اپنا انفراسٹرکچر شروع نہیں کر سکتا۔
  • جگہ کی مثالیں ایمیزون کوئی سستا واقعہ نہیں ہے اور اسپاٹس آپ کو کافی بچت کرنے کی اجازت دیتے ہیں۔ اور وہاں آپ اس کے بارے میں پوری رپورٹ بتا سکتے ہیں۔
  • سیکیورٹی اور IAM کے کردار۔
  • کھوئے ہوئے وسائل کی تلاش میں، جب آپ کے پاس ایمازون میں نامعلوم اصل کی مثالیں ہیں، تو وہ پیسے کھاتے ہیں۔ یہاں تک کہ اگر مثالوں کی لاگت $100-150 فی مہینہ ہے، یہ ہر سال $1 سے زیادہ ہے۔ ایسے وسائل تلاش کرنا ایک منافع بخش کاروبار ہے۔
  • اور محفوظ مثالیں۔

انتشار اور دستی معمولات کا مقابلہ کرنے کے لیے Terraform میں پیٹرن۔ میکسم کوسٹریکن (ایکسٹینس)

یہ سب میرے لیے ہے۔ Terraform بہت ٹھنڈا ہے، آپ اسے استعمال کریں۔ شکریہ!

آپ کے سوالات

رپورٹ کے لیے شکریہ! آپ کی اسٹیٹ فائل S3 میں ہے، لیکن آپ اس مسئلے کو کیسے حل کریں گے کہ کئی لوگ اس اسٹیٹ فائل کو لے کر اسے پھیلانے کی کوشش کر سکتے ہیں؟

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

کیا آپ اوپن سورس یا انٹرپرائز استعمال کر رہے ہیں؟

کوئی انٹرپرائز نہیں، یعنی ہر وہ چیز جسے آپ جا سکتے ہیں اور مفت میں ڈاؤن لوڈ کر سکتے ہیں۔

میرا نام Stanislav ہے۔ میں ایک چھوٹا سا اضافہ کرنا چاہتا تھا۔ آپ نے ایک ایمیزون خصوصیت کے بارے میں بات کی ہے جو آپ کو ایک مثال کو ناقابل تلافی بنانے کی اجازت دیتی ہے۔ یہ خود Terraform میں بھی ہے؛ لائف سیکنڈ بلاک میں آپ تبدیلیوں پر پابندی یا تباہی پر پابندی بتا سکتے ہیں۔

وقت محدود تھا۔ اچھا نکتہ.

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

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

مقامی اقدار کے بارے میں، آئیے کمرے سے باہر گفتگو جاری رکھیں۔

ہیلو! رپورٹ کے لیے شکریہ! بہت معلوماتی. آپ نے کہا کہ بنیادی ڈھانچے کو بیان کرنے کے لیے آپ کے پاس ایک ہی قسم کا کوڈ ہے۔ کیا آپ نے اس کوڈ کو بنانے پر غور کیا ہے؟

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

کیا آپ نے jsonnet کے بارے میں کچھ سنا ہے؟

نہیں

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

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

صرف دیکھو. شکریہ!

میرا نام میکسم ہے، میں سبر بینک سے ہوں۔ آپ نے اس بارے میں تھوڑی بات کی کہ آپ کس طرح ٹیرافارم کو پروگرامنگ زبان کے برابر لانے کی کوشش کر رہے تھے۔ کیا جوابی استعمال کرنا آسان نہیں ہے؟

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

کیا آپ کے پاس صرف ایمیزون ہے؟

ایسا نہیں ہے کہ ہمارے پاس صرف ایمیزون ہے۔ ہمارے پاس تقریباً صرف ایمیزون ہے۔ لیکن اہم خصوصیت یہ ہے کہ Terraform یاد رکھتا ہے۔ جواب میں، اگر آپ کہتے ہیں: "مجھے 5 مثالیں دیں،" تو یہ بڑھ جائے گا، اور پھر آپ کہتے ہیں: "اور اب مجھے 3 کی ضرورت ہے۔" اور ٹیرافارم کہے گا: "ٹھیک ہے، میں 2 کو مار ڈالوں گا،" اور جوابی کہے گا: "ٹھیک ہے، یہ تمہارے لیے 3 ہیں۔" کل 8۔

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

رات کے کھانے کے لیے ایک اچھا چمچ۔ یعنی، اگر آپ کو کسی حل کی ضرورت ہے، تو کبھی کبھی آپ جو غیر مستحکم ہے، وغیرہ کو روک دیتے ہیں، لیکن یہ کام کرتا ہے اور اس سے ہماری مدد ہوئی۔

سوال یہ ہے۔ آپ ریموٹ بیک اینڈ استعمال کرتے ہیں، آپ S3 استعمال کرتے ہیں۔ آپ آفیشل بیک اینڈ کیوں نہیں استعمال کرتے؟

سرکاری؟

ٹیرافارم کلاؤڈ۔

وہ کب ظاہر ہوا؟

تقریباً 4 مہینے پہلے۔

اگر یہ 4 سال پہلے ظاہر ہوتا تو شاید میں آپ کے سوال کا جواب دیتا۔

پہلے سے ہی ایک بلٹ ان فنکشن اور لاک موجود ہے، اور آپ اسٹیٹ فائل کو اسٹور کر سکتے ہیں۔ اسے آزمائیں. لیکن میں نے اس کا تجربہ بھی نہیں کیا ہے۔

ہم ایک بڑی ٹرین میں سفر کر رہے ہیں جو تیز رفتاری سے چل رہی ہے۔ اور آپ صرف چند کاریں لے کر انہیں پھینک نہیں سکتے۔

تم نے برف کے تودے کی بات کی، شاخ کیوں نہیں استعمال کی؟ اس طرح کام کیوں نہیں ہوا؟

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

تو کیا یہ کام نہیں کرتا؟

یہ بالکل کام نہیں کرتا۔

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

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

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

یعنی ابھی تک حل نہیں ہوا؟

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

ہیلو! رپورٹ کے لیے شکریہ! میں واضح کرنا چاہوں گا۔ پردے کے پیچھے ایک بڑا ڈھیر تھا جس کے لیے میں آیا تھا۔ کٹھ پتلی اور کردار کی تقسیم کیسے مربوط ہیں؟

صارف کا ڈیٹا۔

یعنی آپ نے فائل کو تھوک دیا اور کسی طرح اس پر عمل کیا؟

صارف کا ڈیٹا ایک نوٹ ہے، یعنی جب ہم تصویر کا کلون بناتے ہیں، ڈیمن وہاں سے اٹھتا ہے اور یہ جاننے کی کوشش کرتا ہے کہ وہ کون ہے، اس نوٹ کو پڑھتا ہے کہ وہ لوڈ بیلنس کرنے والا ہے۔

یعنی کیا یہ کسی قسم کا الگ عمل ہے جو دیا جاتا ہے؟

ہم نے اسے ایجاد نہیں کیا۔ ہم اسے استعمال کرتے ہیں۔

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

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

پتہ چلا کہ اس کا واحد حل ٹیسٹ کرنا ہے؟

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

میرا نام تیمور ہے۔ یہ بہت اچھا ہے کہ ٹیرافارم کو مناسب طریقے سے منظم کرنے کے بارے میں رپورٹس موجود ہیں۔

میں نے شروع بھی نہیں کیا۔

مجھے لگتا ہے کہ شاید اگلی کانفرنس میں ہو گی۔ میرا ایک سادہ سا سوال ہے۔ آپ tfvars استعمال کرنے کے بجائے ایک الگ ماڈیول میں ویلیو کو ہارڈ کوڈنگ کیوں کر رہے ہیں، یعنی قدروں والا ماڈیول tfvars سے بہتر کیوں ہے؟

یعنی، کیا مجھے یہاں لکھنا چاہیے (سلائیڈ: Production/environment/settings.tf): domain = متغیر، ڈومین vpcnetwork، متغیر vpcnetwork اور stvars - کیا مجھے وہی چیز مل سکتی ہے؟

بالکل وہی جو ہم کرتے ہیں۔ مثال کے طور پر ہم سیٹنگ سورس ماڈیول کا حوالہ دیتے ہیں۔

بنیادی طور پر، یہ ایسے tfvars ہے. ٹیسٹنگ ماحول میں Tfvars بہت آسان ہے۔ میرے پاس بڑی مثالوں کے لیے tfvars ہیں، چھوٹے کے لیے۔ اور میں نے ایک فائل فولڈر میں پھینک دی۔ اور مجھے وہ مل گیا جو میں چاہتا تھا۔ جب ہم بنیادی ڈھانچے کو کاٹ رہے ہیں، تو ہم چاہتے ہیں کہ ہر چیز کو دیکھنا اور فوری طور پر سمجھنا ممکن ہو۔ اور اس طرح یہ پتہ چلتا ہے کہ آپ کو یہاں دیکھنے کی ضرورت ہے، پھر tfvars کو دیکھیں۔

کیا یہ ممکن ہے کہ سب کچھ ایک جگہ ہو؟

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

ہیلو! کیا آپ کو ایسے حالات کا سامنا کرنا پڑا ہے جہاں کلاؤڈ فراہم کنندہ آپ کی بنائی ہوئی ٹیرافارم میں مداخلت کرتا ہے؟ ہم کہتے ہیں کہ ہم میٹا ڈیٹا میں ترمیم کرتے ہیں۔ ssh کیز ہیں۔ اور گوگل اپنا میٹا ڈیٹا اور اس کی چابیاں مسلسل وہاں رکھتا ہے۔ اور Terraform ہمیشہ لکھتا ہے کہ اس میں تبدیلیاں آتی ہیں۔ ہر دوڑ کے بعد، یہاں تک کہ اگر کچھ نہیں بدلتا، وہ ہمیشہ کہتا ہے کہ اب وہ اس فیلڈ کو اپ ڈیٹ کرے گا۔

چابیاں کے ساتھ، لیکن ہاں، بنیادی ڈھانچے کا کچھ حصہ اس چیز سے متاثر ہوتا ہے، یعنی Terraform کچھ بھی تبدیل نہیں کر سکتا۔ ہم اپنے ہاتھوں سے بھی کچھ نہیں بدل سکتے۔ ہم ابھی اس کے ساتھ رہیں گے۔

یعنی، آپ کو اس طرح کا سامنا کرنا پڑا ہے، لیکن کچھ نہیں آیا، وہ یہ کیسے کرتا ہے اور خود کرتا ہے؟

بدقسمتی سے ہاں.

ہیلو! میرا نام Starkov Stanislav ہے۔ میل آر یو گروپ۔ آپ ... پر ٹیگ بنانے کا مسئلہ کیسے حل کرتے ہیں، آپ اسے اندر کیسے منتقل کرتے ہیں؟ جیسا کہ میں اسے سمجھتا ہوں، یوزر - ڈیٹا کے ذریعے میزبان کا نام بتانے کے لیے، Puppet آن سیٹ کریں؟ اور سوال کا دوسرا حصہ۔ آپ ایس جی میں اس مسئلے کو کیسے حل کرتے ہیں، یعنی جب آپ ایس جی تیار کرتے ہیں، اسی قسم کی سینکڑوں مثالیں، ان کا صحیح نام کیا ہے؟

وہ مثالیں جو ہمارے لیے بہت اہم ہیں، ہم ان کا نام خوبصورتی سے رکھتے ہیں۔ جن کی ضرورت نہیں ہے، ایک نوٹ ہے کہ یہ ایک آٹو اسکیل گروپ ہے۔ اور نظریہ میں آپ اسے کیل کر کے ایک نیا حاصل کر سکتے ہیں۔

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

سوال اور کیا تھا؟

جب ایس جی سینکڑوں مثالیں تخلیق کرتا ہے، تو کیا انہیں کسی نہ کسی طرح ممتاز کرنے کی ضرورت ہے؟

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

یعنی، کیا آپ خاص طور پر IP پر توجہ مرکوز کر رہے ہیں، اور میزبان کے نام پر نہیں؟

میزبان کے نام سے نیویگیٹ کرنا ناممکن ہے، یعنی ان میں سے بہت سارے ہیں۔ مثال کے طور پر شناخت کرنے والے ہیں - AE وغیرہ۔ آپ اسے کہیں تلاش کر سکتے ہیں، آپ اسے تلاش میں ڈال سکتے ہیں۔

ہیلو! میں نے محسوس کیا کہ ٹیرافارم ایک اچھی چیز ہے، جو بادلوں کے لیے تیار کی گئی ہے۔

نہ صرف یہ کہ

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

جواب دینے والا کچھ اور کے بارے میں تھوڑا ہے۔ یعنی جب مثال شروع ہو جائے تو جوابی کام پہلے سے ہی کام کرتا ہے۔ اور مثال شروع ہونے سے پہلے Terraform کام کرتا ہے۔ ننگی دھات پر سوئچنگ - نہیں.

ابھی نہیں، لیکن کاروبار آئے گا اور کہے گا: "چلو۔"

دوسرے کلاؤڈ پر سوئچ کرنا - ہاں، لیکن یہاں ایک قدرے مختلف چال ہے۔ آپ کو ٹیرافارم کوڈ اس طرح لکھنا ہوگا کہ آپ کم محنت کے ساتھ کسی دوسرے کلاؤڈ پر جاسکیں۔

ابتدائی طور پر، یہ کام طے کیا گیا تھا کہ ہمارا پورا انفراسٹرکچر اجناسٹک تھا، یعنی کوئی بھی بادل موزوں ہونا چاہیے، لیکن کسی وقت کاروبار چھوڑ دیا اور کہا: "ٹھیک ہے، اگلے N سالوں میں ہم کہیں نہیں جائیں گے، ہم خدمات استعمال کر سکتے ہیں۔ ایمیزون سے"

ٹیرافارم آپ کو فرنٹ اینڈ جابز بنانے، پیجر ڈیوٹی، ڈیٹا ڈاک وغیرہ کو ترتیب دینے کی اجازت دیتا ہے۔ وہ عملی طور پر پوری دنیا کو کنٹرول کر سکتا ہے۔

رپورٹ کے لیے شکریہ! میں اب 4 سالوں سے ٹیرافارم بھی استعمال کر رہا ہوں۔ ٹیرافارم، انفراسٹرکچر، اعلانیہ وضاحت میں ہموار منتقلی کے مرحلے پر، ہمیں ایک ایسی صورتحال کا سامنا کرنا پڑا جہاں کوئی ہاتھ سے کچھ کر رہا تھا، اور آپ کوئی منصوبہ بنانے کی کوشش کر رہے تھے۔ اور مجھے وہاں کسی قسم کی غلطی ہو گئی۔ آپ ایسے مسائل سے کیسے نمٹتے ہیں؟ آپ کھوئے ہوئے وسائل کو کیسے تلاش کرتے ہیں جو درج کیے گئے ہیں؟

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

اگر کوئی خرابی ہے تو کیا آپ رول بیک کرتے ہیں؟ کیا آپ نے ایسا کرنے کی کوشش کی ہے؟

نہیں، یہ اس وقت ایک شخص کا فیصلہ ہے جب وہ کوئی مسئلہ دیکھتا ہے۔

ماخذ: www.habr.com