विकास पर्यावरण सेटअप को स्वचालित कैसे करें? [बन्द है]


80

हर बार जब कोई नया डेवलपर टीम में शामिल होता है या कंप्यूटर एक डेवलपर बदलाव का उपयोग कर रहा होता है, तो डेवलपर को वर्तमान प्रोजेक्ट कार्य करने के लिए स्थानीय विकास परिवेश को सेटअप करने के लिए बहुत सारे काम करने की आवश्यकता होती है। एक SCRUM टीम के रूप में हम तैनाती और परीक्षण सहित सब कुछ स्वचालित करने की कोशिश कर रहे हैं, इसलिए मैं जो पूछ रहा हूं वह है: क्या स्थानीय विकास पर्यावरण सेटअप को स्वचालित बनाने के लिए एक उपकरण या एक अभ्यास है?

उदाहरण के लिए अपने वातावरण को स्थापित करने के लिए, पहले मुझे ग्रहण स्थापित करना था, फिर SVN, Apache, Tomcat, MySQL, PHP। उसके बाद मैंने DB को आबाद किया और मुझे विभिन्न विन्यास फाइल आदि में मामूली बदलाव करने पड़े ... क्या इस श्रम को एक-क्लिक में कम करने का कोई तरीका है?

जवाबों:


68

कई विकल्प हैं, और कभी-कभी इनमें से एक संयोजन उपयोगी होता है:

  • स्वचालित स्थापना
  • डिस्क इमेजिंग
  • वर्चुअलाइजेशन
  • स्रोत कोड नियंत्रण

विभिन्न विकल्पों पर विवरण:

  1. स्थापना स्वचालित स्थापना और एक कार्य केंद्र के विभिन्न सेवाओं, उपकरण और config फाइल के विन्यास को स्वचालित के लिए उपकरण:

    • कठपुतली में सीखने की अवस्था है, लेकिन शक्तिशाली है। आप मशीनों (विकास बॉक्स, वेब सर्वर, आदि) की कक्षाओं को परिभाषित करते हैं और यह तब करता है जो बॉक्स को उचित स्थिति में स्थापित करने, कॉन्फ़िगर करने और रखने के लिए आवश्यक है। आपने एक-क्लिक के लिए कहा, लेकिन डिफ़ॉल्ट रूप से कठपुतली शून्य-क्लिक है, क्योंकि यह समय-समय पर यह सुनिश्चित करने के लिए आपकी मशीन को समय-समय पर कॉन्फ़िगर करता है। यह पता लगाएगा कि फ़ाइल या मोड कब बदला गया है, और समस्या को ठीक करें। मैं वर्तमान में RedHat लिनक्स बॉक्स के एक मुट्ठी भर को बनाए रखने के लिए इसका उपयोग करता हूं, हालांकि यह हजारों को संभालने में सक्षम है। (2009-05-08 के अनुसार विंडोज का समर्थन नहीं करता है)।
    • कैफीन एक और एक है। मैंने देखा है कि यह RedHat Linux का उपयोग करके 70 इंजीनियरों के साथ एक दुकान पर सफलतापूर्वक उपयोग किया गया है। इसकी सीमाएं कठपुतली के कारण का हिस्सा थीं।
    • स्मार्टफ्रॉग मेजबानों को कॉन्फ़िगर करने का एक और उपकरण है। यह विंडोज को सपोर्ट करता है।
    • शैल लिपि। राइटस्केल में शेल स्क्रिप्ट का उपयोग करके अमेज़ॅन ईसी 2 छवि को कॉन्फ़िगर करने के तरीके के उदाहरण हैं।
    • पैकेज स्थापित करें। एक यूनिक्स बॉक्स पर यह पूरी तरह से पैकेज के साथ करना संभव है, और विंडोज पर एमएसआई एक विकल्प हो सकता है। उदाहरण के लिए, रूबीवर्क्स आपको रेल स्टैक पर एक पूर्ण रूबी प्रदान करता है, सभी एक पैकेज स्थापित करके जो निर्भरता के माध्यम से अन्य पैकेजों को स्थापित करता है।
  2. डिस्क छवियां निश्चित रूप से एक कॉन्फ़िगर होस्ट की छवि को संग्रहीत करने के लिए डिस्क इमेजिंग उपकरण भी हैं जैसे कि इसे किसी अन्य होस्ट पर पुनर्स्थापित किया जा सकता है। वर्चुअलाइजेशन के साथ, यह विशेष रूप से टेस्ट बॉक्स के लिए अच्छा है, क्योंकि चीजों को एक साफ स्लेट पर पुनर्स्थापित करना आसान है। चीजों को लगातार अप-टू-डेट रखना अभी भी एक मुद्दा है - क्या यह केवल विन्यास फाइल परिवर्तन को प्रचारित करने के लिए नई छवियां बनाने के लायक है?

  3. वर्चुअलाइजेशन एक और विकल्प है, उदाहरण के लिए नए होस्ट बनाने के लिए एक्सपी, वर्चुअलपीसी या वीएमवेयर इमेज की प्रतियां बनाना। यह विशेष रूप से टेस्ट बॉक्स के साथ उपयोगी है, क्योंकि कोई फर्क नहीं पड़ता कि एक परीक्षण क्या गड़बड़ करता है, आप आसानी से एक साफ, ज्ञात स्थिति में बहाल कर सकते हैं। डिस्क इमेजिंग टूल के साथ, मेजबानों को अप-टू-डेट रखने से एक स्वचालित स्थापित / कॉन्फ़िगर टूल का उपयोग करने की तुलना में अधिक मैन्युअल चरणों और सतर्कता की आवश्यकता होती है।

  4. स्रोत कोड नियंत्रण एक बार जब आप आवश्यक उपकरण स्थापित / कॉन्फ़िगर कर लेते हैं, तो बिल्ड करना यह जांचने का विषय होना चाहिए कि स्रोत कोड रिपॉजिटरी से क्या आवश्यक है और इसका निर्माण करना है।

