कैसे सेटअप निर्भरता में निजी निर्भरता लिंक को संभाला जाना चाहिए


10

काम पर हम एक निजी pypi सर्वर का उपयोग करते हैं। यह pypi सर्वर एक निर्भरता लिंक के रूप में निर्दिष्ट किया गया है:

...
from setuptools import setup

config = ConfigParser.ConfigParser()
rc = os.path.join(os.path.expanduser('~'), '.pypirc')
config.read(rc)
dependency_links = [
    'https://{}:{}@<private_url>'.format(
        config.get('dc', 'username'), config.get('dc', 'password'))]

setup(
    dependency_links=dependency_links,
    ...)

यह हमारे अधिकांश मामलों में ठीक काम करता है। हालाँकि, कुछ समय पहले हमें क्लाइंट सर्वर पर पैकेज स्थापित करने थे। इसके लिए हमें .pypircकिसी भी पैकेज को स्थापित करने से पहले एक मान्य पर कॉपी करना होगा ।

इसके अलावा ऊपर कोड सिर्फ एक गंदा हैक की तरह लगता है।

हार्डकोडिंग क्रेडेंशियल के बिना सुरक्षित निर्भरता लिंक को निर्दिष्ट करने का उचित तरीका क्या है?


1
मुझे पता है तुम्हारा क्या मतलब है। यह हैक की गंदी नहीं है , लेकिन इसका मतलब है कि आप प्रति-पैकेज के आधार पर निर्भरता प्रबंधन के साथ प्रमाणीकरण को युग्मित कर रहे हैं। यह दृष्टिकोण पोर्टेबल या स्केलेबल नहीं है।
जोएल कॉर्नेट

जवाबों:


1

यह एक उचित और एक गंदा हैक की तरह नहीं लगता है।

  1. क्रेडेंशियल के लिए एक कॉन्फ़िगरेशन फ़ाइल है
  2. कस्टम URL + क्रेडिट को निर्भरता में इंजेक्ट करने का एक तरीका है

काम किया जा रहा है और अच्छी तरह से किया जा रहा है, इसे बेहतर बनाने का एकमात्र तरीका यह है कि इसे दस्तावेज किया जाए और इसे कई अलग-अलग सेटअपों पर या कई पीपीआई सर्वरों के साथ आज़माया जाए और इससे निकलने वाले मुद्दों का समाधान किया जाए।


0

एक संभावना पर्यावरण चर सेट किया जाएगा । यह एंसिबल जैसे परिनियोजन साधनों के साथ किया जा सकता है । स्टैक ओवरफ्लो के ब्लैकबॉक्स या Ansible के वॉल्ट के साथ अपने रहस्यों को संग्रहीत करना

वैकल्पिक रूप से: कंटेनरीकरण में मदद मिलेगी, क्योंकि सॉफ्टवेयर को चलाने के लिए आवश्यक सभी चीजों का निर्माण किया जाता है।


0

इस समाधान का उपयोग करते समय बहुत सावधान रहें। जैसा कि प्रलेखन में कहा गया है :

उन्हें .egg फ़ाइल को स्थापित करने के लिए EasyInstall जैसे उपकरणों के उपयोग के लिए अंडे के मेटाडेटा में भी लिखा जाएगा।

यानी, आपकी साख में वितरित किया जाएगा .eggsetuptoolsस्रोत कोड के माध्यम से रूट करके , मुझे पता चला कि आंतरिक रूप से यह easy_installनिर्भरता स्थापित करने के लिए कमांड का उपयोग कर रहा है । इसलिए, setup.cfgनिजी रेपो लेने के लिए निम्नलिखित कारणों को अपने साथ जोड़ना :

[easy_install]
index_url=https://username:password@your.repo/simple

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

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