فرض ڪريو توهان هڪ نئين منصوبي تي آيا آهيو، ۽ اهي توهان کي چوندا آهن: "اسان وٽ آهي بنيادي ڍانچي جيئن ڪوڊ". حقيقت ۾ اهو نڪتو انفراسٹرڪچر بش جي تاريخ وانگر يا مثال طور بش جي تاريخ جي طور تي دستاويز. اها هڪ تمام حقيقي صورتحال آهي، مثال طور، هڪ اهڙي صورت ۾ Denis Lysenko هڪ تقرير ۾ بيان ڪيو ويو آهي سڄي انفراسٽرڪچر کي ڪيئن بدلايو وڃي ۽ آرام سان سمهڻ شروع ڪيو وڃي، هن ٻڌايو ته ڪيئن انهن منصوبي لاءِ باش جي تاريخ مان هڪ مربوط انفراسٽرڪچر حاصل ڪيو.
ڪجهه خواهش سان، اسان اهو چئي سگهون ٿا انفراسٹرڪچر بش جي تاريخ وانگر هي ڪوڊ وانگر آهي:
ورجن ڪرڻ: توهان کي خبر آهي ته ڪير اندر آيو ۽ انهن ڇا ڪيو، ٻيهر، اها حقيقت ناهي ته اهو توهان کي نڪرڻ تي ڪم ڪندڙ ترتيب ڏانهن وٺي ويندو.
تاريخ: ڪهاڻي ڪنهن ڇا ڪيو. صرف توهان ان کي استعمال ڪرڻ جي قابل نه هوندا جيڪڏهن توهان سرور وڃائي ڇڏيو.
آئون ڇا ڪريان؟
بنيادي ڍانچي جيئن ڪوڊ
جيتوڻيڪ اهڙو عجيب ڪيس انفراسٹرڪچر بش جي تاريخ وانگر توهان ان کي ڪنن ذريعي ڇڪي سگهو ٿا بنيادي ڍانچي جيئن ڪوڊ، پر جڏهن اسان چاهيون ٿا ته ڪجهه وڌيڪ پيچيده سٺي پراڻي LAMP سرور کان، اسان ان نتيجي تي پهچنداسين ته هن ڪوڊ کي ڪنهن به طرح تبديل ڪرڻ، تبديل ڪرڻ، بهتر ڪرڻ جي ضرورت آهي. ان کان پوء اسان جي وچ ۾ parallels تي غور ڪرڻ چاهيو ٿا بنيادي ڍانچي جيئن ڪوڊ ۽ سافٽ ويئر جي ترقي.
خشڪ
اسٽوريج سسٽم ڊولپمينٽ پروجيڪٽ تي، هڪ ذيلي ڪم هو وقتي طور تي SDS ترتيب ڏيو: اسان هڪ نئين رليز جاري ڪري رهيا آهيون - ان کي وڌيڪ جاچ لاءِ رول آئوٽ ڪرڻ جي ضرورت آهي. ڪم انتهائي سادو آهي:
ssh ذريعي هتي لاگ ان ڪريو ۽ حڪم جاري ڪريو.
اتي فائل کي نقل ڪريو.
هتي config درست ڪريو.
اتي سروس شروع ڪريو
...
PROFIT!
بيان ڪيل منطق لاء، بش ڪافي کان وڌيڪ آهي، خاص طور تي منصوبي جي شروعاتي مرحلن ۾، جڏهن اهو صرف شروع ٿئي ٿو. هي اهو خراب ناهي ته توهان bash استعمال ڪريو, پر وقت گذرڻ سان گڏ ڪجھه ساڳيو، پر ٿورڙو مختلف ترتيب ڏيڻ لاءِ درخواستون آهن. پهرين شيء جيڪا ذهن ۾ اچي ٿي اها ڪاپي پيسٽ آهي. ۽ هاڻي اسان وٽ اڳ ۾ ئي ٻه تمام ملندڙ اسڪرپٽ آهن جيڪي لڳ ڀڳ ساڳيو ڪم ڪن ٿيون. وقت سان گڏ، لکتن جو تعداد وڌندو ويو، ۽ اسان کي ان حقيقت سان منهن ڏيڻو پيو ته انسٽاليشن کي ترتيب ڏيڻ لاءِ هڪ خاص ڪاروباري منطق آهي جنهن کي مختلف اسڪرپٽ جي وچ ۾ هم وقت سازي ڪرڻ جي ضرورت آهي، اهو ڪافي پيچيده آهي.
اهو ظاهر ٿئي ٿو ته اتي هڪ اهڙي مشق آهي DRY (پاڻ کي ٻيهر نه ڏيو). خيال موجوده ڪوڊ ٻيهر استعمال ڪرڻ آهي. اهو سادو آواز آهي، پر اسان هن تي صحيح نه آيا آهيون. اسان جي حالت ۾، اهو هڪ عام خيال هو: اسڪرپٽ کان ترتيبن کي الڳ ڪرڻ لاء. اهي. ڪاروباري منطق جو انسٽاليشن الڳ الڳ ترتيب ڏني وئي آهي، الڳ الڳ ترتيب ڏيو.
CFM لاء SOLID
وقت سان گڏ پروجيڪٽ وڌيو ۽ قدرتي تسلسل Ansible جو ظهور هو. ان جي ظاهر ٿيڻ جو بنيادي سبب اهو آهي ته ٽيم تي ماهر آهي ۽ اهو بش پيچيده منطق لاء ٺهيل ناهي. جوابي به پيچيده منطق تي مشتمل ٿيڻ شروع ڪيو. پيچيده منطق کي افراتفري ۾ تبديل ٿيڻ کان روڪڻ لاء، سافٽ ويئر ڊولپمينٽ ۾ ڪوڊ تنظيم جا اصول آهن سولڊ ان سان گڏ، مثال طور، گريگوري پيٽروف رپورٽ ۾ "ڇو هڪ آئي ٽي ماهر کي ذاتي برانڊ جي ضرورت آهي" سوال اٿاريو آهي ته هڪ شخص کي اهڙي طرح ٺاهيو ويو آهي ته ان لاء ڪجهه سماجي ادارن سان ڪم ڪرڻ آسان آهي، سافٽ ويئر ڊولپمينٽ ۾. شيون آهن. جيڪڏهن اسان انهن ٻن خيالن کي گڏ ڪريون ۽ انهن کي ترقي ڪرڻ جاري رکون، اسان کي نوٽيس ڪنداسين ته اسان پڻ استعمال ڪري سگهون ٿا سولڊ مستقبل ۾ هن منطق کي برقرار رکڻ ۽ تبديل ڪرڻ آسان بڻائي ٿي.
اڪيلو ذميواري اصول
هر ڪلاس صرف هڪ ڪم سرانجام ڏئي ٿو.
ڪوڊ کي گڏ ڪرڻ جي ڪا ضرورت ناهي ۽ monolithic divine spaghetti mounters ٺاهڻ. انفراسٽرڪچر کي سادي سرن تي مشتمل هجڻ گهرجي. اهو ظاهر ٿئي ٿو ته جيڪڏهن توهان جوابي راند ڪتاب کي ننڍن ٽڪرن ۾ ورهايو، جواب ڏيڻ وارا ڪردار پڙهو، پوء انهن کي برقرار رکڻ آسان آهي.
کليل بند اصول
کليل / بند اصول.
توسيع ڏانهن کليل: مطلب ته هڪ اداري جي رويي کي وڌائي سگهجي ٿو نئين اداري جي قسم ٺاهي.
تبديلي لاءِ بند ٿيل: ھڪڙي اداري جي رويي کي وڌائڻ جي نتيجي ۾، ڪوڊ ۾ ڪا به تبديلي نه ڪئي وڃي جيڪا انھن ادارن کي استعمال ڪري ٿي.
شروعات ۾، اسان ورچوئل مشينن تي ٽيسٽ انفراسٽرڪچر کي ترتيب ڏنو، پر ان حقيقت جي ڪري ته ڊيپلائيمينٽ جو ڪاروباري منطق عمل درآمد کان الڳ هو، اسان بغير ڪنهن پريشاني جي baremetall ۾ رولنگ شامل ڪيو.
Liskov متبادل اصول
باربرا ليسڪوف جي متبادل جو اصول. پروگرام ۾ شيون لازمي طور تي تبديل ٿيڻ گهرجن انهن جي ذيلي قسم جي مثالن سان پروگرام جي صحيح عمل کي تبديل ڪرڻ کان سواء
جيڪڏهن توهان ان کي وڌيڪ وسيع طور تي ڏسو، اهو ڪنهن خاص منصوبي جي خاصيت ناهي جنهن کي اتي لاڳو ڪري سگهجي ٿو سولڊ, اهو عام طور تي CFM بابت آهي، مثال طور، ڪنهن ٻئي منصوبي تي مختلف جاوا، ايپليڪيشن سرورز، ڊيٽابيسس، او ايس وغيره جي مٿان هڪ باڪس ٿيل جاوا ايپليڪيشن کي ترتيب ڏيڻ ضروري آهي. هن مثال کي استعمال ڪندي، آئون وڌيڪ اصولن تي غور ڪندس سولڊ
اسان جي صورت ۾، انفراسٹرڪچر ٽيم جي اندر هڪ معاهدو آهي ته جيڪڏهن اسان نصب ڪيو آهي imbjava يا oraclejava ڪردار، پوء اسان وٽ هڪ جاوا بائنري قابل عمل آهي. اهو ضروري آهي ڇاڪاڻ ته اپ اسٽريم ڪردار هن رويي تي منحصر آهن؛ اهي جاوا جي توقع ڪن ٿا. ساڳئي وقت، هي اسان کي اجازت ڏئي ٿو ته هڪ جاوا لاڳو ڪرڻ/ورجن کي ٻئي سان تبديل ڪرڻ جي بغير ايپليڪيشن جي ترتيب واري منطق کي تبديل ڪرڻ جي.
هتي مسئلو اهو آهي ته جواب ۾ ان تي عمل ڪرڻ ناممڪن آهي، جنهن جي نتيجي ۾ ٽيم جي اندر ڪجهه معاهدو ظاهر ٿئي ٿو.
شروعات ۾، اسان ڪوشش ڪئي ته ايپليڪيشن جي ترتيب جي سڀني تبديلين کي ھڪڙي جوابي پلے بڪ ۾، پر ان کي سپورٽ ڪرڻ ڏکيو ھو، ۽ اھو طريقو جڏھن اسان وٽ ھڪڙو خارجي انٽرفيس بيان ڪيو ويو آھي (ڪلائنٽ جي توقع آھي پورٽ 443)، پوء ھڪڙي انفراسٹرڪچر انفرادي کان گڏ ڪري سگھجي ٿو. هڪ خاص عمل لاء سرن.
انحصار جي ڦيرڦار جو اصول
انحصار جي ڦيرڦار جو اصول. اعليٰ سطحن تي ماڊلز کي هيٺين سطح تي ماڊلز تي ڀاڙيڻ نه گھرجي. ٻنهي قسمن جا ماڊل لازمي طور تي ڀاڙين ٿا. خلاصو تفصيل تي منحصر نه هجڻ گهرجي. تفصيلات لازمي طور تي خلاصن تي منحصر آهن.
هتي مثال هڪ اينٽي پيٽرن تي ٻڌل هوندو.
گراهڪن مان هڪ هڪ خانگي بادل هو.
اسان ڪلائوڊ اندر ورچوئل مشينون آرڊر ڪيون.
پر بادل جي فطرت جي ڪري، ايپليڪيشن جي ترتيب سان ڳنڍيل هئي جنهن ۾ هائپر وائيزر VM تي هو.
اهي. هاء-سطح جي ايپليڪيشن جي ٺهڻ واري منطق انحصار سان وهندي هئي هائپر وائيزر جي هيٺين سطح تي، ۽ هن جو مطلب اهو مسئلو هو جڏهن هن منطق کي ٻيهر استعمال ڪندي. هن طريقي سان نه ڪريو.
لهه وچڙ
بنيادي ڍانچي جي طور تي ڪوڊ نه رڳو ڪوڊ بابت، پر ڪوڊ ۽ ماڻهن جي وچ ۾ لاڳاپن بابت، انفراسٽرڪچر ڊولپرز جي وچ ۾ رابطي جي باري ۾.
بس عنصر
اچو ته فرض ڪريو ته توهان وٽ توهان جي منصوبي تي Vasya آهي. واسيا توهان جي انفراسٽرڪچر بابت سڀ ڪجهه ڄاڻي ٿو، ڇا ٿيندو جيڪڏهن واسيا اوچتو غائب ٿي وڃي؟ اها هڪ تمام حقيقي صورتحال آهي، ڇاڪاڻ ته هو هڪ بس سان ماريو وڃي ٿو. ڪڏهن ڪڏهن ائين ٿيندو آهي. جيڪڏهن ائين ٿئي ٿو ۽ ڪوڊ بابت ڄاڻ، ان جي جوڙجڪ، اهو ڪيئن ڪم ڪري ٿو، ظاهر ۽ پاسورڊ ٽيم ۾ ورهايل نه آهي، ته پوء توهان کي ڪجهه ناپسنديده حالتن سان منهن ڏئي سگهي ٿو. انهن خطرن کي گهٽائڻ ۽ ٽيم جي اندر علم کي ورهائڻ لاءِ، توهان مختلف طريقا استعمال ڪري سگهو ٿا
Pair Devopsing
اهو پسند نه آهي هڪ مذاق طور، ته منتظمين بيئر پيئندا، پاسورڊ تبديل ڪيا، ۽ جوڙي پروگرامنگ جو هڪ اينالاگ. اهي. ٻه انجنيئر هڪ ڪمپيوٽر، هڪ ڪيبورڊ تي ويٺا ۽ توهان جي انفراسٽرڪچر کي گڏ ڪرڻ شروع ڪيو: هڪ سرور قائم ڪرڻ، هڪ جوابي ڪردار لکڻ، وغيره. اهو سٺو لڳندو آهي، پر اهو اسان لاء ڪم نه ڪيو. پر هن مشق جي خاص ڪيس ڪم ڪيو. هڪ نئون ملازم اچي ٿو، هن جو مرشد ساڻس گڏ هڪ حقيقي ڪم تي وٺي ٿو، ڪم ڪري ٿو ۽ علم کي منتقل ڪري ٿو.
ٻيو خاص ڪيس هڪ واقعو ڪال آهي. هڪ مسئلي جي دوران، فرض تي انهن جو هڪ گروپ ۽ انهن ۾ ملوث ماڻهن کي گڏ ڪري، هڪ اڳواڻ مقرر ڪيو ويو آهي، جيڪو پنهنجي اسڪرين کي حصيداري ڪري ٿو ۽ سوچ جي ٽرين کي آواز ڏئي ٿو. ٻيا شرڪت ڪندڙ ليڊر جي خيالن جي پيروي ڪن ٿا، ڪنسول مان چالن تي جاسوسي ڪن ٿا، چيڪ ڪريو ته انهن لاگ ۾ هڪ لڪير نه وڃايو آهي، ۽ سسٽم بابت نئين شيون سکو. اهو طريقو گهڻو ڪري نه کان وڌيڪ ڪم ڪيو.
ڪوڊ جو جائزو
بنيادي طور تي، انفراسٹرڪچر بابت ڄاڻ کي ڦهلائڻ لاء وڌيڪ اثرائتو هو ۽ اهو ڪيئن ڪم ڪري ٿو ڪوڊ جائزو استعمال ڪندي:
انفراسٹرڪچر کي مخزن ۾ ڪوڊ ذريعي بيان ڪيو ويو آهي.
تبديليون هڪ الڳ شاخ ۾ ٿينديون آهن.
ضم ڪرڻ جي درخواست دوران، توھان ڏسي سگھو ٿا ڊيلٽا جي تبديلين جو انفراسٽرڪچر.
هتي خاص ڳالهه اها هئي ته نظرثاني ڪندڙ هڪ هڪ ڪري چونڊيا ويا، هڪ شيڊول جي مطابق، يعني. ڪجهه حد تائين امڪاني طور تي توهان انفراسٽرڪچر جي نئين حصي ۾ چڙهندا.
ڪوڊ جو انداز
وقت سان گڏ، تبصرا دوران تڪرار ظاهر ٿيڻ لڳو، ڇاڪاڻ ته ... جائزو وٺندڙن جو پنهنجو انداز هوندو هو ۽ نظرثاني ڪندڙن جي گردش انهن کي مختلف اسلوب سان اسٽيڪ ڪيو: 2 اسپيس يا 4، ڪيمل ڪيس يا snake_case. ان تي فوري طور تي عمل ڪرڻ ممڪن نه هو.
پهريون خيال اهو هو ته لينٽر استعمال ڪرڻ جي صلاح ڏيو، آخرڪار، هرڪو انجنيئر آهي، هرڪو هوشيار آهي. پر مختلف ايڊيٽرن، او ايس، آسان نه آهن
وقت گذري ٿو، ۽ اسان ان نتيجي تي پهتا آهيون ته جيڪي ڪجهه امتحان پاس نٿا ڪن، انهن کي ماسٽر ۾ داخل ٿيڻ جي اجازت نه آهي. وائيلا! اسان ايجاد ڪيو گرين بلڊ ماسٽر، جيڪو هڪ ڊگهي وقت تائين سافٽ ويئر ڊولپمينٽ ۾ مشق ڪيو ويو آهي:
هڪ الڳ شاخ ۾ ترقي جاري آهي.
ان سلسلي ۾ جاچ جاري آهي.
جيڪڏهن ٽيسٽ ناڪام ٿي، ڪوڊ ان کي ماسٽر ۾ نه ڪندو.
اهو فيصلو ڪرڻ تمام ڏکوئيندڙ هو، ڇاڪاڻ ته ... تمام گهڻو تڪرار پيدا ڪيو، پر اهو ان جي لائق هو، ڇاڪاڻ ته ... جائزو وٺڻ شروع ڪيو ضم ڪرڻ لاء درخواستون بغير انداز ۾ اختلاف، ۽ وقت سان گڏ مسئلن جي علائقن جو تعداد گھٽجڻ شروع ڪيو.
IaC جاچ
انداز جي چڪاس جي اضافي ۾، توھان استعمال ڪري سگھو ٿا ٻيون شيون، مثال طور، چيڪ ڪرڻ لاءِ ته توھان جو انفراسٽرڪچر اصل ۾ ٺھي سگھي ٿو. يا چيڪ ڪريو ته انفراسٽرڪچر ۾ تبديليون پئسن جي نقصان جو سبب نه بڻجنديون. هن جي ضرورت ڇو ٿي سگهي ٿي؟ سوال پيچيده ۽ فلسفياڻو آهي، اهو بهتر آهي ته هڪ ڪهاڻي سان جواب ڏيو ته ڪنهن نه ڪنهن طريقي سان پاور شيل تي هڪ آٽو اسڪيلر موجود هو جنهن حد جي حالتن کي نه چيڪ ڪيو => وڌيڪ VMs ٺاهيا ويا ضرورت کان وڌيڪ => ڪلائنٽ منصوبابندي کان وڌيڪ پئسا خرچ ڪيو. اهو تمام خوشگوار نه آهي، پر اهو ممڪن آهي ته هن غلطي کي اڳئين مرحلن تي پڪڙڻ لاء.
ڪو پڇي سگھي ٿو، پيچيده انفراسٽرڪچر کي اڃا وڌيڪ پيچيده ڇو بڻايو وڃي؟ بنيادي ڍانچي لاءِ ٽيسٽ، جيئن ڪوڊ لاءِ، سادگي بابت نه آهن، پر اهو ڄاڻڻ بابت آهي ته توهان جي انفراسٽرڪچر کي ڪيئن ڪم ڪرڻ گهرجي.
IaC ٽيسٽنگ پرامڊ
IaC جاچ: جامد تجزيو
جيڪڏهن توهان هڪ ئي وقت سڄي انفراسٽرڪچر کي ترتيب ڏيو ۽ چيڪ ڪريو ته اهو ڪم ڪري ٿو، توهان شايد اهو ڳولي سگهو ٿا ته اهو تمام گهڻو وقت وٺندو آهي ۽ تمام گهڻو وقت جي ضرورت آهي. تنهن ڪري، بنياد اهو هجڻ گهرجي جيڪو جلدي ڪم ڪري، ان ۾ تمام گهڻو آهي، ۽ اهو تمام گهڻو ابتدائي هنڌن تي پکڙيل آهي.
بيش مشڪل آهي
اچو ته هڪ ننڍڙو مثال ڏسو. موجوده ڊاريڪٽري ۾ سڀ فائلون چونڊيو ۽ ٻئي هنڌ ڏانهن نقل ڪريو. پهرين شيء جيڪا ذهن ۾ اچي ٿي:
for i in * ; do
cp $i /some/path/$i.bak
done
ڇا جيڪڏهن فائل جي نالي ۾ هڪ جاء آهي؟ چڱو، ٺيڪ، اسان هوشيار آهيون، اسان ڄاڻون ٿا ته اقتباس ڪيئن استعمال ڪجي:
for i in * ; do cp "$i" "/some/path/$i.bak" ; done
بهترين؟ نه! ڇا جيڪڏھن ڊاريڪٽري ۾ ڪجھ به نه آھي، يعني. گلوبنگ ڪم نه ڪندو.
find . -type f -exec mv -v {} dst/{}.bak ;
چڱو ٿيو هاڻي؟ نه... وساري ڇڏيو ته فائل جي نالي ۾ ڇا ٿي سگهي ٿو n.
touch x
mv x "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir
جامد تجزيو جا اوزار
پوئين قدم کان مسئلو تڏهن پڪڙي سگهندو جڏهن اسان حوالن کي وساري ڇڏيون، ان لاءِ فطرت ۾ ڪيترائي علاج موجود آهن. شيل چيڪ، عام طور تي انهن مان تمام گهڻا آهن، ۽ گهڻو ڪري توهان ڳولي سگهو ٿا هڪ لينٽر توهان جي اسٽيڪ لاءِ توهان جي IDE هيٺ.
def test_default_users(host):
users = ['test1', 'test2' ]
for login in users:
assert host.user(login).exists
assert 'sshusers' in host.user(login).groups
ڇا چونڊڻ لاء؟ سوال پيچيده ۽ مبہم آهي، هتي 2018-2019 لاءِ گيٿب تي منصوبن ۾ تبديلين جو هڪ مثال آهي:
IaC جاچ فريم ورڪ
سوال پيدا ٿئي ٿو: اهو سڀ ڪجهه گڏ ڪيئن ڪجي ۽ ان کي لانچ ڪجي؟ ڪري ان کي وٺو ۽ اهو پنهنجو پاڻ ڪريو جيڪڏهن انجنيئرن جو ڪافي تعداد آهي. يا توهان تيار ڪيل حل وٺي سگهو ٿا، جيتوڻيڪ انهن مان تمام گهڻا نه آهن:
عام طور تي ڳالهائڻ، اسان سسٽم جي انفرادي عنصر جي ڪارڪردگي جي جانچ نه ڪندا آهيون جيئن يونٽ ٽيسٽ ۾، اسان چيڪ ڪريون ٿا ته سرور ڪيئن مڪمل طور تي ترتيب ڏنل آهي.
IaC جاچ: آخر کان آخر تائين ٽيسٽ
پرامڊ جي چوٽي تي اسان کي سلام ڪيو ويو آهي آخر کان آخر تائين ٽيسٽ. اهي. اسان هڪ الڳ سرور، هڪ الڳ اسڪرپٽ، يا اسان جي انفراسٽرڪچر جي هڪ الڳ اينٽي جي ڪارڪردگي جي جانچ نه ڪندا آهيون. اسان چيڪ ڪريون ٿا ته ڪيترائي سرور هڪٻئي سان ڳنڍيل آهن، اسان جو انفراسٽرڪچر ڪم ڪري ٿو جيئن اسان ان جي توقع ڪندا آهيون. بدقسمتي سان، مون ڪڏهن به تيار ٿيل باڪس ٿيل حل نه ڏٺا آهن، شايد ڇاڪاڻ ته ... انفراسٽرڪچر اڪثر ڪري منفرد ۽ مشڪل هوندو آهي ٽيمپليٽ ڪرڻ ۽ ٽيسٽ لاءِ فريم ورڪ ٺاهڻ. نتيجي طور، هرڪو پنهنجو حل ٺاهي ٿو. طلب آهي، پر جواب ڪونھي. تنهن ڪري، مان توهان کي ٻڌايان ٿو ته ٻين کي آوازن جي سوچن ڏانهن ڌڪڻ يا منهنجي نڪ کي رگڻ جي حقيقت اها آهي ته هر شيء اسان کان گهڻو اڳ ايجاد ڪئي وئي هئي.
هڪ امير تاريخ سان هڪ منصوبو. اهو وڏين تنظيمن ۾ استعمال ٿيندو آهي ۽ شايد توهان مان هر هڪ اڻ سڌي طرح ان سان گڏ رستا پار ڪري چڪو آهي. ايپليڪيشن ڪيترن ئي ڊيٽابيس، انضمام، وغيره کي سپورٽ ڪري ٿي. اهو ڄاڻڻ ته انفراسٽرڪچر ڪهڙي طرح نظر اچي سگهي ٿو تمام گهڻيون ڊاڪر-ڪپوز فائلون، ۽ اهو ڄاڻڻ ته ڪهڙيون ٽيسٽون هلائڻيون آهن ڪهڙي ماحول ۾ جينڪنز.
هن اسڪيم ڪافي وقت تائين ڪم ڪيو، جيستائين فريم ورڪ اندر تحقيق اسان هن کي Openshift ڏانهن منتقل ڪرڻ جي ڪوشش نه ڪئي آهي. ڪنٽينر ساڳيا رهندا، پر لانچ ماحول تبديل ٿي چڪو آهي (هيلو DRY ٻيهر).
تحقيق جو خيال اڳتي وڌيو، ۽ اوپن شفٽ ۾ هنن کي APB (Ansible Playbook Bundle) جهڙي شيءِ ملي ٿي، جيڪا توهان کي معلومات پيڪ ڪرڻ جي اجازت ڏئي ٿي ته انفراسٽرڪچر کي ڪنٽينر ۾ ڪيئن لڳايو وڃي. اهي. بنيادي ڍانچي کي ڪيئن ترتيب ڏيڻ جي باري ۾ ڄاڻ جو هڪ ٻيهر قابل، آزمائشي نقطو آهي.
اهو سڀ ڪجهه سٺو لڳندو هو جيستائين اسان هڪ متضاد انفراسٽرڪچر ۾ ڀڄي ويا: اسان کي ٽيسٽ لاءِ ونڊوز جي ضرورت هئي. نتيجي طور، جينڪنز ۾ ڇا، ڪٿي، ڪيئن ترتيب ڏيڻ، ۽ ٽيسٽ جي ڄاڻ آهي.