टेराफॉर्म मॉड्यूल

Teraphorma Modyula



बुनियादी ढांचे के प्रावधान और प्रबंधन की दुनिया में, टेराफॉर्म डेवलपर्स और संचालन टीमों के बीच एक लोकप्रिय विकल्प के रूप में उभरा है। अपने घोषणात्मक सिंटैक्स (HCL - HashiCorp कॉन्फ़िगरेशन लैंग्वेज) और विभिन्न बुनियादी ढांचा प्रदाताओं के लिए समर्थन के साथ, टेराफॉर्म बुनियादी ढांचे-ए-कोड (IaC) प्रथाओं को सक्षम बनाता है।

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







टेराफॉर्म मॉड्यूल का परिचय

टेराफॉर्म मॉड्यूल टेराफॉर्म कॉन्फ़िगरेशन के स्व-निहित पैकेज हैं जो परिभाषित इनपुट और आउटपुट चर के साथ संसाधनों के एक सेट का प्रतिनिधित्व करते हैं। वे बुनियादी ढांचे के कोड को एनकैप्सुलेट करने और पुन: उपयोग करने का एक तरीका प्रदान करते हैं जो जटिल बुनियादी ढांचे की तैनाती के प्रबंधन और रखरखाव को आसान बनाता है।



मॉड्यूल को किसी प्रोजेक्ट के भीतर आंतरिक रूप से बनाया और उपयोग किया जा सकता है या कई परियोजनाओं या टीमों में साझा किया जा सकता है।



मॉड्यूल का संगठन

टेराफॉर्म मॉड्यूल को व्यवस्थित करते समय, एक पदानुक्रमित संरचना होना आम बात है जिसमें रूट और चाइल्ड मॉड्यूल शामिल होते हैं। आइए देखें कि यह संगठन कैसे काम करता है।





रूट मॉड्यूल



रूट मॉड्यूल हमारे टेराफ़ॉर्म कॉन्फ़िगरेशन में शीर्ष-स्तरीय मॉड्यूल का प्रतिनिधित्व करता है। यह समग्र बुनियादी ढांचे को परिभाषित करने और विभिन्न संसाधनों के बीच संबंधों के प्रबंधन के लिए प्रवेश बिंदु है।

रूट मॉड्यूल में आम तौर पर 'main.tf' फ़ाइल होती है जहां हम उन संसाधनों और कॉन्फ़िगरेशन को परिभाषित करते हैं जो हमारे बुनियादी ढांचे की नींव बनाते हैं। वैकल्पिक रूप से, हमारे पास इसके साथ 'variables.tf' और 'outputs.tf' फ़ाइलें हो सकती हैं। इसके अलावा, हम चाइल्ड मॉड्यूल तक आसानी से पहुंचने के लिए रूट डायरेक्टरी के भीतर अपनी 'मॉड्यूल' निर्देशिका को परिभाषित कर सकते हैं।

बाल मॉड्यूल

चाइल्ड मॉड्यूल मॉड्यूलर घटक होते हैं जो संसाधनों या कॉन्फ़िगरेशन के विशिष्ट सेट को समाहित करते हैं। इन्हें पुन: प्रयोज्य होने और बुनियादी ढांचे की कार्यक्षमता की स्व-निहित इकाइयों का प्रतिनिधित्व करने के लिए डिज़ाइन किया गया है।

चाइल्ड मॉड्यूल का उपयोग रूट या अन्य चाइल्ड मॉड्यूल के भीतर किया जा सकता है जो संरचना और जटिल बुनियादी ढांचे के निर्माण की अनुमति देता है। प्रत्येक चाइल्ड मॉड्यूल की आमतौर पर अपनी निर्देशिका होती है जिसमें आवश्यक कॉन्फ़िगरेशन फ़ाइलें जैसे 'main.tf', 'variables.tf', और 'outputs.tf' होती हैं।

अब, आइए देखें कि हम टेराफॉर्म मॉड्यूल कैसे बना सकते हैं।

