2012-07-04 12 views
18

मैंने हेरोकू पर रेल का उपयोग करने का आनंद लिया है, और इस तरह मैं xyz.yml में परिवर्तन करने के बिना एक हेरोकू ऐप की कॉन्फ़िगरेशन प्रॉपर्टी समायोजित कर सकता हूं और पुन: नियोजित कर सकता हूं।12-कारक अनुप्रयोगों में कॉन्फ़िगरेशन प्रबंधित करना

मेरे रेल ऐप में पूरी तरह से Yaml कॉन्फ़िगरेशन फ़ाइलों को दूर करना अच्छा होगा, और ENV में कॉन्फ़िगरेशन को संग्रहीत करने के लिए जितना संभव हो उतना भरोसा करना अच्छा होगा। यह 12-factor config सिद्धांत के साथ चला जाता है।

हालांकि, यम्ल-आधारित कॉन्फ़िगरेशन प्रबंधन से हेरोकू/12-कारक-आधारित एक में स्विच करने में कुछ व्यापार-बंद हैं।

  • हालांकि यह सच है कि तैनाती (क्यूए, मंच, prod, देव, डेमो, लैब) का प्रसार YAML फ़ाइलों का प्रसार करने के लिए नेतृत्व कर सकते हैं, यह एक नया विन्यास प्रोफाइल बनाने के लिए कॉपी-पेस्ट करने के लिए बहुत आसान है। मुझे हेरोोकू में एक तैनाती से दूसरे पर 'कॉपी' कॉन्फ़िगरेशन प्रोफाइल का कोई तरीका नहीं दिख रहा है।
  • रेपो में कॉन्फ़िगरेशन डेटा संग्रहीत करना मतलब है कि, हेरोकू के मामले में, तैनाती और कॉन्फ़िगरिंग और एप्लिकेशन को एक ही ऑपरेशन में पूरा किया जाता है। अगर मैं अपनी कॉन्फ़िगरेशन को यमल फाइलों और एनएनवी चरों में ले जाना चाहता था, तो मुझे तैनाती के बाद एक अलग चरण में अपने एप्लिकेशन को कॉन्फ़िगर करना होगा।

उन लोगों से सुनना चाहते हैं जिन्होंने अपने निजी अनुप्रयोगों में 12-कारक शैली कॉन्फ़िगरेशन का उपयोग किया है, और उन्होंने बहुत से तैनाती में कितने कॉन्फ़िगरेशन चर प्रबंधित किए हैं।

  • आप एक नई तैनाती को तुरंत कैसे कॉन्फ़िगर करते हैं?
  • रेपो नहीं होने पर, आप कॉन्फ़िगरेशन चर के अपने आधिकारिक स्रोत को कहां रखते हैं? आप डेवलपर्स के बीच इसे कैसे वितरित करते हैं?

धन्यवाद!

उत्तर

4

आप इस के लिए कुछ सरल शेल स्क्रिप्ट के साथ अपेक्षाकृत आसान पूरा कर सकते हैं, Heroku config के माध्यम से मौजूदा चर पुनरावृति या Heroku जारी: जानकारी v99, और फिर सेट Heroku config: सेट k = वी --app

लेकिन अगर इसकी एक समस्या/दर्द/घर्षण शायद आपके एनवी var विन्यास के अंदर बहुत अधिक है।

+1

मैं हेरोकू के साथ काम नहीं करता, लेकिन मुझे लगता है कि किसी भी सास एप्लिकेशन पर 12 कारक लागू किए जा सकते हैं। मैं अपने परिवेशों पर उस कॉन्फ़िगरेशन को बनाने के लिए कस्टम शैल स्क्रिप्ट बना सकता हूं। लेकिन, इस पृष्ठभूमि के बाद, मेरा सवाल है: मेरे कॉन्फ़िगर वर्र्स बनाने में कोई सुरक्षा चिंता नहीं है, जैसे डाटाबेस एक्सेस 'डेटा, एनवी वर्र्स बनें? –

10

जो मैं आम तौर पर उपयोग करता हूं वह एनएमवी का उपयोग करके यमल है और डिफ़ॉल्ट प्रदान करता है। उदाहरण के लिए, YAML खुशी से अपने ENV शामिल करने के लिए किया जा सकता है ERB'ed वार्स:

YAML.load(ERB.new(File.read("#{Rails.root}/config/app_config.yml")).result) 

करने से:

foo: 
    var: ENV["MY_CONFIG"] || "default_value" 

तुम सिर्फ यकीन है कि तुम ERB साथ YAML लोड जब आप इसे पढ़ बनाने की जरूरत है यह आपका कोड देव में ठीक काम करता है, लेकिन आपको पर्यावरण में कॉन्फ़िगर वर्र्स भी सेट करने की अनुमति देता है।

0

देर से उत्तर देने वाला थोड़ा सा, लेकिन मुझे विश्वास है कि यह वही है जो आप खोज रहे हैं।

मैंने settei नामक एक मणि विकसित किया है, जिससे आप ऐप को कॉन्फ़िगर करने के लिए वाईएएमएल फाइलों का उपयोग कर सकते हैं। हालांकि मणि तैनाती के दौरान YAML फ़ाइल को एक पर्यावरण चर के रूप में क्रमबद्ध करेगा। इस तरह से दोनों दुनिया के सर्वश्रेष्ठ प्राप्त होते हैं: प्रबंधन की आसानी/व्युत्पन्न वातावरण बनाने के लिए वाईएएमएल, और 12-कारक अनुपालन के लिए एनएनवी।

संबंधित मुद्दे