مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

گھڻا ماڻھو ڄاڻن ٿا ۽ پنھنجي روزاني ڪم ۾ Terraform استعمال ڪن ٿا، پر ان لاءِ بھترين طريقا اڃا ٺھي نہ سگھيا آھن. هر ٽيم کي پنهنجي پنهنجي طريقن ۽ طريقن کي ايجاد ڪرڻو پوندو.

توھان جو انفراسٹرڪچر تقريباً سادو شروع ٿئي ٿو: ڪجھ وسيلا + ڪجھ ڊولپر. وقت سان گڏ، اهو سڀني قسمن جي هدايتن ۾ وڌندو آهي. ڇا توھان وسيلن کي گروپ ڪرڻ جا طريقا ڳوليندا آھيو Terraform ماڊلز ۾، ڪوڊ منظم ڪريو فولڊر ۾، ۽ ٻيو ڇا ٿي سگھي ٿو غلط ٿي سگھي ٿو؟ (مشهور آخري لفظ)

وقت گذري ٿو ۽ توهان محسوس ڪيو ته توهان جو انفراسٽرڪچر توهان جو نئون پالتو آهي، پر ڇو؟ توهان انفراسٽرڪچر ۾ ناقابل بيان تبديلين جي باري ۾ پريشان آهيو، توهان انفراسٽرڪچر ۽ ڪوڊ کي ڇڪڻ کان ڊڄو ٿا - نتيجي طور، توهان نئين ڪارڪردگي ۾ دير ڪريو يا معيار کي گهٽايو ...

Github تي AWS لاءِ Terraform ڪميونٽي ماڊلز جي مجموعي کي منظم ڪرڻ جي ٽن سالن کان پوءِ ۽ پيداوار ۾ Terraform جي ڊگهي مدي تائين سار سنڀال، Anton Babenko پنهنجو تجربو شيئر ڪرڻ لاءِ تيار آهي: TF ماڊلز کي ڪيئن لکجي ته جيئن مستقبل ۾ نقصان نه ٿئي.

ڳالهين جي آخر تائين، شرڪت ڪندڙ Terraform ۾ وسيلن جي انتظام جي اصولن، Terraform ۾ ماڊلز سان لاڳاپيل بهترين طريقا، ۽ انفراسٽرڪچر مينيجمينٽ سان لاڳاپيل ڪجهه مسلسل انضمام جي اصولن کان وڌيڪ واقف ٿيندا.

اعلان: مان نوٽ ڪريان ٿو ته اها رپورٽ نومبر 2018 جي ​​آهي- 2 سال گذري چڪا آهن. رپورٽ ۾ بحث ڪيل Terraform 0.11 جو نسخو هاڻي سپورٽ ناهي. گذريل 2 سالن دوران، 2 نوان رليز جاري ڪيا ويا آهن، جن ۾ ڪافي جدت، سڌارا ۽ تبديليون شامل آهن. مھرباني ڪري ھن تي ڌيان ڏيو ۽ دستاويز چيڪ ڪريو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

حوالا:

منهنجو نالو Anton Babenko آهي. توھان مان ڪجھ شايد اھو ڪوڊ استعمال ڪيو آھي جيڪو مون لکيو آھي. مان ھاڻي ھن بابت اڳي کان وڌيڪ اعتماد سان ڳالھائيندس، ڇو ته مون وٽ انگ اکر تائين پهچ آھي.

مان Terraform تي ڪم ڪريان ٿو ۽ 2015 کان وٺي Terraform ۽ Amazon سان لاڳاپيل ڪيترن ئي اوپن سورس پروجيڪٽس ۾ هڪ سرگرم حصو وٺندڙ ۽ مددگار رهيو آهيان.

ان کان پوء مون ڪافي ڪوڊ لکيو آهي ان کي دلچسپ انداز ۾ رکڻ لاء. ۽ مان توھان کي ھاڻي ھن بابت ٻڌائڻ جي ڪوشش ڪندس.

مان Terraform سان ڪم ڪرڻ جي پيچيدگين ۽ خاصيتن بابت ڳالهائيندس. پر اهو واقعي HighLoad جو موضوع ناهي. ۽ هاڻي توهان سمجھندا سين ڇو.

وقت سان گڏ، مون لکڻ شروع ڪيو Terraform ماڊلز. صارفين سوال لکيا، مون انهن کي ٻيهر لکيو. ان کان پوء مون ڪوڊ کي فارميٽ ڪرڻ لاء مختلف افاديت لکيا اڳ-ڪمٽ ٿلهو، وغيره.

اتي ڪيترائي دلچسپ منصوبا هئا. مون کي ڪوڊ جنريشن پسند آهي ڇاڪاڻ ته مون کي پسند آهي ته ڪمپيوٽر مون لاءِ ۽ پروگرامر لاءِ وڌيڪ کان وڌيڪ ڪم ڪري، تنهن ڪري مان هن وقت بصري ڊاگرامس مان ٽيرافارم ڪوڊ جنريٽر تي ڪم ڪري رهيو آهيان. شايد توهان مان ڪجهه انهن کي ڏٺو آهي. اهي تير سان خوبصورت خانا آهن. ۽ مان سمجهان ٿو ته اهو تمام سٺو آهي جيڪڏهن توهان ڪلڪ ڪري سگهو ٿا ”ايڪسپورٽ“ بٽڻ ۽ اهو سڀ ڪجهه حاصل ڪريو ڪوڊ طور.

مان يوڪرين مان آهيان. مان ڪيترن سالن کان ناروي ۾ رهندو آهيان.

پڻ، هن رپورٽ لاءِ معلومات گڏ ڪئي وئي انهن ماڻهن کان جيڪي منهنجو نالو ڄاڻن ٿا ۽ مون کي سماجي نيٽ ورڪن تي ڳولين ٿا. مون کي لڳ ڀڳ هميشه هڪ ئي nickname آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

https://github.com/terraform-aws-modules
https://registry.terraform.io/namespaces/terraform-aws-modules

جيئن مون ذڪر ڪيو آهي، مان Terraform AWS ماڊلز جو مکيه سنڀاليندڙ آهيان، جيڪو GitHub تي هڪ وڏو ذخيرو آهي جتي اسان سڀ کان عام ڪمن لاءِ ماڊلز جي ميزباني ڪندا آهيون: VPC، Autoscaling، RDS.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ جيڪو توهان ٻڌو آهي اهو سڀ کان بنيادي آهي. جيڪڏهن توهان کي شڪ آهي ته توهان سمجهي رهيا آهيو ته Terraform ڇا آهي، پوء اهو بهتر آهي ته توهان جو وقت ڪنهن ٻئي هنڌ گذاريو. هتي ٽيڪنيڪل اصطلاحن جي تمام گهڻي کوٽ هوندي. ۽ مون رپورٽ جي سطح کي بلند ترين قرار ڏيڻ ۾ ڪو به شڪ نه ڪيو. ان جو مطلب اهو آهي ته آئون تمام ممڪن اصطلاح استعمال ڪندي ڳالهائي سگهان ٿو بغير ڪنهن وضاحت جي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

Terraform 2014 ۾ هڪ افاديت جي طور تي ظاهر ٿيو جنهن توهان کي ڪوڊ جي طور تي انفراسٽرڪچر لکڻ، منصوبابندي ڪرڻ ۽ منظم ڪرڻ جي اجازت ڏني. هتي اهم تصور آهي "بنيادي ڍانچي جيئن ڪوڊ."

سڀ دستاويز، جيئن مون چيو، ۾ لکيل آهي terraform.io. مون کي اميد آهي ته گهڻا ماڻهو هن سائيٽ بابت ڄاڻن ٿا ۽ دستاويز پڙهيا آهن. جيڪڏهن ائين آهي، ته پوء توهان صحيح جاء تي آهيو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ھي اھو آھي جيڪو ھڪڙي باقاعده Terraform ترتيب واري فائل وانگر ڏسڻ ۾ اچي ٿو، جتي اسان پھريون ڪجھ متغير بيان ڪندا آھيون.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

انهي صورت ۾ اسان "aws_region" جي وضاحت ڪريون ٿا.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

