Terraform 0.11 - Command: push

आदेश: धक्का




terraform

आदेश: धक्का

terraform push कमांड अपलोड करता है कि आपका टेराफॉर्म कॉन्फ़िगरेशन HashiCorp के टेराफॉर्म एंटरप्राइज द्वारा प्रबंधित किया जाएगा। Terraform Enterprise स्वचालित रूप से आपके लिए Terraform चला सकता है, सभी राज्य संक्रमणों को बचा सकता है, योजनाओं को बचा सकता है और सभी Terraform रन का इतिहास रख सकता है।

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

Terraform Enterprise का उपयोग ACL को सेट करने के लिए भी किया जा सकता है, जो Terraform को चला सकता है, और Terraform Enterprise का भविष्य का अद्यतन समानांतर Terraform रन की अनुमति देगा और स्वचालित रूप से अवसंरचना लॉकिंग का प्रदर्शन करेगा, इसलिए केवल एक रन एक समय में एक ही बुनियादी ढाँचा संशोधित कर रहा है।

प्रयोग

उपयोग: terraform push [options] [path]

path तर्क apply कमांड के लिए समान है।

कमांड-लाइन झंडे सभी वैकल्पिक हैं। उपलब्ध झंडों की सूची इस प्रकार है:

  • -atlas-address=<url> - एक उदाहरण के लिए एक वैकल्पिक पता। https://atlas.hashicorp.com लिए डिफ़ॉल्ट।

  • -upload-modules=true - यदि सही (डिफ़ॉल्ट) है, तो उपयोग किए जा रहे modules सभी अपने वर्तमान चेकआउट पर लॉक किए गए हैं और पूरी तरह से अपलोड किए गए हैं। यह टेराफॉर्म एंटरप्राइज को आपके लिए चलने वाली terraform get से रोकता है।

  • -name=<name> - टेराफ़ॉर्म एंटरप्राइज में इंफ्रास्ट्रक्चर कॉन्फ़िगरेशन का नाम। इसका प्रारूप यह है: "उपयोगकर्ता नाम / नाम" ताकि आप न केवल अपने खाते में बल्कि अन्य खातों और संगठनों में कॉन्फ़िगरेशन अपलोड कर सकें। यह सेटिंग टेराफ़ॉर्म एंटरप्राइज़ अनुभाग में कॉन्फ़िगरेशन में भी सेट की जा सकती है।

  • -no-color - रंग के साथ आउटपुट अक्षम करता है

  • -overwrite=foo - अद्यतन किए जाने वाले एक विशिष्ट चर को चिह्नित करता है। आम तौर पर, यदि एक चर पहले से ही सेट है टेराफॉर्म स्थानीय मूल्य नहीं भेजेगा (भले ही यह अलग हो)। यह स्थानीय मूल्य को टेराफ़ॉर्म एंटरप्राइज को भेजने के लिए मजबूर करता है। इस झंडे को कई बार दोहराया जा सकता है।

  • -token=<token> - अपलोड को अधिकृत करने के लिए उपयोग करने के लिए टेराफॉर्म एंटरप्राइज एपीआई टोकन। यदि रिक्त या अनिर्दिष्ट है, तो ATLAS_TOKEN पर्यावरण चर का उपयोग किया जाएगा।

  • -var='foo=bar' - -var='foo=bar' कॉन्फ़िगरेशन के लिए एक चर का मान सेट करें।

  • -var-file=foo - एक चर फ़ाइल का उपयोग करके चर का मान सेट करें। इस ध्वज का उपयोग कई बार किया जा सकता है।

  • -vcs=true - यदि सत्य (डिफ़ॉल्ट) है, तो Terraform यह पता लगाएगा कि क्या VCS उपयोग में है, जैसे Git, और केवल उन्हीं फ़ाइलों को अपलोड करेगा जो संस्करण नियंत्रण के लिए प्रतिबद्ध हैं। यदि कोई संस्करण नियंत्रण प्रणाली का पता नहीं चला है, तो Terraform path में सभी फाइलों को अपलोड करेगा (कमांड के लिए पैरामीटर)।

पैकेज्ड फाइलें

अपलोड की गई फाइलें और एक push साथ पैक की गई सभी फाइलें कमांड के पैरामीटर के रूप में दिए गए path , पुनरावर्ती हैं। डिफ़ॉल्ट रूप से (जब तक -vcs=false निर्दिष्ट नहीं किया जाता है), Terraform स्वचालित रूप से यह पता लगा लेगा कि VCS जैसे Git का उपयोग किया जा रहा है या नहीं, और उस स्थिति में केवल उन फ़ाइलों को अपलोड किया जाएगा जो प्रतिबद्ध हैं। इस अंतर्निहित बुद्धिमत्ता के कारण, आपको आमतौर पर ".गित" या ".एचजी" जैसे फ़ोल्डरों को बाहर करने के बारे में चिंता करने की ज़रूरत नहीं है।

यदि Terraform किसी VCS का पता नहीं लगाता है, तो यह सभी फ़ाइलों को अपलोड करेगा।

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

टेराफॉर्म में पैकेज में वे सभी मॉड्यूल भी शामिल हैं जिन्हें हाल ही में terraform init या terraform get कमांड terraform get । चूँकि फाइल सिस्टम में मॉड्यूल कैसे कैच किए जाते हैं, इसका विवरण टेराफॉर्म संस्करणों के बीच भिन्न होता है, इसलिए स्थानीय रूप से टेराफॉर्म के एक ही संस्करण का उपयोग करना महत्वपूर्ण है (जब terraform init और फिर terraform push चल रहा हो) और आपके दूरस्थ टेराफॉर्म वर्कस्पेस में।

टेराफॉर्म वेरिएबल्स

जब आप push , तो Terraform आपके Terraform चर के स्थानीय मानों को स्वतः Terraform Enterprise पर सेट कर देगा। यदि वे पहले से मौजूद नहीं हैं, तो मान केवल सेट किए गए हैं। यदि आप इसे अपडेट करने के लिए एक निश्चित चर मान को बल देना चाहते हैं, तो -overwrite ध्वज का उपयोग करें।

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

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

$ terraform push -var 'foo=bar' -overwrite foo

दोनों -var और -var ध्वज की आवश्यकता है। -var ध्वज स्थानीय रूप से मूल्य निर्धारित करता है (कमांड या लागू होने जैसी योजनाओं जैसी सटीक प्रक्रिया), और -overwrite ध्वज टेराफॉर्म एंटरप्राइज को अपडेट करने के लिए पुश कमांड को बताता है।

दूरस्थ राज्य की आवश्यकता

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

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

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