टेराफॉर्म मॉड्यूल बनाना

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

आइए डॉकर का उपयोग करके स्थानीय वेब सर्वर को व्यवस्थित करने के लिए एक सरल मॉड्यूल का एक आसान उदाहरण लें। सबसे पहले, हम मॉड्यूल को 'मॉड्यूल' निर्देशिका में 'main.tf' के रूप में परिभाषित करते हैं।

संसाधन 'docker_container' 'वेब सर्वर' {
नाम = var.name
छवि = var.image
बंदरगाहों {
आंतरिक = var.internal_port
बाह्य = var.external_port
}
}

यहां, हम 'docker_container' नामक एक मॉड्यूल बनाते हैं जो कंटेनर नाम, डॉकर छवि, आंतरिक पोर्ट और बाहरी पोर्ट को इनपुट चर के रूप में लेता है। मॉड्यूल डॉकर कंटेनर संसाधन बनाने के लिए तर्क को समाहित करता है और कॉल करने वाले को कंटेनर के गुणों को अनुकूलित करने की अनुमति देता है।

जैसा कि निम्नलिखित छवि में दिखाया गया है, हम इनपुट वेरिएबल्स को परिभाषित करने के लिए 'मॉड्यूल' निर्देशिका में 'variables.tf' नामक एक अलग फ़ाइल बनाते हैं जिसे मॉड्यूल का उपयोग करते समय अनुकूलित किया जा सकता है:

चर 'नाम' {
वर्णन = 'डॉकर कंटेनर नाम'
प्रकार = स्ट्रिंग
}

चर 'छवि' {
वर्णन = 'डॉकर छवि'
प्रकार = स्ट्रिंग
}

चर 'आंतरिक बंदरगाह' {
वर्णन = 'डॉकर कंटेनर पर आंतरिक बंदरगाह'
प्रकार = संख्या
}

चर 'बाहरी_पोर्ट' {
वर्णन = 'नक्शा करने के लिए बाहरी बंदरगाह'
प्रकार = संख्या
}

यहां, हमने चार चर घोषित किए हैं, जिनमें से प्रत्येक में विशेषताएँ और प्रासंगिक मान 'विवरण' और 'प्रकार' हैं।

टेराफॉर्म मॉड्यूल का उपयोग करना

चूंकि हमने अपना मॉड्यूल बनाया है, अब हम इसके स्रोत का संदर्भ देकर इसे अपने मुख्य टेराफॉर्म कॉन्फ़िगरेशन में उपयोग कर सकते हैं। आइए अपनी मुख्य कॉन्फ़िगरेशन फ़ाइल बनाएं जो रूट डायरेक्टरी में 'main.tf' है।

मापांक 'वेबसर्वर_कंटेनर' {
स्रोत = '../मॉड्यूल/डॉकर_कंटेनर'
नाम               = 'मायवेबसर्वर'
छवि ‍ ‍ ‍ ‍ = 'nginx:नवीनतम'
आंतरिक_पोर्ट = 80
बाहरी_पोर्ट = 8080
}

हम डॉकर कंटेनर मॉड्यूल को इंस्टेंट करने के लिए पिछले कोड में 'मॉड्यूल' ब्लॉक का उपयोग करते हैं। हम मॉड्यूल के लिए आवश्यक इनपुट मान प्रदान करते हैं जैसे कंटेनर नाम, डॉकर छवि और पोर्ट कॉन्फ़िगरेशन। 'स्रोत' पैरामीटर 'मॉड्यूल' निर्देशिका के सापेक्ष पथ को निर्दिष्ट करता है।

इसके बाद, आइए देखें कि मॉड्यूल के साथ उपयोग करने के लिए टेराफॉर्म आउटपुट का उपयोग कैसे करें।

मॉड्यूल आउटपुट

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

आउटपुट 'कंटेनर_आईडी' {
वर्णन = 'निर्मित डॉकर कंटेनर की आईडी'
मान ‍ ‍ = docker_container.webserver.id
}

