Terraform 0.11 - Command: init

आदेश: init




terraform

आदेश: init

terraform init कमांड का उपयोग टेराफॉर्म कॉन्फिगरेशन फाइल्स वाली वर्किंग डायरेक्टरी को इनिशियलाइज़ करने के लिए किया जाता है। यह पहला कमांड है जिसे एक नया टेराफ़ॉर्म कॉन्फ़िगरेशन लिखने या मौजूदा नियंत्रण से मौजूदा क्लोनिंग के बाद चलाया जाना चाहिए। इस कमांड को कई बार चलाना सुरक्षित है।

प्रयोग

उपयोग: terraform init [options] [DIR]

यह आदेश उपयोग के लिए एक कार्यशील निर्देशिका तैयार करने के लिए कई अलग-अलग इनिशियलाइज़ेशन चरणों को पूरा करता है। इन पर अधिक विवरण नीचे दिए गए अनुभागों में हैं, लेकिन ज्यादातर मामलों में इन व्यक्तिगत चरणों के बारे में चिंता करना आवश्यक नहीं है।

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

यदि कोई तर्क नहीं दिया जाता है, तो वर्तमान कार्यशील निर्देशिका में कॉन्फ़िगरेशन आरंभिक है। टेराफॉर्म को मौजूदा वर्किंग डायरेक्टरी के साथ सेट करने की सिफारिश की जाती है जो कॉन्फ़िगरेशन की रूट डायरेक्टरी में सेट हो, और DIR तर्क को छोड़ दें।

आम विकल्प

निम्नलिखित विकल्प प्रारंभिक चरण के सभी (या कई) पर लागू होते हैं:

  • यदि आवश्यक हो तो इनपुट -input=true पूछो। यदि गलत है, तो इनपुट की आवश्यकता होने पर त्रुटि होगी।

  • -lock=false राज्य से संबंधित कार्यों के दौरान राज्य फ़ाइलों की -lock=false लॉकिंग अक्षम करें।

  • -lock-timeout=<duration> उस समय को ओवरराइड करें जब टेराफॉर्म राज्य लॉक प्राप्त करने के लिए इंतजार करेगा। डिफ़ॉल्ट 0s (शून्य सेकंड) है, जो तत्काल विफल हो जाता है अगर ताला पहले से ही किसी अन्य प्रक्रिया द्वारा आयोजित किया गया हो।

  • -no-color कमांड आउटपुट में रंग कोड अक्षम करें।

  • -upgrade अपने संबंधित स्थापना चरणों के हिस्से के रूप में मॉड्यूल और प्लगइन्स को अपग्रेड करने का विकल्प। अधिक जानकारी के लिए नीचे दिए गए अनुभाग देखें।

स्रोत मॉड्यूल की प्रतिलिपि बनाएँ

डिफ़ॉल्ट रूप से, terraform init मानता है कि कार्यशील निर्देशिका में पहले से ही एक कॉन्फ़िगरेशन है और उस कॉन्फ़िगरेशन को प्रारंभ करने का प्रयास करेगा।

वैकल्पिक रूप से, init को -from-module=MODULE-SOURCE विकल्प के साथ एक खाली निर्देशिका के खिलाफ चलाया जा सकता है, जिस स्थिति में किसी अन्य इनिशियलाइज़ेशन चरण को चलाने से पहले दिए गए मॉड्यूल को लक्ष्य निर्देशिका में कॉपी किया जाएगा।

ऑपरेशन का यह विशेष मोड दो उपयोग-मामलों का समर्थन करता है:

  • एक संस्करण नियंत्रण स्रोत को देखते हुए, यह संस्करण नियंत्रण से कॉन्फ़िगरेशन की जांच करने और फिर इसके लिए कार्य निर्देशिका को प्रारंभ करने के लिए शॉर्टहैंड के रूप में काम कर सकता है।

  • यदि स्रोत एक उदाहरण कॉन्फ़िगरेशन को संदर्भित करता है, तो इसे नए कॉन्फ़िगरेशन के लिए आधार के रूप में उपयोग करने के लिए स्थानीय निर्देशिका में कॉपी किया जा सकता है।

नियमित उपयोग के लिए संस्करण नियंत्रण प्रणाली के स्वयं के आदेशों का उपयोग करते हुए, संस्करण नियंत्रण से कॉन्फ़िगरेशन को अलग से देखने की सिफारिश की जाती है। इस तरह से आवश्यक होने पर संस्करण नियंत्रण प्रणाली के लिए अतिरिक्त झंडे को पारित करना संभव है, और terraform init चलाने से पहले अन्य तैयारी चरणों (जैसे कॉन्फ़िगरेशन पीढ़ी, या क्रेडेंशियल्स को सक्रिय करना) करना संभव है।

बैकेंड इनिशियलाइज़ेशन