वर्तमान में मैं इस प्रक्रिया को स्वचालित करने के लिए उपरोक्त के संयोजन का उपयोग करता हूं:

  • एक VMWare अतिथि पर एक बेयरबोन ओएस स्थापित के साथ शुरू करें
  • कठपुतली को स्थापित करने और स्रोत कोड नियंत्रण से इसके कॉन्फ़िगरेशन को पुनः प्राप्त करने के लिए एक शेल स्क्रिप्ट चलाएं
  • उपकरण / घटक / विन्यास स्थापित करने के लिए कठपुतली
  • हमारे वेब एप्लिकेशन को बनाने और तैनात करने के लिए स्रोत कोड नियंत्रण से फ़ाइलें देखें

हमारे कार्यालय में खिड़कियां, लाइनक्स और मैक ओएस हैं। इसलिए मैं वर्चुअलाइजेशन विकल्प चुनूंगा।
nimcap

हम वर्चुअलाइजेशन के साथ उड़ान भरते हैं और यह एक अच्छा उपाय है। जब मैंने इसे शुरू करने के लिए 3-4 दिन की शुरुआत की तो अब नए देवों को एक वीपीसी छवि की नकल करने में लगने वाला समय मिल गया।
बर्ट

5
क्या आपने agile.dzone.com/articles/4-methods-automate-development लिखा था क्योंकि यह बहुत समान लगता है?
एरोन डी

5
नहीं, मैंने वह लेख नहीं लिखा, हालांकि समानता से देखते हुए, ऐसा प्रतीत होता है कि मैंने इसे प्रेरित किया। :-)
पीट टेरमैट


20

मैं इस सवाल पर अड़ गया और बहुत आश्चर्यचकित था कि किसी ने अभी तक वैग्रंट का उल्लेख नहीं किया है।

आवारा

जैसा कि पीट टेरामैट और अन्य ने उल्लेख किया है, वर्चुअलाइजेशन विकास के वातावरण को प्रबंधित और स्वचालित करने का एक शानदार तरीका है। वैग्रेंट मूल रूप से दर्द को इन आभासी बक्से की स्थापना से दूर ले जाता है।

मिनटों के भीतर आपके पास अपने पसंदीदा लिनक्स डिस्ट्रो की पूरी तरह से ताज़ा प्रतिलिपि हो सकती है और चल सकती है, और ठीक उसी तरह से प्रावधान किया जा सकता है जिस तरह से आपका उत्पादन सर्वर है।

PHP, MySQL, आदि को स्थापित करने के लिए OSX या विंडोज के साथ कोई और लड़ाई नहीं। सभी सॉफ्टवेयर वर्चुअल मशीन के अंदर रहते हैं और चलते हैं। आप इसमें एसएसएच भी कर सकते हैं vagrant ssh। यदि आप कोई गलती करते हैं या कुछ तोड़ते हैं, तो बस vagrant destroy, और vagrant upनए सिरे से शुरुआत करने के लिए।

वैग्रंट स्वचालित रूप से आपके स्थानीय फ़ाइल सिस्टम में एक सिंक फ़ोल्डर बनाता है, जिसका अर्थ है कि आपको वर्चुअल मशीन (यानी विम का उपयोग करके) के भीतर विकसित करने की आवश्यकता नहीं है। अपनी पसंद के संपादक का उपयोग करें।