پوءِ اسان بيان ڪريون ٿا ته اسان ڪهڙا وسيلا ٺاهڻ چاهيون ٿا.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اسان ڪجهه حڪم هلائيندا آهيون، خاص طور تي "terraform init" انحصار ۽ مهيا ڪندڙن کي لوڊ ڪرڻ لاءِ.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ اسان هلون ٿا “terraform apply” حڪم کي چيڪ ڪرڻ لاءِ ته ڇا مخصوص تشڪيل اسان جي ٺاهيل وسيلن سان ملي ٿي. جيئن ته اسان اڳ ۾ ڪجھ به نه پيدا ڪيو آهي، Terraform اسان کي انهن وسيلن کي ٺاهڻ لاء اشارو ڪري ٿو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اسان ان ڳالهه جي تصديق ڪريون ٿا. اهڙيءَ طرح اسان هڪ بالٽ ٺاهيندا آهيون جنهن کي seasnail سڏيو ويندو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اتي پڻ ڪيترائي ساڳيا افاديت آھن. توھان مان گھڻا جيڪي Amazon استعمال ڪندا آھن AWS CloudFormation يا Google Cloud Deployment Manager يا Azure Resource Manager ڄاڻندا آھن. انهن مان هر هڪ کي پنهنجي ڪنهن نه ڪنهن قسم جي عمل ۾ آهي وسيلن کي منظم ڪرڻ لاءِ انهن مان هر هڪ عوامي ڪلائوڊ فراهم ڪندڙ. Terraform خاص طور تي ڪارائتو آهي ڇو ته اهو توهان کي 100 کان وڌيڪ مهيا ڪندڙن کي منظم ڪرڻ جي اجازت ڏئي ٿو. (وڌيڪ تفصيل هتي)

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اهي مقصد جيڪي Terraform شروع کان وٺي تعاقب ڪيا آهن:

  • Terraform وسيلن جو هڪ واحد منظر مهيا ڪري ٿو.
  • توهان کي سڀني جديد پليٽ فارمن کي سپورٽ ڪرڻ جي اجازت ڏئي ٿي.
  • ۽ Terraform کي شروعات کان ئي ھڪ افاديت جي طور تي ٺاھيو ويو آھي جيڪو توھان کي محفوظ ۽ اڳڪٿي سان انفراسٽرڪچر تبديل ڪرڻ جي اجازت ڏئي ٿو.

2014 ۾، لفظ "پيش گذار" هن حوالي سان تمام غير معمولي محسوس ڪيو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

Terraform هڪ آفاقي افاديت آهي. جيڪڏهن توهان وٽ هڪ API آهي، ته توهان بلڪل ڪنٽرول ڪري سگهو ٿا:

  • توھان استعمال ڪري سگھوٿا 120 کان وڌيڪ مهيا ڪندڙ جيڪي توھان چاھيو ان کي منظم ڪرڻ لاءِ.
  • مثال طور، توھان استعمال ڪري سگھو ٿا Terraform GitHub repositories تائين رسائي بيان ڪرڻ لاءِ.
  • توهان به ٺاهي سگهو ٿا ۽ جيرا ۾ ڪيڙا بند ڪريو.
  • توھان منظم ڪري سگھو ٿا نيو ريلڪ ميٽرڪ.
  • جيڪڏهن توهان واقعي چاهيو ٿا ته توهان ڊراپ باڪس ۾ فائلون به ٺاهي سگهو ٿا.

اهو سڀ حاصل ڪيو ويو آهي استعمال ڪندي Terraform فراهم ڪندڙ، جن وٽ هڪ کليل API آهي جنهن کي Go ۾ بيان ڪري سگهجي ٿو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اچو ته چئو ته اسان Terraform استعمال ڪرڻ شروع ڪيو، سائيٽ تي ڪجهه دستاويز پڙهيا، ڪجهه وڊيو ڏٺا، ۽ main.tf لکڻ شروع ڪيو، جيئن مون اڳئين سلائڊن تي ڏيکاريو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ هر شي عظيم آهي، توهان وٽ هڪ فائل آهي جيڪا VPC ٺاهي ٿي.

جيڪڏهن توهان هڪ VPC ٺاهڻ چاهيو ٿا، ته توهان تقريبن انهن 12 لائينن کي بيان ڪريو. بيان ڪريو جنهن علائقي ۾ توهان ٺاهڻ چاهيو ٿا، IP پتي جو ڪهڙو cidr_block استعمال ڪرڻ. اهو ئي سڀ ڪجهه آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

قدرتي طور، منصوبي کي آهستي آهستي وڌندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ توهان اتي نئين شين جو هڪ گروپ شامل ڪيو ويندو: وسيلا، ڊيٽا جا ذريعا، توهان نون فراهم ڪندڙن سان ضم ٿي ويندا، اوچتو توهان استعمال ڪرڻ چاهيندا Terraform صارفين کي منظم ڪرڻ لاءِ توهان جي GitHub اڪائونٽ وغيره. توهان شايد مختلف استعمال ڪرڻ چاهيندا. DNS فراهم ڪندڙ، هر شي کي پار ڪريو. Terraform هن کي آسان بڻائي ٿو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اچو ته هيٺيان مثال ڏسو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

توهان آهستي آهستي شامل ڪيو internet_gateway ڇاڪاڻ ته توهان چاهيو ٿا ته توهان جي VPC جا وسيلا انٽرنيٽ جي رسائي حاصل ڪرڻ لاءِ. هي هڪ سٺو خيال آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

نتيجو هي آهي main.tf:

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هي main.tf جو مٿيون حصو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هي main.tf جو هيٺيون حصو آهي.

پوء توھان شامل ڪريو subnet. جيستائين توھان شامل ڪرڻ چاھيو ٿا NAT گيٽ ويز، رستا، روئنگ ٽيبل ۽ ٻين سبنيٽس جو ھڪڙو گروپ، توھان وٽ 38 لائينون نه آھن، پر لڳ ڀڳ 200-300 لائينون.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اهو آهي، توهان جي main.tf فائل آهستي آهستي وڌي رهي آهي. ۽ اڪثر ڪري ماڻهو هڪ فائل ۾ سڀڪنھن شيء کي وجهي. main.tf ۾ 10-20 Kb ظاهر ٿئي ٿو. تصور ڪريو ته 10-20 Kb متن مواد آهي. ۽ هر شيء سان ڳنڍيل آهي. هن سان گڏ ڪم ڪرڻ لاء آهستي آهستي ڏکيو ٿي رهيو آهي. 10-20 Kb هڪ سٺو صارف ڪيس آهي، ڪڏهن ڪڏهن وڌيڪ. ۽ ماڻهو هميشه اهو نه سوچيو ته اهو خراب آهي.

جيئن ته باقاعده پروگرامنگ ۾، يعني ڪوڊ جي طور تي انفراسٽرڪچر نه آهي، اسان مختلف طبقن، پيڪيجز، ماڊلز، گروپن جو هڪ گروپ استعمال ڪرڻ جا عادي آهيون. Terraform توهان کي گهڻو ڪجهه ڪرڻ جي اجازت ڏئي ٿو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

  • ڪوڊ وڌي رهيو آهي.
  • وسيلن جي وچ ۾ انحصار پڻ وڌي رهيا آهن.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ اسان کي وڏي، وڏي ضرورت آهي. اسان سمجهون ٿا ته اسان هن وانگر وڌيڪ نه رهي سگهون ٿا. اسان جو ڪوڊ وڏو ٿي رهيو آهي. 10-20 Kb، يقينا، تمام وسيع نه آهي، پر اسان صرف نيٽ ورڪ اسٽيڪ بابت ڳالهائي رهيا آهيون، يعني توهان صرف نيٽ ورڪ وسيلن کي شامل ڪيو آهي. اسان ايپليڪيشن لوڊ بيلنس جي باري ۾ نه ڳالهائي رهيا آهيون، ڊيپلائيشن ES ڪلستر، ڪبرنيٽس، وغيره، جتي 100 Kb آساني سان ٺاهي سگھجن ٿيون. جيڪڏھن توھان ھي سڀ لکندا، توھان تمام جلد سکندا ته Terraform مهيا ڪري ٿو Terraform ماڊلز.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

Terraform ماڊلز ھڪ خود مختيار Terraform ٺاھ جوڙ آھي جنھن کي ھڪ گروپ طور منظم ڪيو ويندو آھي. اهو سڀ ڪجهه توهان کي ڄاڻڻ جي ضرورت آهي Terraform ماڊلز بابت. اهي سڀ ڪجهه سمارٽ نه آهن، اهي توهان کي اجازت نه ڏيندا آهن ڪنهن به شيء تي منحصر ڪري پيچيده ڪنيڪشن ٺاهڻ. اهو سڀ ڪجهه ڊولپرز جي ڪلهن تي پوي ٿو. اهو آهي، اهو صرف ڪجهه قسم جي Terraform ترتيب آهي جيڪو توهان اڳ ۾ ئي لکيو آهي. ۽ توهان صرف ان کي هڪ گروپ طور سڏي سگهو ٿا.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

تنهن ڪري اسان اهو سمجهڻ جي ڪوشش ڪري رهيا آهيون ته اسان پنهنجي 10-20-30 Kb ڪوڊ کي ڪيئن بهتر ڪنداسين. اسان آهستي آهستي محسوس ڪري رهيا آهيون ته اسان کي ڪجهه ماڊل استعمال ڪرڻ جي ضرورت آهي.