Init के दौरान, रूट कॉन्फ़िगरेशन निर्देशिका बैकएंड कॉन्फ़िगरेशन के लिए परामर्श की जाती है और चुने गए बैकएंड को दिए गए कॉन्फ़िगरेशन सेटिंग्स का उपयोग करके प्रारंभ किया जाता है।

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

बैकएंड कॉन्फ़िगरेशन को छोड़ने के लिए, -backend=false उपयोग करें। ध्यान दें कि कुछ अन्य init चरणों के लिए एक प्रारंभिक बैकएंड की आवश्यकता होती है, इसलिए इस ध्वज का उपयोग केवल तभी करने की सिफारिश की जाती है जब कार्य निर्देशिका पहले से ही किसी विशेष बैकेंड के लिए पहले से प्रारंभ की गई थी।

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

बाल मॉड्यूल स्थापना

Init के दौरान, कॉन्फ़िगरेशन को module ब्लॉक के लिए खोजा जाता है, और संदर्भित modules के स्रोत कोड को उनके source तर्क में दिए गए स्थानों से पुनर्प्राप्त किया जाता है।

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

चाइल्ड मॉड्यूल इंस्टॉलेशन को छोड़ने के लिए, -get=false उपयोग करें। ध्यान दें कि कुछ अन्य init चरणों को केवल तभी पूरा किया जा सकता है जब मॉड्यूल ट्री पूरा हो जाए, इसलिए इस ध्वज का उपयोग केवल तभी करने की अनुशंसा की जाती है जब कार्य निर्देशिका पहले से ही इसके चाइल्ड मॉड्यूल के साथ आरंभ में थी।

प्लगइन स्थापना

Init के दौरान, कॉन्फ़िगरेशन को providers प्रत्यक्ष और अप्रत्यक्ष दोनों संदर्भों के लिए खोजा जाता providers , और providers लिए प्लगइन्स को प्लगइन रिपॉजिटरी से पुनर्प्राप्त किया जाता है। डाउनलोड किए गए प्लग इन को वर्किंग डायरेक्टरी की एक उपनिर्देशिका में स्थापित किया गया है, और इस तरह उस वर्किंग डायरेक्टरी के लिए स्थानीय है।

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

प्लगइन इंस्टॉलेशन को छोड़ने के लिए, -get-plugins=false उपयोग करें।

स्वत: प्लगइन स्थापना व्यवहार को वांछित प्रदाताओं को स्थानीय निर्देशिका में निकालने और अतिरिक्त विकल्प -plugin-dir=PATH का उपयोग करके ओवरराइड किया जा सकता है। जब यह विकल्प निर्दिष्ट किया जाता है, तो केवल दी गई निर्देशिका से परामर्श किया जाता है, जो टेराफॉर्म को प्लग रिपॉजिटरी में अनुरोध करने या अन्य स्थानीय निर्देशिकाओं में प्लगइन्स की तलाश करने से रोकता है। एक रिक्त स्ट्रिंग को -plugin-dir किसी भी पहले से रिकॉर्ड किए गए पथ को हटा देता है।

कस्टम प्लगइन्स को स्वचालित रूप से इंस्टॉल किए गए प्लगइन्स के साथ terraform.d/plugins/OS_ARCH/ डायरेक्ट्री के अंदर इनिशियलाइज़ करके उपयोग किया जा सकता है। यदि वे कॉन्फ़िगरेशन में आवश्यक बाधाओं को पूरा करते हैं, तो यहां पाए गए प्लगइन्स पूर्वता लेंगे। init कमांड आवश्यकतानुसार अन्य प्लगइन्स को स्वचालित रूप से डाउनलोड करता रहेगा।

जब प्लग-इन स्वचालित रूप से डाउनलोड और इंस्टॉल किए जाते हैं, तो डिफ़ॉल्ट रूप से सामग्री को आधिकारिक HashiCorp रिलीज़ हस्ताक्षर के खिलाफ सत्यापित किया जाता है ताकि यह सुनिश्चित हो सके कि वे डाउनलोड के दौरान दूषित या छेड़छाड़ नहीं किए गए थे। टेराफ़ॉर्म को इन चेकों को बनाने की अनुमति देने की सिफारिश की गई है, लेकिन यदि वांछित है तो उन्हें विकल्प -verify-plugins=false का उपयोग करके अक्षम किया जा सकता है।

ऑटोमेशन में terraform init चल रहा है

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

इस तरह के वातावरण में init चलाते समय कुछ विशेष चिंताएं होती हैं, जिनमें बार-बार होने वाले री-इंस्टॉलेशन से बचने के लिए स्थानीय रूप से उपलब्ध प्लगइन्स को शामिल करना शामिल है। अधिक जानकारी के लिए, Running Terraform in Automation देखें।