Terraform 0.11 - State Storage and Locking

राज्य भंडारण और ताला




terraform

राज्य भंडारण और ताला

राज्य के भंडारण के लिए बैकेंड जिम्मेदार हैं और राज्य लॉकिंग के लिए एक एपीआई प्रदान करते हैं। स्टेट लॉकिंग वैकल्पिक है।

राज्य को दूरस्थ रूप से संग्रहीत किए जाने के बावजूद, सभी टेराफ़ॉर्म कमांड जैसे terraform console , terraform state ऑपरेशन, terraform taint , और अधिक काम करना जारी रखेंगे जैसे कि राज्य स्थानीय था।

राज्य भंडारण

बैकेंड निर्धारित करते हैं कि राज्य कहाँ संग्रहीत है। उदाहरण के लिए, डिस्क पर स्थानीय JSON फ़ाइल में स्थानीय (डिफ़ॉल्ट) बैकएंड स्टोर स्थिति। वाणिज्य दूतावास राज्य को कौंसुल के भीतर संग्रहीत करता है। ये दोनों बैकिंग लॉकिंग प्रदान करने के लिए होते हैं: सिस्टम एपीआई के माध्यम से स्थानीय और लॉकिंग एपीआई के माध्यम से कांसुल।

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

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

मैनुअल स्टेट पुल / पुश

आप अभी भी मैन्युअल रूप से रिमोट स्टेट से terraform state pull कमांड का उपयोग करके राज्य को पुनः प्राप्त कर सकते हैं। यह आपकी दूरस्थ स्थिति को लोड करेगा और इसे stdout में आउटपुट करेगा। आप इसे किसी फ़ाइल में सहेजना या कोई अन्य कार्य करना चुन सकते हैं।

आप मैन्युअल रूप से terraform state push साथ राज्य भी लिख सकते हैं। यह बेहद खतरनाक है और अगर संभव हो तो इससे बचना चाहिए। यह दूरस्थ स्थिति को अधिलेखित कर देगा। यदि आवश्यक हो तो मैन्युअल फिक्सअप करने के लिए इसका उपयोग किया जा सकता है।

जब मैन्युअल रूप से राज्य को धक्का दे रहा है, तो टेराफॉर्म आपको कुछ संभावित खतरनाक स्थितियों से बचाने का प्रयास करेगा:

  • भिन्न वंश : "वंश" एक अद्वितीय आईडी है जिसे किसी राज्य को बनाया जाता है। यदि एक वंश अलग है, तो इसका मतलब है कि राज्य अलग-अलग समय पर बनाए गए थे और इसकी संभावना है कि आप एक अलग राज्य को संशोधित कर रहे हैं। टेराफॉर्म इसकी अनुमति नहीं देगा।

  • उच्चतर धारावाहिक : प्रत्येक राज्य में "धारावाहिक" संख्या में एक मामूली वृद्धि होती है। यदि गंतव्य राज्य में एक उच्च धारावाहिक है, तो Terraform आपको इसे लिखने की अनुमति नहीं देगा क्योंकि इसका मतलब है कि परिवर्तन उस राज्य से हुआ है जिसे आप लिखने का प्रयास कर रहे हैं।

यदि आप सही निर्णय ले रहे हैं, तो इन दोनों सुरक्षा को-ध्वज के साथ बाईपास किया जा सकता है। भले ही -force फ्लैग का उपयोग करते हुए, हम ओवरराइट terraform state pull साथ राज्य का बैकअप बनाने की सलाह देते हैं।

स्टेट लॉकिंग

यदि संभव हो तो राज्य लॉकिंग का समर्थन करने के लिए बैकेंड जिम्मेदार हैं। सभी बैकेंड प्रकार राज्य लॉकिंग का समर्थन नहीं करते हैं। समर्थित बैकएंड प्रकारों की सूची में हम स्पष्ट रूप से ध्यान दें कि क्या लॉकिंग समर्थित है।

राज्य लॉकिंग के बारे में अधिक जानकारी के लिए, राज्य लॉकिंग के लिए समर्पित पृष्ठ देखें।