ماڊلز جو پهريون قسم توهان کي منهن ڏيڻو آهي وسيلا ماڊلز. اهي نه ٿا سمجهن ته توهان جو انفراسٽرڪچر ڇا آهي، توهان جو ڪاروبار ڇا آهي، ڪٿي ۽ ڪهڙيون حالتون آهن. اهي بلڪل اهي ماڊلز آهن جن کي مان، اوپن سورس ڪميونٽي سان گڏ، انتظاميه، ۽ جن کي اسان توهان جي انفراسٽرڪچر لاءِ ابتدائي بلڊنگ بلاڪ طور پيش ڪيو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

وسيلن جي ماڊل جو هڪ مثال.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

جڏهن اسان هڪ وسيلا ماڊل کي سڏيندا آهيون، اسان بيان ڪريون ٿا ته اسان کي ان جي مواد کي ڪهڙي رستي تان لوڊ ڪرڻ گهرجي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اسان اشارو ڪندا آهيون ته اسان ڪهڙو نسخو ڊائون لوڊ ڪرڻ چاهيون ٿا.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اسان اتي دليلن جو هڪ گروپ پاس ڪيو. اهو ئي سڀ ڪجهه آهي. اهو سڀ ڪجهه اسان کي ڄاڻڻ جي ضرورت آهي جڏهن اسان هن ماڊل کي استعمال ڪندا آهيون.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ڪيترن ئي ماڻهن جو خيال آهي ته جيڪڏهن اهي جديد نسخو استعمال ڪري، سڀڪنھن شيء کي مستحڪم ٿي ويندي. پر نه. انفراسٽرڪچر کي ورزن ٿيڻ گهرجي؛ اسان کي واضح طور تي جواب ڏيڻ گهرجي ته هي يا اهو جزو ڪهڙي ورزن تي لڳايو ويو هو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هتي اهو ڪوڊ آهي جيڪو هن ماڊل جي اندر آهي. سيڪيورٽي گروپ ماڊل. هتي طومار 640 هين لائن ڏانهن وڃي ٿو. Amazon ۾ هر ممڪن ترتيب ۾ هڪ سيڪيورٽي-ڪرپ وسيلو ٺاهڻ هڪ تمام غير معمولي ڪم آهي. اهو ڪافي ناهي ته صرف هڪ سيڪيورٽي گروپ ٺاهيو ۽ ان کي ٻڌايو ته ان کي پاس ڪرڻ لاء ڪهڙا ضابطا. اهو تمام سادو هوندو. Amazon اندر هڪ لک مختلف پابنديون آهن. مثال طور، جيڪڏهن توهان استعمال ڪريو وي پي سي جي آخري پوائنٽ، پريفڪس لسٽ، مختلف APIs ۽ ڪوشش ڪري ٿو ته اهو سڀ ڪجهه ٻين شين سان گڏ ڪري، پوءِ Terraform توهان کي ائين ڪرڻ جي اجازت نٿو ڏئي. ۽ Amazon API هن کي اجازت نٿو ڏئي. تنهن ڪري، اسان کي اهو سڀ خوفناڪ منطق هڪ ماڊل ۾ لڪائڻ جي ضرورت آهي ۽ صارف جو ڪوڊ ڏيو جيڪو صرف هن وانگر نظر اچي ٿو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

صارف کي ڄاڻڻ جي ضرورت ناهي ته اهو اندر ڪيئن ٺاهيو ويو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ماڊل جو ٻيو قسم، جيڪو وسيلن جي ماڊلز تي مشتمل آهي، اڳ ۾ ئي مسئلا حل ڪري ٿو جيڪي توهان جي ڪاروبار تي وڌيڪ لاڳو ٿين ٿا. گهڻو ڪري هي هڪ جڳهه آهي جيڪو Terraform لاء هڪ واڌارو آهي ۽ ٽيگ لاء ڪجهه سخت قدر مقرر ڪري ٿو، ڪمپني جي معيار لاء. توھان اتي ڪارڪردگي پڻ شامل ڪري سگھو ٿا جيڪو Terraform في الحال توھان کي استعمال ڪرڻ جي اجازت نٿو ڏئي. هي هن وقت آهي. هاڻي نسخو 0.11، جيڪو ماضي جي شيء ٿيڻ بابت آهي. پر اڃا تائين، پري پروسيسرز، jsonnet، cookiecutter ۽ ٻين شين جو هڪ گروپ هڪ معاون ميڪانيزم آهي جيڪو مڪمل ڪم لاء استعمال ڪيو وڃي.

اڳتي هلي مان ان جا ڪجهه مثال ڏيندس.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

بنيادي ڍانچي جي ماڊل کي سڏيو ويندو آهي ساڳئي طرح.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

مواد کي ڊائون لوڊ ڪرڻ جو ذريعو ڏيکاريل آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

قدرن جو هڪ ٽڪرو هن ماڊل ۾ گذريو ويو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اڳيون، هن ماڊل جي اندر، وسيلن جي ماڊلز جو هڪ گروپ سڏيو ويندو آهي هڪ VPC يا ايپليڪيشن لوڊ بيلنس ٺاهڻ لاء، يا هڪ سيڪيورٽي گروپ ٺاهڻ يا هڪ لچڪدار ڪنٽينر سروس ڪلستر لاء.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ماڊل جا ٻه قسم آهن. اھو سمجھڻ ضروري آھي ڇو ته مون ھن رپورٽ ۾ جيڪا معلومات گڏ ڪئي آھي انھن مان گھڻا دستاويز ۾ لکيل نه آھن.

۽ Terraform ۾ دستاويز هن وقت ڪافي مشڪل آهي ڇاڪاڻ ته اهو صرف چوي ٿو اتي اهي خاصيتون آهن، توهان انهن کي استعمال ڪري سگهو ٿا. پر هوءَ اها نه ٻڌائي ته انهن خاصيتن کي ڪيئن استعمال ڪجي، ڇو ته انهن کي استعمال ڪرڻ بهتر آهي. تنهن ڪري، ماڻهن جو تمام وڏو تعداد ڪجهه لکندو آهي جنهن سان اهي رهي نٿا سگهن.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اچو ته هڪ نظر رکون ته اڳتي هلي اهي ماڊل ڪيئن لکجن. پوء اسان ڏسنداسين ته انهن کي ڪيئن ڪال ڪجي ۽ ڪوڊ سان ڪيئن ڪم ڪجي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

Terraform رجسٽري - https://registry.terraform.io/

ھدايت #0 آھي نه لکڻ لاءِ وسيلا ماڊلز. انهن مان گهڻا ماڊل اڳ ۾ ئي توهان لاءِ لکيل آهن. جيئن مون چيو، اهي اوپن سورس آهن، اهي توهان جي ڪاروباري منطق تي مشتمل نه آهن، انهن وٽ IP پتي، پاسورڊ وغيره لاء هارڊ ڪوڊ ٿيل قدر نه آهي. ماڊل تمام لچڪدار آهي. ۽ اهو گهڻو ڪري اڳ ۾ ئي لکيو ويو آهي. Amazon کان وسيلن لاء ڪيترائي ماڊل آهن. اٽڪل 650. ۽ انھن مان گھڻا سٺي معيار جا آھن.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هن مثال ۾، ڪو ماڻهو توهان وٽ آيو ۽ چيو، "مان هڪ ڊيٽابيس کي منظم ڪرڻ جي قابل ٿيڻ چاهيان ٿو. هڪ ماڊل ٺاهيو ته جيئن مان ڊيٽابيس ٺاهي سگهان. اهو شخص نه ڄاڻندو آهي يا ته Amazon يا Terraform تي عملدرآمد جي تفصيل. هو صرف چوي ٿو: "مان MSSQL کي منظم ڪرڻ چاهيان ٿو." اھو آھي، اسان جو مطلب آھي ته اھو اسان جي ماڊل کي سڏيندو، انجڻ جي قسم کي پاس ڪندو، ۽ ٽائم زون کي ظاھر ڪندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ هڪ شخص کي اهو نه ڄاڻڻ گهرجي ته اسان هن ماڊل جي اندر ٻه مختلف وسيلا ٺاهينداسين: هڪ MSSQL لاءِ، ٻيو هر شيءِ لاءِ، صرف ان ڪري جو Terraform 0.11 ۾ توهان ٽائم زون ويلز کي اختياري طور بيان نٿا ڪري سگهو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ هن ماڊل مان نڪرڻ تي، هڪ شخص صرف هڪ پتو حاصل ڪرڻ جي قابل هوندو. هن کي اها به خبر نه هوندي ته ڪهڙي ڊيٽابيس مان، ڪهڙي وسيلا مان اسان هي سڀ اندروني طور ٺاهي رهيا آهيون. هي لڪائڻ جو هڪ تمام اهم عنصر آهي. ۽ اهو لاڳو ٿئي ٿو نه رڳو انهن ماڊلز تي جيڪي عوامي آهن اوپن سورس ۾، پر انهن ماڊلن تي پڻ جيڪي توهان پنهنجي پروجيڪٽ ۽ ٽيمن ۾ لکندا.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هي ٻيو دليل آهي، جيڪو ڪافي اهم آهي جيڪڏهن توهان ڪجهه دير تائين Terraform استعمال ڪري رهيا آهيو. توهان وٽ هڪ مخزن آهي جنهن ۾ توهان پنهنجي ڪمپني لاءِ پنهنجا سڀئي Terraform ماڊل رکيا آهن. ۽ اهو بلڪل عام آهي ته وقت سان گڏ اهو منصوبو هڪ يا ٻه ميگا بائيٽ جي سائيز تائين وڌندو. هي ٺيڪ آهي.