अब मैं लगभग हर प्रोजेक्ट के लिए एक नया "वैग्रेंट बॉक्स" बनाता हूं। मेरी सभी सेटिंग्स प्रोजेक्ट रिपॉजिटरी में सहेजी गई हैं, इसलिए टीम के किसी अन्य सदस्य को लाना आसान है। उन्हें बस रेपो खींचना है, और दौड़ना है vagrant up, और वे सचमुच जाने के लिए तैयार हैं।

यह उन परियोजनाओं को भी संभालना आसान बनाता है जिनकी सॉफ्टवेयर आवश्यकताएं अलग-अलग हैं। हो सकता है कि आपके पास कुछ प्रोजेक्ट्स हों जो PHP 5.3 पर निर्भर हों, लेकिन कुछ नए जो PHP 5.4 चलाते हैं। बस उस प्रोजेक्ट के लिए इच्छित संस्करण स्थापित करें।

इसकी जांच - पड़ताल करें!


1
डीबगिंग वर्चुअलाइज्ड वातावरण में एक दर्द हो सकता है
जोनाथन

13

एक महत्वपूर्ण बिंदु अपनी परियोजनाओं को स्रोत नियंत्रण में स्थापित करना है, ताकि आप चेकआउट के बाद तुरंत निर्माण, तैनाती और भाग ले सकें।

इसका मतलब है कि आपको मेकइफाइल्स, चींटी बिल्डफाइल्स आदि जैसे हेल्पर इन्फ्रास्ट्रक्चर की भी जांच करनी चाहिए, और टूल्स के लिए सेटिंग्स, जैसे कि आईडीई प्रोजेक्ट फाइल्स।

व्यक्तिगत परियोजनाओं के लिए सेटअप परेशानी का ध्यान रखना चाहिए।

मूल मशीन सेटअप के लिए, आप एक मानक छवि का उपयोग कर सकते हैं। एक अन्य विकल्प आपके प्लेटफॉर्म के टूल का उपयोग इंस्टॉलेशन को स्वचालित करने के लिए करता है। लिनक्स के तहत, आप एक मेटा-पैकेज बना सकते हैं जो आपके लिए आवश्यक सभी पैकेजों पर निर्भर करता है। विंडोज के तहत, MSI या जैसे का उपयोग करके एक समान चीज संभव होनी चाहिए।

संपादित करें:

आदर्श रूप से, हेल्पर इन्फ्रास्ट्रक्चर में जांच के बजाय, आप उस जानकारी की जांच करते हैं जो बिल्ड को हेल्पर इन्फ्रास्ट्रक्चर उत्पन्न करने की अनुमति देती है । यह जीएनयू बिल्ड सिस्टम (ऑटोटूलस आदि), या मावेन द्वारा लिया गया दृष्टिकोण है। यह और भी अधिक सुरुचिपूर्ण है, क्योंकि आप (सैद्धांतिक रूप से) किसी भी (समर्थित) बिल्ड वातावरण के लिए बुनियादी ढाँचा उत्पन्न कर सकते हैं, इस प्रकार आप एक विशिष्ट आईडीई के लिए बाध्य नहीं हैं, और सहायक बुनियादी ढांचे (पथ आदि) में सेटिंग्स को डुप्लिकेट करने की आवश्यकता नहीं है। मुख्य परियोजना सेटिंग्स।

हालाँकि, यह एक अधिक जटिल दृष्टिकोण है, इसलिए यदि आप इसे काम करने के लिए नहीं कर सकते हैं, तो मेरा मानना ​​है कि आईडीई फ़ाइलों जैसे सामानों की सीधे जाँच स्वीकार्य है।


7

मैं विकास के माहौल को आभासी करने के लिए वर्चुअल पीसी या वीएमवेयर का उपयोग करना पसंद करता हूं। यह एक मानक "देव वातावरण" प्रदान करता है जिसे डेवलपर्स के बीच साझा किया जा सकता है। आपको सॉफ़्टवेयर के बारे में चिंता करने की ज़रूरत नहीं है जो उपयोगकर्ता अपने सिस्टम में जोड़ सकता है जो आपके विकास के वातावरण के साथ संघर्ष कर सकता है। यह मुझे दो परियोजनाओं पर काम करने का एक तरीका भी प्रदान करता है जहां विकास वातावरण दोनों एक प्रणाली पर नहीं हो सकते हैं (एक कोर प्रौद्योगिकी के दो अलग-अलग संस्करणों का उपयोग करके)।


