2017-03-06 10 views
5

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

प्रलेखन से, मैं इकट्ठा कि terraform refresh एडब्ल्यूएस क्वेरी बुनियादी सुविधाओं की वास्तविक स्थिति का हो और accordigly tfstate अद्यतन करने के लिए करना चाहिए, लेकिन ऐसा नहीं है: मेरे tfstate अछूता है और योजना + Already existing त्रुटियों की एक बहुत कुछ देना लागू होते हैं।

terraform refresh वास्तव में क्या करता है?

उत्तर

8

terraform refresh राज्य फ़ाइल में रखे गए किसी भी संसाधन को खोजने का प्रयास करता है और टेराफॉर्म के बाहर प्रदाता में होने वाले किसी भी बहाव के साथ अपडेट किया जाता है क्योंकि यह आखिरी बार चलाया गया था।

उदाहरण के लिए, मान लीजिए कि आपके राज्य फ़ाइल i-abc123, i-abc124, i-abc125 के कहने आईडी के साथ 3 EC2 उदाहरण हों, और फिर आप terraform की i-abc124 बाहर को हटा दें। terraform refresh चलाने के बाद, एक plan प्रदर्शित होगा यह दूसरा उदाहरण बनाने के लिए, जबकि एक को नष्ट योजना दिखाया जाएगा यह केवल पहले और तीसरे उदाहरणों को नष्ट करने के लिए (और लापता दूसरे उदाहरण नष्ट करने के लिए असफल नहीं हो) की जरूरत है कि जरूरत है।

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

अपने वर्तमान छेद से बाहर निकलने के लिए मेरा सुझाव है कि आप terraform import उदारतापूर्वक अपनी राज्य फ़ाइल में वापस लाने के लिए या यदि संभव हो, तो टेराफॉर्म के बाहर सब कुछ मैन्युअल रूप से नष्ट कर दें और स्क्रैच से शुरू करें।

भविष्य में मैं दोनों बंटवारे बाहर की छोटी से छोटी संदर्भों के लिए आवेदन करने के लिए राज्य फ़ाइलों सक्षम संस्करण के साथ एक S3 बाल्टी में अपने रिमोट राज्य स्टोर करने के लिए सुझाव है और यह भी होगा। आप भ्रष्टाचार से बचने में मदद के लिए Terragrunt जैसे टूल की ओर भी देख सकते हैं या टेराफॉर्म की आने वाली 0.9 रिलीज में मूल राज्य फ़ाइल लॉकिंग की प्रतीक्षा कर सकते हैं।

+0

आपके स्पष्ट और विस्तृत उत्तर के लिए धन्यवाद। असल में हमारे पास एक एस 3 बाल्टी में हमारे tfstate था, alas w/o संस्करण। जैसा कि आप सुझाव देते हैं कि हमने हाथ से सबकुछ नष्ट कर दिया है, एस 3 संस्करण को सक्षम किया है और दो दिन पहले एक बार 'टेराफॉर्म लागू' चलाया था। मैंने इस सवाल से एक सुंदर गंभीर स्थिति के अंतर्निहित कारणों की बेहतर समझ प्राप्त करने के लिए कहा। – Bruno9779

संबंधित मुद्दे