پر مسئلو اهو آهي ته ڪيئن Terraform انهن ماڊلز کي سڏي ٿو. مثال طور، جيڪڏهن توهان هر هڪ صارف کي ٺاهڻ لاءِ هڪ ماڊيول سڏين ٿا، ته Terraform پهرين پوري مخزن کي لوڊ ڪندو ۽ پوءِ ان فولڊر ڏانهن ويندو جتي اهو مخصوص ماڊل واقع آهي. اهڙي طرح توهان هر وقت هڪ ميگا بائيٽ ڊائون لوڊ ڪندا. جيڪڏهن توهان 100 يا 200 استعمال ڪندڙن کي منظم ڪريو ٿا، ته پوءِ توهان 100 يا 200 ميگا بائيٽ ڊائون لوڊ ڪندا، ۽ پوءِ ان فولڊر ۾ وڃو. تنهنڪري قدرتي طور تي توهان نه ٿا چاهيو ته هر وقت توهان "Terraform init" کي هٽايو سامان جو هڪ گروپ ڊائون لوڊ ڪريو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

https://github.com/mbtproject/mbt

هن مسئلي جا ٻه حل آهن. سڀ کان پهريان، لاڳاپيل رستا استعمال ڪرڻ آهي. هن طريقي سان توهان ڪوڊ ۾ ظاهر ڪيو ته فولڊر مقامي آهي (./). ۽ توھان کان پھريان ڪجھ به لانچ ڪريو، توھان ڪريو ٿا گيٽ ڪلون ھن مخزن جو مقامي طور تي. هن طريقي سان توهان هڪ ڀيرو ڪريو.

اتي، يقينا، تمام گهڻو downsides آهن. مثال طور، توهان ورزننگ استعمال نٿا ڪري سگهو. ۽ اهو ڪڏهن ڪڏهن سان گڏ رهڻ ڏکيو آهي.

ٻيو حل. جيڪڏهن توهان وٽ تمام گهڻا ذيلي ماڊل آهن ۽ توهان وٽ اڳ ۾ ئي ڪنهن قسم جي پائيپ لائين آهي، پوءِ اتي آهي MBT پروجيڪٽ، جيڪو توهان کي اجازت ڏئي ٿو ڪيترن ئي مختلف پيڪيجز کي گڏ ڪري هڪ monorepository مان ۽ انهن کي S3 تي اپلوڊ ڪري. هي هڪ تمام سٺو طريقو آهي. اهڙيء طرح، iam-user-1.0.0.zip فائل جو وزن صرف 1 Kb هوندو، ڇاڪاڻ ته هن وسيلن کي ٺاهڻ لاء ڪوڊ تمام ننڍڙو آهي. ۽ اهو تمام تيز ڪم ڪندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اچو ته ان بابت ڳالهايون جيڪي ماڊلز ۾ استعمال نٿا ڪري سگهجن.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ماڊلز ۾ هي برائي ڇو آهي؟ سڀ کان وڌيڪ خراب شيء آهي صارف جو فرض. فرض ڪريو صارف ھڪڙو مهيا ڪندڙ جي تصديق جو اختيار آھي جيڪو مختلف ماڻھن پاران استعمال ڪري سگھجي ٿو. مثال طور، اسان سڀ ڪردار کي گڏ ڪنداسين. هن جو مطلب آهي ته Terraform هن ڪردار تي وٺي ويندي. ۽ پوءِ ان ڪردار سان گڏ ٻيا عمل به سرانجام ڏيندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ برائي اها آهي ته جيڪڏهن واسيا هڪ طريقي سان Amazon سان ڳنڍڻ پسند ڪري ٿو، مثال طور، ڊفالٽ ماحول واري تبديلي کي استعمال ڪندي، ۽ پيٽيا پسند ڪندو آهي ته هن جي حصيداري ڪيل چيلي کي استعمال ڪرڻ، جيڪا هن وٽ هڪ ڳجهي جاء تي آهي، پوء توهان ٻنهي ۾ وضاحت نٿا ڪري سگهو. ٽيرافارم. ۽ انهي ڪري ته اهي مصيبت جو تجربو نه ڪن، ماڊل ۾ هن بلاڪ کي ظاهر ڪرڻ جي ڪا ضرورت ناهي. اهو هڪ اعلي سطح تي اشارو ڪيو وڃي. اھو آھي، اسان وٽ ھڪڙو وسيلو ماڊل آھي، ھڪڙو انفراسٽرڪچر ماڊل ۽ ھڪڙو ٺاھڻ مٿي تي. ۽ هن کي ڪنهن مٿاهون هنڌ ڏانهن اشارو ڪيو وڃي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ٻيو برائي روزي ڏيندڙ آهي. هتي برائي ايتري معمولي نه آهي، ڇاڪاڻ ته جيڪڏهن توهان ڪوڊ لکندا آهيو ۽ اهو توهان لاء ڪم ڪري ٿو، ته پوء توهان سوچيو ته جيڪڏهن اهو ڪم ڪري ٿو، ته پوء ان کي تبديل ڇو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

برائي اها آهي ته توهان هميشه ڪنٽرول نه ڪندا آهيو جڏهن هي رزق ڪندڙ شروع ڪيو ويندو، پهرين. ۽ ٻيو، توهان ڪنٽرول نٿا ڪريو ته aws ec2 جو مطلب ڇا آهي، يعني ڇا اسان هاڻي لينڪس يا ونڊوز بابت ڳالهائي رهيا آهيون. تنهن ڪري توهان ڪجهه نه ٿا لکي سگهو جيڪو ساڳيو ڪم ڪندو مختلف آپريٽنگ سسٽم تي يا مختلف يوزر ڪيسن لاءِ.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

سڀ کان عام مثال، جنهن کي سرڪاري دستاويزن ۾ پڻ اشارو ڪيو ويو آهي، اهو آهي ته جيڪڏهن توهان aws_instance لکو ٿا ۽ دليلن جو هڪ گروپ بيان ڪريو ٿا، ته پوءِ ان ۾ ڪو به حرج ناهي ته جيڪڏهن توهان اتي روزي ڏيندڙ “local-exec” کي بيان ڪريو ۽ پنهنجو جوابي عمل هلائي. راند جو ڪتاب.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

حقيقت ۾، ها، ان ۾ ڪجھ به غلط ناهي. پر لفظي طور تي جلد ئي توهان کي اهو احساس ٿيندو ته هي مقامي-ايڪسيڪ شيء موجود ناهي، مثال طور، لانچ_configuration ۾.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ جڏھن توھان استعمال ڪندا آھيو launch_configuration، ۽ توھان چاھيو ٿا ٺاھيو آٽو اسڪيلنگ گروپ ھڪڙي مثال کان، پوءِ launch_configuration ۾ ”روزي ڏيندڙ“ جو ڪو تصور ناھي. اتي "صارف ڊيٽا" جو تصور آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

تنهن ڪري، هڪ وڌيڪ عالمگير حل استعمال ڪندڙ ڊيٽا استعمال ڪرڻ آهي. ۽ اهو شروع ڪيو ويندو يا ته مثال پاڻ تي، جڏهن مثال آن ڪيو ويندو آهي، يا ساڳئي صارف ڊيٽا ۾، جڏهن خودڪار اسڪيلنگ گروپ هن لانچ_configuration کي استعمال ڪندو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

جيڪڏهن توهان اڃا تائين رزق ڪندڙ کي هلائڻ چاهيو ٿا، ڇاڪاڻ ته اهو هڪ چمڪندڙ جزو آهي، جڏهن هڪ وسيلو ٺاهيو ويندو آهي، ان وقت توهان کي توهان جي روزي کي هلائڻو پوندو، توهان جو حڪم. اهڙيون حالتون تمام گهڻيون آهن.

