कैसे निर्धारणीय और प्रतिलिपि प्रस्तुत करने योग्य ढंग से Ansible में पोर्ट संख्या बढ़ाने के लिए असाइन करें?


12

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

कई मामलों में मुझे लगता है कि मैं सेवा_नाम को चर के रूप में आसानी से पुन: उपयोग कर सकता हूं, लेकिन जब आईपी, पोर्ट या अन्य संख्यात्मक पहचानकर्ताओं को मैप कर रहा हूं, तो मुझे अभी तक यह पता लगाने का कोई तरीका नहीं मिला है कि उन्हें अलग-अलग संख्याओं के लिए एक तरह से प्रतिलिपि प्रस्तुत करने योग्य है, और अधिमानतः तरीका है नई सेवाओं को जोड़ने पर भी वही। मैंने सेवाओं को संग्रहीत करने और उनकी आईडी से मान उत्पन्न करने के लिए एक SQLite डेटाबेस का उपयोग करने पर विचार किया है, लेकिन मुझे अंदाजा नहीं है कि इसे कैसे एकीकृत किया जाए।

मैं मानता हूं कि बढ़ती पोर्ट संख्या को असाइन करना पूरी तरह से नया नहीं है; यह दिन-प्रतिदिन के आधार पर बहुत सारे sadadmins है इसलिए ऐसा करने का कोई तरीका होना चाहिए।

संपादित करें : हम सीधे group_vars/all.ymlइस तरह से पोर्ट नंबर आदि जोड़ते हैं :

ports:
    service1:1024
    service2:1025
    service3:1026

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


2
चूँकि आपको संभवतः इन्वेंट्री में सेवा को जोड़ना है, इसलिए आपको मैन्युअल रूप से एक विशिष्ट पोर्ट संख्या जोड़ने के लिए क्या रोक रहा है? या यदि आपकी इन्वेंट्री अपने आप जेनरेट हो जाती है, तो आपको इन्वेंट्री जेनरेशन लेवल पर समस्या का समाधान करना चाहिए
SztupY

क्या आप कुछ उत्तर देने योग्य स्निपेट शामिल करेंगे? यह स्पष्ट नहीं है कि आप group_varsइन्वेंट्री फ़ाइलों में चर का उपयोग कर रहे हैं या जोड़ रहे हैं । यह भी स्पष्ट नहीं है कि आपकी सूची कैसे बनाई जा रही है।
वुडलैंड हंटर

क्या आपने HashiCorp के कौंसुल जैसे सेवा खोज उपकरण का उपयोग करने पर विचार किया है?
फॉगहॉर्न सीटीओ

जवाबों:


5

अस्वीकरण: मैं Ansible का उपयोग नहीं कर रहा हूँ।

मैं क्या करूँगा एक यादृच्छिक "अनुमानित" संख्या का उपयोग करें। Ansible डॉक्टर के अनुसार आप यादृच्छिक संख्या जनरेटर को बीज कर सकते हैं:

2.3 संस्करण के रूप में, एक बीज से यादृच्छिक संख्या जनरेटर को शुरू करना भी संभव है। इस तरह, आप यादृच्छिक-लेकिन-बेरोजगार संख्या बना सकते हैं:

"{{59 | रैंडम (बीज = इन्वेंट्री_होस्टनेम)}}} * * * * रूट / स्क्रिप्ट / फ्रॉम / क्रोन"

तो पोर्ट नंबर के लिए आपके मामले में (मुझे लगता है कि अप्रकाशित) मैं कुछ इस तरह के साथ एक चर के लिए जाना होगा:

port="{{ 32767 |random(start=1024,seed=service_name) }}"

किसी भी क्लाइंट द्वारा शुरू किए गए पोर्ट के साथ टकराव से बचने के लिए 32767 पर अधिकतम ( कारण के लिए एपेमेरल पोर्ट देखें )।


यह एक अच्छा विचार है, जिसे मैंने माना था, लेकिन यह बढ़ते हुए भाग को असंभव बना देता है। कुछ सेवाओं का होना जो तार्किक रूप से एक निश्चित पोर्ट रेंज से संबंधित हैं, संभवतः बहुत ही वांछनीय है।
मध्याह्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.