यहां, हमने 'मॉड्यूल' निर्देशिका के अंदर एक 'आउटपुट.tf' फ़ाइल बनाई। यह आउटपुट वैरिएबल डॉकर कंटेनर की आईडी को उजागर करता है जो मॉड्यूल के भीतर 'वेबसर्वर' नामक 'docker_container' संसाधन द्वारा बनाया गया है।

अब, हम अपनी रूट कॉन्फ़िगरेशन फ़ाइल में कंटेनर आईडी तक पहुंच सकते हैं। रूट निर्देशिका में 'main.tf' फ़ाइल के निम्नलिखित अद्यतन कोड को देखें:

मापांक 'वेबसर्वर_कंटेनर' {
स्रोत = '../मॉड्यूल/डॉकर_कंटेनर'
नाम               = 'मायवेबसर्वर'
छवि ‍ ‍ ‍ ‍ = 'nginx:नवीनतम'
आंतरिक_पोर्ट = 80
बाहरी_पोर्ट = 8080
}

संसाधन 'docker_volume' 'आंकड़े' {
# बाकी तर्क यहां दिए गए हैं
बाँधना = मॉड्यूल.वेबसर्वर_कंटेनर.कंटेनर_आईडी
}

'बाइंड' तर्क के मान के रूप में 'मॉड्यूल.वेबसर्वर_कंटेनर.कंटेनर_आईडी' का उपयोग करके, हम टेराफॉर्म को डॉकर वॉल्यूम को 'वेब_कंटेनर' मॉड्यूल के कंटेनर आईडी द्वारा निर्दिष्ट स्थान पर बांधने का निर्देश देते हैं। यह डॉकर वॉल्यूम संसाधन और 'वेबसर्वर_कंटेनर' मॉड्यूल द्वारा बनाए गए कंटेनर के बीच एक संबंध स्थापित करता है, यह सुनिश्चित करता है कि वॉल्यूम उचित स्थान पर माउंट किया गया है।

टेराफॉर्म मॉड्यूल के लिए सर्वोत्तम अभ्यास

पुन: प्रयोज्यता के लिए मॉड्यूलराइज़ करें

मॉड्यूल डिज़ाइन करते समय हमें पुन: प्रयोज्यता पर विचार करना चाहिए। साथ ही, हमें अपने बुनियादी ढांचे के तार्किक घटकों या पैटर्न की पहचान करनी चाहिए और उन्हें अलग-अलग मॉड्यूल में समाहित करना चाहिए। यह कोड के पुन: उपयोग, मानकीकरण और टीमों के बीच आसान सहयोग को बढ़ावा देता है।

स्पष्ट एवं सुसंगत नामकरण

मॉड्यूल, वेरिएबल और संसाधनों के लिए स्पष्ट और सुसंगत नामकरण परंपराओं का उपयोग करने से कोडबेस की पठनीयता और समझ में सुधार होता है जिससे दूसरों के लिए मॉड्यूल के साथ काम करना और उसे बनाए रखना आसान हो जाता है।

निर्भरता को अलग करें

हमें मॉड्यूल के बीच टाइट कपलिंग से बचना चाहिए। प्रत्येक मॉड्यूल को अपने स्वयं के संसाधनों और निर्भरताओं को समाहित करना चाहिए। यह सुनिश्चित करता है कि मॉड्यूल को स्वतंत्र रूप से पुन: उपयोग किया जा सकता है और बेहतर अलगाव और एनकैप्सुलेशन को बढ़ावा देता है।

संस्करण नियंत्रण और मॉड्यूल रजिस्ट्री

हम अपने मॉड्यूल को संस्करण-नियंत्रित रिपॉजिटरी या मॉड्यूल रजिस्ट्री में प्रकाशित कर सकते हैं। यह मॉड्यूल को साझा करने और खोजने के लिए एक केंद्रीकृत स्थान प्रदान करता है, जिससे आसान पहुंच और संस्करण सुनिश्चित होता है।

निष्कर्ष

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