۽ ان لاءِ سڀ کان وڌيڪ صحيح وسيلو سڏيو ويندو آهي null_resource. Null_resource هڪ ڊمي وسيلو آهي جيڪو اصل ۾ ڪڏهن به پيدا نه ٿيو آهي. اهو ڪنهن به شيءِ کي هٿ نٿو اچي، نه API، نه آٽو اسڪيلنگ. پر اهو توهان کي ڪنٽرول ڪرڻ جي اجازت ڏئي ٿو جڏهن حڪم هلائڻ لاء. انهي حالت ۾، حڪم تخليق دوران هلائي ويندي آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

لنڪ http://bit.ly/common-traits-in-terraform-modules

اتي ڪيترائي نشان آھن. مان سڀني نشانين ۾ وڏي تفصيل سان نه ويندس. هن بابت هڪ مضمون آهي. پر جيڪڏهن توهان Terraform سان ڪم ڪيو آهي يا ٻين ماڻهن جا ماڊل استعمال ڪيا آهن، ته پوءِ توهان اڪثر محسوس ڪيو آهي ته ڪيترائي ماڊلز، جهڙوڪ اوپن سورس ۾ اڪثر ڪوڊ، ماڻهن طرفان پنهنجي ضرورتن لاءِ لکيا ويندا آهن. هڪ شخص ان کي لکيو ۽ هن جو مسئلو حل ڪيو. مون ان کي GitHub ۾ پڪڙيو، ان کي رهڻ ڏيو. اهو رهندو، پر جيڪڏهن اتي ڪو دستاويز ۽ مثال نه آهي، ته پوء ڪو به ان کي استعمال نه ڪندو. ۽ جيڪڏهن ڪا به ڪارڪردگي نه آهي جيڪا توهان کي پنهنجي مخصوص ڪم کان ٿورو وڌيڪ حل ڪرڻ جي اجازت ڏئي ٿي، پوء ڪو به ان کي استعمال نه ڪندو. صارفين کي وڃائڻ جا ڪيترائي طريقا آهن.

جيڪڏهن توهان ڪجهه لکڻ چاهيو ٿا ته جيئن ماڻهو ان کي استعمال ڪن، پوء آئون انهن نشانين تي عمل ڪرڻ جي صلاح ڪريان ٿو.

هي آهي:

  • دستاويز ۽ مثال.
  • مڪمل ڪارڪردگي.
  • معقول ڊفالٽ.
  • صاف ڪوڊ.
  • ٽيسٽ.

ٽيسٽ هڪ مختلف صورتحال آهي ڇاڪاڻ ته اهي لکڻ ڪافي ڏکيو آهن. مان دستاويزن ۽ مثالن ۾ وڌيڪ يقين رکان ٿو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

تنهن ڪري، اسان ڏٺو ته ماڊل ڪيئن لکجي. اتي ٻه دليل آهن. پهريون، جيڪو سڀ کان اهم آهي، اهو نه لکو جيڪڏهن توهان ڪري سگهو ٿا، ڇاڪاڻ ته ماڻهن جو هڪ گروپ توهان کان اڳ ۾ ئي اهي ڪم ڪري چڪو آهي. ۽ ٻيو، جيڪڏهن توهان اڃا تائين فيصلو ڪيو ٿا، ته پوء ماڊلز ۽ روزي ڏيندڙن ۾ مهيا ڪندڙن کي استعمال ڪرڻ جي ڪوشش نه ڪريو.

هي دستاويز جو سرمائي حصو آهي. توھان ھاڻي سوچي رھيا آھيو: ”ڪجھ واضح آھي. يقين نه ٿو اچي“. پر اسان ڇهن مهينن ۾ ڏسنداسين.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هاڻي اچو ته انهن ماڊلز کي ڪيئن سڏجي ان بابت ڳالهايون.

اسان سمجھون ٿا ته اسان جو ڪوڊ وقت سان وڌي ٿو. اسان وٽ هاڻي هڪ فائل ناهي، اسان وٽ اڳ ۾ ئي 20 فائلون آهن. اهي سڀ هڪ فولڊر ۾ آهن. يا شايد پنجن فولڊرن ۾. ٿي سگهي ٿو ته اسان ڪنهن نه ڪنهن طرح انهن کي علائقي جي لحاظ کان، ڪجهه حصن جي ذريعي ٽوڙڻ شروع ڪري رهيا آهيون. پوءِ اسان سمجھون ٿا ته ھاڻي اسان وٽ هم وقت سازي ۽ آرڪيسٽريشن جا ڪي اصول آھن. اهو آهي، اسان کي اهو سمجهڻ گهرجي ته اسان کي ڇا ڪرڻ گهرجي جيڪڏهن اسان نيٽ ورڪ وسيلن کي تبديل ڪيو، اسان کي اسان جي باقي وسيلن سان ڇا ڪرڻ گهرجي، انهن انحصار کي ڪيئن بڻائڻ، وغيره.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اتي ٻه انتها آهن. پهرين انتهائي سڀ هڪ ۾ آهي. اسان وٽ ھڪڙو ماسٽر فائل آھي. هن وقت تائين، هي سرڪاري بهترين عمل هو Terraform ويب سائيٽ تي.

پر ھاڻي اھو لکيو ويو آھي ختم ٿيل ۽ ختم ٿيل. ڪجهه وقت کان پوء، Terraform ڪميونٽي اهو محسوس ڪيو ته اهو بهترين عمل کان پري هو، ڇاڪاڻ ته ماڻهن مختلف طريقن سان منصوبي کي استعمال ڪرڻ شروع ڪيو. ۽ مسئلا آهن. مثال طور، جڏهن اسان هڪ جڳهه تي سڀني انحصار کي لسٽ ڪندا آهيون. اتي حالتون آھن جڏھن اسين ڪلڪ ڪندا آھيون ”ٽرافارم پلان“ ۽ جيستائين Terraform سڀني وسيلن جي رياستن کي اپڊيٽ ڪري ٿو، گھڻو وقت گذري سگھي ٿو.

گهڻو وقت آهي، مثال طور، 5 منٽ. ڪجھ لاءِ اھو گھڻو وقت آھي. مون ڪيس ڏٺا آهن جن ۾ 15 منٽ لڳن ٿا. AWS API 15 منٽ خرچ ڪيو اهو معلوم ڪرڻ جي ڪوشش ڪئي ته هر وسيلن جي حالت سان ڇا ٿي رهيو آهي. هي هڪ تمام وڏو علائقو آهي.

۽، قدرتي طور، هڪ لاڳاپيل مسئلو ظاهر ٿيندو جڏهن توهان هڪ جاء تي ڪجهه تبديل ڪرڻ چاهيو ٿا، پوء توهان 15 منٽ انتظار ڪريو، ۽ اهو توهان کي ڪجهه تبديلين جو هڪ ڪئنوس ڏئي ٿو. توهان ٿڪايو، "ها" لکيو، ۽ ڪجهه غلط ٿي ويو. هي هڪ تمام حقيقي مثال آهي. Terraform توهان کي مسئلن کان بچائڻ جي ڪوشش نه ڪندو آهي. اهو آهي، جيڪو توهان چاهيو ٿا لکو. مسئلا هوندا - توهان جا مسئلا. جڏهن ته Terraform 0.11 ڪنهن به طرح توهان جي مدد ڪرڻ جي ڪوشش نه آهي. 0.12 ۾ ڪجھ دلچسپ جڳھون آھن جيڪي توھان کي چوڻ جي اجازت ڏين ٿيون: "واسيا، توھان واقعي اھو چاھيو ٿا، ڇا توھان پنھنجي ھوش ۾ اچي سگھوٿا؟"

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ٻيو طريقو اهو آهي ته هن علائقي کي گهٽايو وڃي، يعني هڪ هنڌ کان ڪالون ٻئي هنڌ کان گهٽ ڳنڍجي سگهن ٿيون.

صرف مسئلو اهو آهي ته توهان کي وڌيڪ ڪوڊ لکڻ جي ضرورت آهي، يعني توهان کي فائلن جي وڏي تعداد ۾ متغير بيان ڪرڻ جي ضرورت آهي ۽ هن کي اپڊيٽ ڪرڻ جي ضرورت آهي. ڪجهه ماڻهو اهو پسند نٿا ڪن. اها ڳالهه مون لاءِ عام آهي. ۽ ڪجهه ماڻهو سوچن ٿا: "هي مختلف هنڌن تي ڇو لکندو، مان اهو سڀ هڪ جڳهه تي رکندس." اهو ممڪن آهي، پر هي ٻيو انتها آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هي سڀ ڪنهن هڪ جاءِ تي رهندڙ آهن؟ هڪ، ٻه، ٽي ماڻهو، يعني ڪو استعمال ڪري رهيو آهي.

۽ ڪير سڏيندو هڪ خاص جزو، هڪ بلاڪ يا هڪ انفراسٽرڪچر ماڊل؟ پنج ست ماڻهو. هي ٿڌو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

