Terraform 0.11 - Remote Service Discovery

रिमोट सर्विस डिस्कवरी




terraform

रिमोट सर्विस डिस्कवरी

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

उपयोगकर्ता का सामना करना पड़ होस्टनाम

टेराफॉर्म-देशी सेवाएं एक उपयोगकर्ता के दृष्टिकोण से, उपयोगकर्ता-सामना करने वाले "दोस्ताना होस्टनाम" पर प्रदान की जाती हैं, जो कॉन्फ़िगरेशन के लिए और किसी भी प्रमाणीकरण क्रेडेंशियल के लिए कुंजी के रूप में कार्य करता है।

खोज प्रोटोकॉल का उद्देश्य उपयोगकर्ता द्वारा प्रदान किए गए होस्टनाम से किसी विशेष सेवा के आधार URL तक मैप करना है। प्रत्येक मेजबान सेवाओं के विभिन्न संयोजन प्रदान कर सकता है - या कोई भी सेवाएं नहीं! - और इसलिए खोज प्रोटोकॉल में टेराफॉर्म को यह बताने का एक माध्यमिक उद्देश्य है कि किसी होस्टनाम के लिए कौन सी सेवाएं मान्य हैं।

उदाहरण के लिए, मॉड्यूल स्रोत स्ट्रिंग्स में उनके पहले खंड के रूप में एक मॉड्यूल रजिस्ट्री होस्टनाम शामिल हो सकता है, जैसे example.com/namespace/name/provider , और टेराफॉर्म सेवा खोज का उपयोग करता है यह निर्धारित करने के लिए कि example.com में एक मॉड्यूल रजिस्ट्री है, और यदि ऐसा है तो इसका API उपलब्ध है।

एक उपयोगकर्ता-सामना करने वाला होस्टनाम एक पूरी तरह से निर्दिष्ट अंतर्राष्ट्रीय डोमेन नाम है जिसे उसके यूनिकोड रूप में व्यक्त किया गया है (संबंधित "पनिशोड" फॉर्म की अनुमति नहीं है) जो DNS में एक HTTPS सर्वर है जो पोर्ट 443 पर चल रहा है एक पते पर resolvable होना चाहिए।

उपयोगकर्ता-सामना करने वाले होस्टनामों को मानक यूनिकोड Nameprep एल्गोरिथ्म का उपयोग करते हुए आंतरिक तुलना के लिए सामान्यीकृत किया Nameprep है, जिसमें Nameprep अक्षरों में सभी अक्षरों को परिवर्तित करना, जहां संभव हो, Nameprep रूप से डायक्रिटिक्स के संयोजन को सामान्य करना और विभिन्न अन्य सामान्यीकरण चरण शामिल हैं।

डिस्कवरी प्रक्रिया

एक होस्टनाम को देखते हुए, उस होस्टनाम का उपयोग करके https: स्कीम और निर्धारित पथ /.well-known/terraform.json साथ एक प्रारंभिक खोज URL बनाने से खोज शुरू होती है।

उदाहरण के लिए, hostname example.com को देखते हुए प्रारंभिक खोज URL https://example.com/.well-known/terraform.json होगा।

Terraform तब इस खोज URL पर GET अनुरोध भेजता है और JSON प्रतिक्रिया की अपेक्षा करता है। यदि प्रतिक्रिया में स्थिति 200 नहीं है, तो एक मीडिया प्रकार का application/json या, यदि शरीर को JSON ऑब्जेक्ट के रूप में पार्स नहीं किया जा सकता है, तो खोज विफल हो जाती है और Terraform होस्ट को किसी भी Terraform- देशी सेवाओं का समर्थन नहीं करने के लिए मानता है।

यदि प्रतिक्रिया HTTP पुनर्निर्देशित है तो टेराफॉर्म इस कदम को अपने खोज URL के रूप में नए स्थान पर दोहराता है। Terraform को कम से कम एक पुनर्निर्देशित का पालन करने की गारंटी है, लेकिन नेस्टेड पुनर्निर्देशन की गारंटी नहीं है और न ही अनुशंसित है।

यदि प्रतिक्रिया एक वैध JSON ऑब्जेक्ट है, तो इसकी कुंजी टेराफ़ॉर्म मूल सेवा पहचानकर्ता हैं, जिसमें एक सेवा प्रकार का नाम और एक अवधि द्वारा अलग किए गए संस्करण स्ट्रिंग शामिल हैं। उदाहरण के लिए, मॉड्यूल रजिस्ट्री प्रोटोकॉल के संस्करण 1 के लिए सेवा पहचानकर्ता मॉड्यूल modules.v1

प्रत्येक ऑब्जेक्ट तत्व का मान प्रश्न में सेवा के लिए आधार URL है। यह URL या तो निरपेक्ष या सापेक्ष हो सकता है, और यदि सापेक्ष इसे अंतिम खोज URL (पुनर्निर्देशन के बाद ) के विरुद्ध हल किया जाता है।

मॉड्यूल रजिस्ट्री प्रोटोकॉल के संस्करण 1 के लिए समर्थन की घोषणा करने वाला एक उदाहरण खोज दस्तावेज़ है:

{
  "modules.v1": "https://modules.example.com/v1/"
}

समर्थित सेवाएं

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

प्रमाणीकरण

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

खोज दस्तावेज में घोषित एंडपॉइंट्स को प्रमाणिकता भी प्रदान की जा सकती है, यह प्रश्न में सेवा की आवश्यकताओं पर निर्भर करता है।

उपयोगकर्ता-सामना करने वाले होस्टनाम में गैर-मानक पोर्ट

मानक HTTPS पोर्ट 443 पर होस्टनाम के लिए खोज दस्तावेज़ प्रदान करने के लिए दृढ़ता से अनुशंसा की जाती है। हालांकि, विकास के वातावरण में यह हमेशा संभव या सुविधाजनक नहीं होता है, इसलिए टेराफॉर्म एक होस्टनाम को पोर्ट विनिर्देश के साथ समाप्त करने की अनुमति देता है जिसमें एक बृहदान्त्र शामिल होता है। या अधिक दशमलव अंक।

जब कोई कस्टम पोर्ट नंबर मौजूद होता है, तो उस पोर्ट पर सेवा HTTPS को लागू करने और उसी निश्चित खोज पथ पर प्रतिक्रिया देने की अपेक्षा की जाती है।

दिन-प्रतिदिन के उपयोग के लिए इस तंत्र पर भरोसा करने और इसके बजाय मानक बंदरगाह पर खोज दस्तावेज़ प्रदान करने की दृढ़ता से अनुशंसा की जाती है, क्योंकि यह सबसे उपयोगकर्ता-अनुकूल होस्टनाम फ़ॉर्म का उपयोग करने की अनुमति देता है।