क्या VirtualPc / VMWare वातावरण में चलने से प्रदर्शन प्रभावित होता है? क्या आप Visual Studio 2008 का उपयोग करते हैं?
जोएल गौरेवु

मैं कम से कम एक बड़े सॉफ्टवेयर देव की दुकान के बारे में जानता हूं जो अपने विकास के सभी VM (VMWare) में विशेष रूप से करते हैं। सीपीयू को हार्डवेयर वर्चुअलाइजेशन सपोर्ट ...
टॉमफैनिंग

आपको कंप्यूटर नाम के संघर्ष से सावधान रहना होगा। जब एक ही नेटवर्क पर एक ही नाम वाली दो मशीनें दिखाई देती हैं, तो विंडोज बहुत खुश नहीं होती है। मैं भी एक VM में अपने देव वातावरण नहीं है पसंद करते हैं। ओवरहेड वास्तव में मेरे प्रदर्शन को नीचे खींच सकता है।
कीवेल्ली

2
हम पूरी तरह से वर्चुअलाइज्ड देव वातावरण का उपयोग करते हैं। हम Vista VMs को होस्ट करने के लिए VMServer या VirtualBox का उपयोग करते हैं। VM छवि में हमारा संपूर्ण विकास स्टैक है, लेकिन कॉर्प डोमेन से जुड़ी नहीं है। जब एक उपयोगकर्ता को एक नई मशीन की आवश्यकता होती है, तो वे इसे स्थानीय रूप से कॉपी करते हैं, NewSID चलाते हैं और फिर एक अद्वितीय मशीन नाम के साथ डोमेन में शामिल होते हैं। आधुनिक हार्डवेयर पर, कोई उल्लेखनीय प्रदर्शन गिरावट नहीं है। हम एक समाधान में ~ 20 सी ++ / सी # परियोजनाओं के साथ वीएस 200 का उपयोग करते हैं और यह सभी ठीक काम करता है।
कॉलिन डेसमंड

एक महान लाभ जो मैं वर्चुअलाइजेशन के साथ देखता हूं, वह वर्तमान स्थिति को बचाने की क्षमता है, ताकि जब आप इसे बाद में वापस आते हैं तो आप ठीक उसी तरह वापस लौटते हैं जैसे आप थे। एक नई देव मशीन स्थापित करने से संबंधित नहीं है, लेकिन एक वीएम का उपयोग करने का एक अच्छा दुष्प्रभाव है।
जोएल गौरेवु

3

अपने विकास और उत्पादन वातावरण दोनों को कॉन्फ़िगर करने के लिए कठपुतली का उपयोग करें । टॉप-नोच ऑटोमेशन सिस्टम का उपयोग करना आपके ऑप्स को स्केल करने का एकमात्र तरीका है।


1

हमेशा वर्चुअल मशीनों का उपयोग करने का विकल्प होता है (उदाहरण के लिए VMWare प्लेयर देखें )। एक वातावरण बनाएं और प्रत्येक नए कर्मचारी के लिए आवश्यक न्यूनतम कॉन्फ़िगरेशन के साथ इसे कॉपी करें।


1

एक पूर्व स्थान पर हमारे पास सब कुछ था (और मेरा मतलब है कि सब कुछ) एससीएम में (स्पष्ट तो SVN)। जब एक नया डेवलपर वे ClearCase स्थापित कर सकते हैं | SVN और भंडार को चूसा। यह उस स्थिति को भी संभालता है जब आपको किसी विशेष परिवाद / उपकरण को अपडेट करने की आवश्यकता होती है क्योंकि आप सिर्फ देव टीमों को अपने वातावरण को अपडेट कर सकते हैं।

हमने इसके लिए दो रेपो का उपयोग किया इसलिए कोड और टूल्स / कॉन्फिग अलग-अलग जगहों पर रहते थे।


1

मैं अत्यधिक DevStructure से ब्लूप्रिंट की सिफारिश करता हूं। यह ओपन-सोर्स है और आपका उपयोग मामला वास्तव में सटीक कारण है जो हमने मूल रूप से सॉफ्टवेयर लिखा था। हमारे लक्ष्य कुछ हद तक बदल गए हैं, लेकिन यह अभी भी सही उपकरण है कि आप क्या वर्णन कर रहे हैं। संक्षेप में, आप पुन: प्रयोज्य सर्वर विन्यास बना सकते हैं - मृत सरल विन्यास प्रबंधन। आशा है कि ये आपकी मदद करेगा!

https://github.com/devstructure/blueprint (ब्लूप्रिंट @ गीथब)