سڀ کان عام جواب وچ ۾ ڪٿي آهي. جيڪڏهن پروجيڪٽ وڏو آهي، ته توهان وٽ اڪثر اهڙي صورتحال هوندي جتي ڪو به حل مناسب ناهي ۽ نه هر شيء اتي ڪم ڪري ٿي، تنهنڪري توهان هڪ مرکب سان ختم ڪيو. ان ۾ ڪجھ به غلط نه آھي، جيستائين توھان سمجھو ٿا ته ٻنهي جا فائدا آھن.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

جيڪڏھن ڪجھ تبديل ٿي ويو اسٽيڪ VPC ۾ ۽ توھان انھن تبديلين کي EC2 تي لاڳو ڪرڻ چاھيو، يعني توھان آٽو اسڪيلنگ گروپ کي اپڊيٽ ڪرڻ چاھيو ٿا ڇو ته توھان وٽ ھڪڙو نئون سب نيٽ آھي، پوءِ مان ھن قسم جي انحصار آرڪيسٽريشن کي سڏيان ٿو. ڪجھ حل آھن: ڪير استعمال ڪري ٿو؟

مان صلاح ڪري سگهان ٿو ته ڪهڙا حل آهن. توھان استعمال ڪري سگھو ٿا Terraform جادو ڪرڻ لاءِ، يا توھان استعمال ڪري سگھوٿا ميڪ فائلز استعمال ڪرڻ لاءِ Terraform. ۽ ڏسو ته اتي ڪجھ تبديل ٿي ويو آھي، توھان ان کي ھتي لانچ ڪري سگھو ٿا.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

توهان کي اهو فيصلو ڪيئن پسند آهي؟ ڇا ڪنهن کي يقين آهي ته هي هڪ بهترين حل آهي؟ مان هڪ مسڪراهٽ ڏسان ٿو، ظاهري طور تي شڪ پيدا ٿي ويا آهن.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

يقينا، گهر ۾ هن جي ڪوشش نه ڪريو. Terraform ڪڏهن به Terraform کان هلائڻ لاء ٺهيل نه هئي.

هڪ رپورٽ تي هنن مون کي ٻڌايو: ”نه، اهو ڪم نه ڪندو. نقطي اهو آهي ته اهو ڪم نه ڪرڻ گهرجي. جيتوڻيڪ اهو تمام متاثر ڪندڙ نظر اچي ٿو جڏهن توهان شروع ڪري سگهو ٿا Terraform مان Terraform، ۽ پوء Terraform، توهان کي اهو نه ڪرڻ گهرجي. Terraform هميشه تمام آساني سان شروع ڪرڻ گهرجي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

https://github.com/gruntwork-io/terragrunt/

جيڪڏهن توهان کي ڪال آرڪيسٽريشن جي ضرورت آهي جڏهن هڪ جڳهه ۾ ڪا شيء تبديل ٿي وئي آهي، پوء اتي آهي Terragrunt.

Terragrunt هڪ يوٽيلٽي آهي، هڪ اضافو Terraform ۾، جيڪو توهان کي انفراسٽرڪچر ماڊلز تي ڪالن کي ترتيب ڏيڻ ۽ ترتيب ڏيڻ جي اجازت ڏئي ٿو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ھڪڙي عام Terraform ترتيب واري فائل ھن وانگر ڏسڻ ۾ ايندي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

توھان وضاحت ڪريو جنھن مخصوص ماڊل کي توھان سڏڻ چاھيو ٿا.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ماڊل ۾ ڪهڙا انحصار آهن؟

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ ڪهڙو دليل هي ماڊل قبول ڪري ٿو. Terragrunt بابت ڄاڻڻ لاء اهو سڀ ڪجهه آهي.

دستاويز موجود آهي، ۽ GitHub تي 1 تارا آهن. پر اڪثر ڪيسن ۾ اهو آهي جيڪو توهان کي ڄاڻڻ جي ضرورت آهي. ۽ اهو ڪمپنين ۾ لاڳو ڪرڻ تمام آسان آهي جيڪي صرف Terraform سان ڪم ڪرڻ شروع ڪري رهيا آهن.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

تنهنڪري آرڪيسٽريشن Terragrunt آهي. ٻيا اختيار آھن.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هاڻي اچو ته ان بابت ڳالهايون ته ڪوڊ سان ڪيئن ڪم ڪجي.

جيڪڏهن توهان کي پنهنجي ڪوڊ ۾ نيون خاصيتون شامل ڪرڻ جي ضرورت آهي، اڪثر ڪيسن ۾ اهو آسان آهي. توهان هڪ نئون وسيلو لکي رهيا آهيو، هر شيء سادو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

جيڪڏهن توهان وٽ ڪجهه وسيلا آهن جيڪي توهان اڳ ۾ ٺاهيا هئا، مثال طور، توهان Terraform بابت AWS کاتو کولڻ کان پوءِ سکيو ۽ اهي وسيلا استعمال ڪرڻ چاهيو ٿا جيڪي توهان وٽ اڳ ۾ آهن، ته پوءِ اهو مناسب ٿيندو ته توهان پنهنجي ماڊل کي هن طريقي سان وڌايو، ته جيئن اهو موجوده وسيلن جي استعمال جي حمايت ڪري ٿو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ بلاڪ وسيلن کي استعمال ڪندي نئين وسيلن جي تخليق جي حمايت ڪئي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

آئوٽ پٽ تي اسان هميشه آئوٽ آئ ڊي واپس ڪندا آهيون ان تي منحصر آهي ته ڇا استعمال ڪيو ويو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

Terraform 0.11 ۾ ٻيو تمام اهم مسئلو فهرستن سان ڪم ڪري رهيو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

مشڪل اهو آهي ته جيڪڏهن اسان وٽ استعمال ڪندڙن جي اهڙي فهرست آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ جڏهن اسان ٺاهيندا آهيون انهن صارفين کي بلاڪ وسيلا استعمال ڪندي، پوءِ سڀ ڪجهه ٺيڪ ٿي وڃي ٿو. اسان سڄي لسٽ ذريعي وڃو، هر هڪ لاء هڪ فائل ٺاهي. سڀ ڪجهه ٺيڪ آهي. ۽ پوءِ، مثال طور، user3، جيڪو وچ ۾ آهي، ان کي هتان هٽايو وڃي، پوءِ ان کان پوءِ ٺاهيل سمورا وسيلا ٻيهر ٺاهيا ويندا، ڇاڪاڻ ته انڊيڪس تبديل ٿي ويندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هڪ رياستي ماحول ۾ فهرستن سان ڪم ڪرڻ. رياستي ماحول ڇا آهي؟ اها صورتحال آهي جتي هڪ نئين قدر پيدا ٿئي ٿي جڏهن هي وسيلو پيدا ٿئي ٿو. مثال طور، AWS Access Key يا AWS Secret Key، يعني جڏهن اسان هڪ صارف ٺاهيون ٿا، اسان کي هڪ نئين رسائي يا ڳجهي چيڪ ملي ٿي. ۽ هر دفعي اسان هڪ صارف کي حذف ڪندا آهيون، هن صارف کي هڪ نئين چيڪ هوندي. پر هي فينگ شوئي ناهي، ڇاڪاڻ ته صارف اسان سان دوستي نه ڪرڻ چاهيندو جيڪڏهن اسان هن لاءِ هڪ نئون يوزر ٺاهيو هر وقت جڏهن ڪو ٽيم ڇڏي وڃي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

اهو ئي حل آهي. هي ڪوڊ آهي Jsonnet ۾ لکيل آهي. Jsonnet گوگل کان هڪ templating ٻولي آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

هي حڪم توهان کي هن ٽيمپليٽ کي قبول ڪرڻ جي اجازت ڏئي ٿو ۽ آئوٽ پٽ جي طور تي اهو هڪ json فائل موٽائي ٿو جيڪو توهان جي ٽيمپليٽ مطابق ٺاهيو ويو آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ٽيمپليٽ هن طرح نظر اچي ٿو.

Terraform توهان کي HCL ۽ Json ٻنهي سان گڏ ڪم ڪرڻ جي اجازت ڏئي ٿو، تنهنڪري جيڪڏهن توهان وٽ Json پيدا ڪرڻ جي صلاحيت آهي، ته پوء توهان ان کي Terraform ۾ سلپ ڪري سگهو ٿا. ايڪسٽينشن .tf.json سان فائل ڪاميابي سان ڊائون لوڊ ٿي ويندي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ پوءِ اسان ان سان گڏ ڪم ڪندا آهيون معمول مطابق: ٽيرافارم انٽ، ٽرامارم لاڳو. ۽ اسان ٻه صارف ٺاهيندا آهيون.

هاڻي اسان کي ڊپ ناهي ته ڪو ٽيم ڇڏي وڃي. اسان صرف json فائل کي ايڊٽ ڪنداسين. Vasya Pupkin ڇڏي ويو، Petya Pyatochkin رهي. Petya Pyatochkin هڪ نئين چاٻي حاصل نه ڪندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

Terraform کي ٻين اوزارن سان ضم ڪرڻ واقعي Terraform جو ڪم ناهي. Terraform وسيلا ٺاهڻ لاء پليٽ فارم جي طور تي ٺاهيو ويو ۽ اهو ئي آهي. ۽ سڀ ڪجهه جيڪو بعد ۾ اچي ٿو اهو Terraform جي ڳڻتي ناهي. ۽ اتي ان کي ٺاهڻ جي ڪا ضرورت ناهي. جواب ڏيڻ وارو آهي، جيڪو توهان کي هر شي جي ضرورت آهي.

پر حالتون پيدا ٿينديون آهن جڏهن اسان Terraform کي وڌائڻ چاهيون ٿا ۽ ڪجهه مڪمل ٿيڻ کان پوء ڪجهه حڪم کي ڪال ڪريو.

پهريون طريقو. اسان هڪ آئوٽ ٺاهيندا آهيون جتي اسان هي حڪم لکندا آهيون.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

۽ پوء اسان هن حڪم کي شيل ٽيرافارم آئوٽ مان سڏين ٿا ۽ قيمت بيان ڪريون ٿا جيڪو اسان چاهيون ٿا. اهڙيء طرح، حڪم سڀني متبادل قدرن سان عمل ڪيو ويندو آهي. اهو تمام آرامده آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ٻيو طريقو. هي آهي null_resource جو استعمال اسان جي انفراسٽرڪچر ۾ تبديلين تي منحصر آهي. اسان ساڳئي مقامي-exe کي سڏي سگهون ٿا جيئن ئي ڪجهه وسيلن جي تبديلين جي ID.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

قدرتي طور تي، اهو سڀ ڪجهه آسان آهي ڪاغذ تي، ڇاڪاڻ ته ايمازون، ٻين سڀني عوامي فراهم ڪندڙن وانگر، ان جي پنهنجي ڪنڊ ڪيسن جو هڪ گروپ آهي.

سڀ کان وڌيڪ عام ايج ڪيس اهو آهي ته جڏهن توهان AWS کاتو کوليو ٿا، اهو معاملو آهي ته توهان ڪهڙا علائقا استعمال ڪندا آهيو؛ ڇا ھي خصوصيت اتي فعال آھي؛ ٿي سگهي ٿو ته توهان ان کي ڊسمبر 2013 کان پوء کوليو؛ ٿي سگهي ٿو توهان VPC وغيره ۾ ڊفالٽ استعمال ڪري رهيا آهيو. اتي ڪيتريون ئي پابنديون آهن. ۽ Amazon انهن کي سڄي دستاويز ۾ پکڙيل آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ڪجھ شيون آھن جن کان بچڻ جي صلاح ڏني آھي.

شروع ڪرڻ لاءِ، Terraform پلان يا Terraform CLI اندر سڀني غير ڳجهي دليلن کان پاسو ڪريو. اهو سڀ ڪجهه يا ته هڪ tfvars فائل ۾ يا هڪ ماحولياتي متغير ۾ وجهي سگهجي ٿو.

پر توهان کي اهو سڄو جادو حڪم ياد ڪرڻ جي ضرورت ناهي. Terraform منصوبو - var ۽ بند اسان وڃون ٿا. پهريون متغير var آهي، ٻيو variable var آهي، ٽيون، چوٿون. بنيادي ڍانچي جو سڀ کان اهم اصول جيڪو مان اڪثر استعمال ڪندو آهيان اهو آهي ته صرف ڪوڊ کي ڏسڻ سان، مون کي واضح سمجهڻ گهرجي ته اتي ڇا لڳايو ويو آهي، ڪهڙي حالت ۾ ۽ ڪهڙي قدرن سان. ۽ تنهنڪري مون کي دستاويز پڙهڻ يا واسيا کان پڇڻ جي ضرورت ناهي ته هو اسان جو ڪلستر ٺاهڻ لاءِ ڪهڙا پيرا ميٽر استعمال ڪيا. مون کي صرف tfvars ايڪسٽينشن سان هڪ فائل کولڻ جي ضرورت آهي، جيڪا اڪثر ماحول سان ملندي آهي، ۽ اتي هر شيءِ کي ڏسندي آهي.

انهي سان گڏ، دائري کي گهٽائڻ لاء ٽارگيٽ دليلن کي استعمال نه ڪريو. ان لاءِ ان کي استعمال ڪرڻ تمام آسان آھي ننڍڙا انفراسٽرڪچر ماڊلز.

انهي سان گڏ، متوازي کي محدود ڪرڻ ۽ وڌائڻ جي ڪا ضرورت ناهي. جيڪڏهن مون وٽ 150 وسيلا آهن ۽ مان چاهيان ٿو Amazon متوازي کي ڊفالٽ 10 کان 100 تائين، پوءِ گهڻو ڪري ڪجهه غلط ٿي ويندو. يا اهو هاڻي سٺو ٿي سگهي ٿو، پر جڏهن Amazon چوي ٿو ته توهان تمام گهڻيون ڪالون ڪري رهيا آهيو، توهان مصيبت ۾ هوندا.

Terraform انهن مسئلن مان اڪثر کي ٻيهر شروع ڪرڻ جي ڪوشش ڪندو، پر توهان تقريبا ڪجھ به حاصل نه ڪنداسين. Parallelism = 1 استعمال ڪرڻ لاءِ هڪ اهم شيءِ آهي جيڪڏهن توهان AWS API جي اندر يا Terraform فراهم ڪندڙ جي اندر ڪجهه بگ تي ڌڪ هڻي رهيا آهيو. ۽ پوء توهان کي وضاحت ڪرڻ جي ضرورت آهي: parallelism=1 ۽ انتظار ڪريو جيستائين Terraform هڪ ڪال ختم ڪري، پوء ٻيو، پوء ٽيون. هو انهن کي هڪ هڪ ڪري لانچ ڪندو.

ماڻهو اڪثر مون کان پڇندا آهن، "ڇو مان سمجهان ٿو ته Terraform ڪم اسپيس خراب آهن؟" مان سمجهان ٿو بنيادي ڍانچي جو اصول ڪوڊ جي طور تي اهو ڏسڻ لاءِ آهي ته ڪهڙي بنيادي ڍانچي ٺاهي وئي آهي ۽ ڪهڙي قدرن سان.

ڪم اسپيس استعمال ڪندڙن پاران پيدا نه ڪيا ويا. هن جو مطلب اهو ناهي ته صارفين GitHub مسئلن ۾ لکيو آهي ته اسان Terraform ورڪ اسپيس کان سواء نٿا رهي سگهون. نه اهڙي نه. Terraform انٽرپرائز هڪ تجارتي حل آهي. HashiCorp کان Terraform فيصلو ڪيو ته اسان کي ڪم جي جڳهن جي ضرورت آهي، تنهنڪري اسان ان کي فائل ڪيو. مون کي ان کي هڪ الڳ فولڊر ۾ رکڻ لاء تمام آسان آهي. پوء اتي ٿوري گهڻي فائلون هونديون، پر اهو صاف ٿي ويندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

ڪوڊ سان ڪيئن ڪم ڪجي؟ حقيقت ۾، فهرستن سان ڪم ڪرڻ ئي درد آهي. ۽ وٺو Terraform آسان. اها شيءِ ناهي جيڪا توهان لاءِ سڀ ڪجهه عظيم ڪندي. اتي هر شي کي ڇڪڻ جي ضرورت ناهي جيڪا دستاويز ۾ لکيل آهي.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

رپورٽ جو موضوع ”مستقبل لاءِ“ لکيو ويو هو. مان ان بابت تمام مختصر ڳالهائيندس. مستقبل لاء، هن جو مطلب آهي ته 0.12 جلد جاري ڪيو ويندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

0.12 نئين شين جي هڪ ٽن آهي. جيڪڏهن توهان باقاعده پروگرامنگ مان ايندا آهيو، ته پوء توهان سڀني قسمن جي متحرڪ بلاڪ، لوپس، صحيح ۽ مشروط مقابلي جي عملن کي ياد ڪندا، جتي کاٻي ۽ ساڄي پاسن کي هڪ ئي وقت ۾ حساب نه ڪيو ويو آهي، پر صورتحال تي منحصر آهي. توھان ان کي تمام گھڻو ياد ڪندا آھيو، تنھنڪري 0.12 اھو توھان لاءِ حل ڪندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