1
क्या यह विकास के माहौल या सर्वर के बारे में है?
निमपैक किया

1

मैं खुद इस बारे में सोच रहा हूं। कुछ अन्य प्रौद्योगिकियां हैं जिन्हें आप मिश्रण में फेंक सकते हैं। यहाँ मैं वर्तमान में क्या स्थापित कर रहा हूँ:

  • पीएक्सई आधारित प्री-सीडेड इंस्टॉलेशन इमेज (डेबियन स्क्वीज़)। आप एक नंगे धातु मशीन (या नए आभासी उपकरण) को शुरू कर सकते हैं और पीएक्सई बूट मेनू से छवि का चयन कर सकते हैं। इससे भौतिक मशीनों (आभासी उपकरणों के अलावा) पर अपने वातावरण को स्थापित करने में सक्षम होने का प्रमुख लाभ है।
  • किसी ने पहले ही पपेट का उल्लेख किया है। मैं CFEngine का उपयोग करता हूं लेकिन यह एक समान सौदा है। अनिवार्य रूप से आपके कॉन्फ़िगरेशन को नीति फ़ाइलों में प्रलेखित और केंद्रीकृत किया जाता है जो क्लाइंट पर एक एजेंट द्वारा लगातार लागू किया जाता है।
  • यदि आप एक कठोर वातावरण नहीं चाहते हैं (यानी डेवलपर्स टूल-सेट का एक संयोजन चुन सकते हैं) तो आप अपने स्वयं के डेब्यू पैकेज को रोल कर सकते हैं ताकि नए देवता उदाहरण के लिए टाइप कर सकें sudo apt-get install acmecorp-eclipse-envया sudo apt-get install acmecorp-intellij-env
  • थोड़ा ऑफ-टॉपिक, लेकिन यदि आप एक डेबियन आधारित वातावरण (यानी उबंटू) चलाते हैं, तो इंस्टॉल apt-cacher(पैकेज प्रॉक्सी) पर विचार करें । बैंडविड्थ को बचाने के अलावा, यह आपके इंस्टॉलेशन को बहुत तेज़ बना देगा (क्योंकि आपके स्थानीय नेटवर्क पर पैकेज कैश्ड हैं)।


0

यदि आप एक मानक कॉन्फ़िगरेशन में मशीनों का उपयोग करते हैं, तो आप डिस्क को एक पूरी तरह से कॉन्फ़िगर की गई इंस्टॉल के साथ छवि दे सकते हैं - यह कई निगमों में एक बहुत लोकप्रिय दृष्टिकोण है (और न केवल डेवलपर्स के लिए, या तो)। यदि आपको अलग से कॉन्फ़िगर किए गए OS की आवश्यकता है, तो कॉन्फ़िगर किए गए OS को आपके इच्छित सेटअप में बदल देने के बाद आप सभी जोड़ी गई और बदली हुई फ़ाइलों को टार-बज़ 2 कर सकते हैं, और खरोंच से अपने वांछित वातावरण को बनाने के लिए इसे रूट के रूप में अनटार कर सकते हैं।


0

यदि आप एक linux स्वाद का उपयोग कर रहे हैं, तो आपको शायद एक पैकेज प्रबंधन प्रणाली मिल गई है: सोचता है। फेडोरा / रेडहैट के लिए .rpm, या ubuntu / debian के लिए .deb। आपके द्वारा पहले से उपलब्ध पैकेजों में से कई चीजें उपलब्ध हैं: svn, ग्रहण, आदि। आप कंपनी विशिष्ट सॉफ़्टवेयर के लिए अपने स्वयं के पैकेज रोल कर सकते हैं, एक रिपॉजिटरी बनाएं (शायद केवल स्थानीय नेटवर्क पर उपलब्ध हैं) और फिर आपका सेटअप एकल में कम किया जा सकता है। bash script जो कंपनी रेपो को /etc/apt/sources.list (debian / ubuntu) में जोड़ेगी और फिर एक कमांड को कॉल करेगी, जैसे,


/home/newhire$ apt-get update && apt-get install some complete package list

आप बिल्डबॉट का उपयोग कर सकते हैं और फिर कंपनी पैकेज के लिए नियमित बिल्ड को स्वचालित कर सकते हैं जो अक्सर बदलते हैं।


0

पर बाहर DevScript प्रयास करें http://nsnihalsahu.github.io/devscript । इसकी एक आदेश की तरह है, devscript lampया devscript laravelया devscript django। लगभग कुछ मिनटों में, आपके इंटरनेट सह की गति पर निर्भर करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.