پر! جيڪڏهن توهان گهٽ ۽ آسان لکندا آهيو، تيار ڪيل ماڊلز ۽ ٽئين پارٽي حل استعمال ڪندي، پوءِ توهان کي انتظار نه ڪرڻو پوندو ۽ اميد آهي ته 0.12 اچي ويندو ۽ توهان لاءِ سڀ ڪجهه ٺيڪ ڪري ڇڏيندو.

مستقبل لاء Terraform ۾ زيربنا جي وضاحت. انتون بابنڪو (2018)

رپورٽ لاءِ مهرباني! توهان ڪوڊ جي طور تي انفراسٽرڪچر بابت ڳالهايو ۽ لفظي طور تي ٽيسٽ بابت هڪ لفظ چيو. ڇا ماڊلز ۾ ٽيسٽ جي ضرورت آهي؟ اها ذميواري ڪنهن جي آهي؟ ڇا مون کي ان کي پاڻ لکڻ جي ضرورت آهي يا اهو ماڊلز جي ذميواري آهي؟

ايندڙ سال رپورٽن سان ڀريو ويندو ته اسان هر شي کي جانچڻ جو فيصلو ڪيو آهي. امتحان ڇا ڪجي اهو سڀ کان وڏو سوال آهي. اتي ڪيترائي انحصار آھن، مختلف مهيا ڪندڙن کان تمام گھڻيون پابنديون. جڏهن توهان ۽ مان ڳالهائي رهيا آهيو ۽ توهان چئو ٿا: "مون کي ٽيسٽ جي ضرورت آهي،" تڏهن مان پڇان ٿو: "توهان ڇا ٽيسٽ ڪندا؟" توهان چئو ٿا ته توهان پنهنجي علائقي ۾ ٽيسٽ ڪنداسين. پوءِ مان چوان ٿو ته اهو ڪم منهنجي علائقي ۾ نٿو ٿئي. اهو آهي، اسان ان تي متفق ٿيڻ جي قابل نه هوندا. اهو ذڪر نه ڪرڻ گهرجي ته اتي ڪيترائي ٽيڪنيڪل مسئلا آهن. اهو آهي، انهن تجربن کي ڪيئن لکجي ته جيئن اهي ڪافي آهن.

مان فعال طور تي هن موضوع تي تحقيق ڪري رهيو آهيان، يعني توهان جي لکيل انفراسٽرڪچر جي بنياد تي خودڪار ٽيسٽ ڪيئن ٺاهيا وڃن. اھو آھي، جيڪڏھن توھان ھي ڪوڊ لکيو آھي، پوء مون کي ان کي هلائڻ جي ضرورت آھي، ان جي بنياد تي مان ٽيسٽ ٺاھي سگھان ٿو.

زميندار اڪثر ذڪر ڪيل لائبريرين مان هڪ آهي جيڪا توهان کي لکڻ جي اجازت ڏئي ٿي انٽيگريشن ٽيسٽ لاءِ Terraform. هي افاديت مان هڪ آهي. مان DSL قسم کي ترجيح ڏيان ٿو، مثال طور، rspec.

Anton، رپورٽ لاء مهرباني! منهنجو نالو ويلري آهي. مون کي هڪ ننڍڙو فلسفي سوال پڇڻ ڏيو. اتي آهي، مشروط طور، روزي، اتي تعیناتي آهي. پروويزننگ منهنجو انفراسٽرڪچر ٺاهي ٿو، ڊيپلائيمينٽ ۾ اسان ان کي ڪنهن مفيد شيءِ سان ڀريون ٿا، مثال طور، سرور، ايپليڪيشنون وغيره. ۽ اها ڳالهه منهنجي ذهن ۾ آهي ته Terraform روزي جي لاءِ وڌيڪ آهي، ۽ جواب ڏيڻ وارو وڌيڪ آهي تعیناتي لاءِ، ڇاڪاڻ ته جوابي به آهي جسماني انفراسٽرڪچر لاءِ. توهان کي nginx، Postgres انسٽال ڪرڻ جي اجازت ڏئي ٿي. پر ساڳئي وقت، جواب ڏيڻ جي اجازت ڏيڻ لڳي ٿي، مثال طور، Amazon يا گوگل وسيلن جي. پر Terraform پڻ توهان کي اجازت ڏئي ٿو ته ڪجهه سافٽ ويئر ان جي ماڊلز کي استعمال ڪندي. توھان جي نقطي نظر کان، ڇا آھي ھڪڙي قسم جي سرحد جيڪا Terraform ۽ Ansible جي وچ ۾ ھلندي آھي، ڪٿي ۽ ڇا استعمال ڪرڻ بھتر آھي؟ يا، مثال طور، ڇا توهان سوچيو ٿا ته جوابي اڳ ۾ ئي گندگي آهي، توهان کي هر شيء لاء Terraform استعمال ڪرڻ جي ڪوشش ڪرڻ گهرجي؟

سٺو سوال، والري. مان سمجهان ٿو ته Terraform 2014 کان وٺي مقصد جي لحاظ کان تبديل نه ڪيو آهي. اهو انفراسٽرڪچر لاءِ ٺاهيو ويو ۽ انفراسٽرڪچر لاءِ مري ويو. اسان کي اڃا به ضرورت هئي ۽ هوندي به ترتيب جي انتظام جي جواب جي. چيلنج اهو آهي ته صارف ڊيٽا اندر موجود آهي launch_configuration. ۽ اتي توهان Ansible، وغيره ڪڍو. هي معياري فرق آهي جيڪو مون کي تمام گهڻو پسند آهي.

جيڪڏهن اسان خوبصورت زيربناء بابت ڳالهائي رهيا آهيون، پوء اتي موجود آهن افاديت جهڙوڪ پيڪر جيڪي هن تصوير کي گڏ ڪن ٿا. ۽ پوءِ Terraform ڊيٽا جو ماخذ استعمال ڪري ٿو ھن تصوير کي ڳولڻ ۽ ان جي launch_configuration کي اپڊيٽ ڪرڻ لاءِ. اهو آهي، هن طريقي سان پائپ لائن آهي ته اسان پهرين ٽريڪٽر کي ڇڪيو، پوء ٽرافارم کي ڇڪيو. ۽ جيڪڏهن تعمير ٿئي ٿي، پوء هڪ نئين تبديلي ٿئي ٿي.

سلام! رپورٽ لاءِ مهرباني! منهنجو نالو ميشا آهي، آر بي ايس ڪمپني. توھان ڪال ڪري سگھو ٿا جواب ڏيندڙ جي ذريعي جواب ڏيڻ وارو جڏھن ھڪڙو وسيلو ٺاھيو. جواب ڏيڻ وارو پڻ هڪ موضوع آهي جنهن کي متحرڪ انوینٽري سڏيو ويندو آهي. ۽ توهان پهرين ڪال ڪري سگهو ٿا Terraform، ۽ پوءِ جوابي ڪال ڪريو، جيڪو رياست کان وسيلا وٺي ۽ ان تي عمل ڪندو. ڇا بهتر آهي؟

ماڻهو ٻنهي کي برابر ڪاميابي سان استعمال ڪن ٿا. اهو مون کي لڳي ٿو ته جوابي ۾ متحرڪ انوینٽري هڪ آسان شيء آهي، جيڪڏهن اسان آٽو اسڪيلنگ گروپ بابت نه ڳالهائي رهيا آهيون. ڇاڪاڻ ته آٽو اسڪيلنگ گروپ ۾ اسان وٽ اڳ ۾ ئي اسان جي پنهنجي ٽول ڪٽ آهي، جنهن کي لانچ_configuration سڏيو ويندو آهي. launch_configuration ۾ اسان هر شي کي رڪارڊ ڪندا آهيون جنهن کي لانچ ڪرڻ جي ضرورت آهي جڏهن اسان هڪ نئون وسيلو ٺاهيندا آهيون. تنهن ڪري، Amazon سان، متحرڪ انوینٽري استعمال ڪندي ۽ Terraform ts فائل پڙهڻ، منهنجي خيال ۾، اوورڪل آهي. ۽ جيڪڏهن توهان ٻيا اوزار استعمال ڪندا آهيو جتي ”آٽو اسڪيلنگ گروپ“ جو ڪو تصور ناهي، مثال طور، توهان استعمال ڪندا آهيو DigitalOcean يا ڪو ٻيو فراهم ڪندڙ جتي ڪو به آٽو اسڪيلنگ گروپ ناهي، پوءِ اتي توهان کي دستي طور تي API ڪڍڻو پوندو، IP پتي ڳوليو، ٺاهيو هڪ متحرڪ انوینٽري فائل، ۽ جوابي اڳ ۾ ئي ان جي ذريعي گھمندو. اهو آهي، Amazon لاءِ آهي launch_configuration، ۽ هر شيءِ لاءِ متحرڪ انوینٽري آهي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو