Terraform 0.11 - Backend Configuration

बैकएंड कॉन्फ़िगरेशन




terraform

बैकएंड कॉन्फ़िगरेशन

टेराफ़ॉर्म फ़ाइलों में बैकएयर सीधे टेराफ़ॉर्म फ़ाइलों में कॉन्फ़िगर किए गए हैं। बैकएंड को कॉन्फ़िगर करने के बाद, इसे initialized

नीचे, हम "कंसुल" बैकएंड को कॉन्फ़िगर करने के लिए एक पूर्ण उदाहरण दिखाते हैं:

terraform {
  backend "consul" {
    address = "demo.consul.io"
    scheme  = "https"
    path    = "example_app/terraform_state"
  }
}

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

केवल एक बैकएंड निर्दिष्ट किया जा सकता है और कॉन्फ़िगरेशन में प्रक्षेप नहीं हो सकता है । Terraform इसे मान्य करेगा।

पहली बार कॉन्फ़िगरेशन

जब पहली बार एक बैकएंड को कॉन्फ़िगर करना (किसी परिभाषित बैकएंड से स्पष्ट रूप से किसी को कॉन्फ़िगर करने के लिए आगे बढ़ना), टेराफॉर्म आपको अपने राज्य को नए बैकेंड पर माइग्रेट करने का विकल्प देगा। इससे आप किसी भी मौजूदा स्थिति को खोए बिना बैकएंड को अपना सकते हैं।

अतिरिक्त सावधानी बरतने के लिए, हम हमेशा आपके राज्य के साथ-साथ मैन्युअल रूप से बैकअप लेने की सलाह देते हैं। आप अपनी terraform.tfstate फ़ाइल को किसी अन्य स्थान पर कॉपी करके ऐसा कर सकते हैं। आरंभीकरण प्रक्रिया को एक बैकअप भी बनाना चाहिए, लेकिन यह सुरक्षित होने के लिए कभी भी दर्द नहीं देता है!

पहली बार बैकएंड को कॉन्फ़िगर करना भविष्य में कॉन्फ़िगरेशन बदलने से अलग नहीं है: नया कॉन्फ़िगरेशन बनाएं और terraform init चलाएं। टेराफॉर्म आपको बाकी के मार्ग का मार्गदर्शन करेगा।

आंशिक विन्यास

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

आंशिक कॉन्फ़िगरेशन के साथ, शेष कॉन्फ़िगरेशन तर्कों को आरंभीकरण प्रक्रिया के भाग के रूप में प्रदान किया जाना चाहिए। शेष तर्कों की आपूर्ति करने के कई तरीके हैं:

  • अंतःक्रियात्मक : जब तक इंटरेक्टिव इनपुट अक्षम नहीं किया जाता है, टेराफॉर्म अंतःक्रियात्मक रूप से आपसे आवश्यक मूल्यों के लिए पूछेगा। वैकल्पिक मूल्यों के लिए टेराफॉर्म शीघ्र नहीं होगा।

  • फ़ाइल : एक init कमांड लाइन के माध्यम से एक कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट की जा सकती है। किसी फ़ाइल को निर्दिष्ट करने के लिए, -backend-config=PATH विकल्प का उपयोग करें। यदि फ़ाइल में रहस्य हैं तो इसे सुरक्षित डेटा स्टोर में रखा जा सकता है, जैसे कि Vault , जिस स्थिति में इसे टेराफॉर्म चलाने से पहले स्थानीय डिस्क पर डाउनलोड किया जाना चाहिए।

  • कमांड-लाइन कुंजी / मूल्य जोड़े : init कमांड लाइन के माध्यम से कुंजी / मूल्य जोड़े निर्दिष्ट किए जा सकते हैं। ध्यान दें कि कई गोले एक इतिहास फ़ाइल में कमांड-लाइन झंडे को बनाए रखते हैं, इसलिए यह रहस्यों के लिए अनुशंसित नहीं है। किसी एकल कुंजी / मान युग्म को निर्दिष्ट करने के लिए, -backend-config="KEY=VALUE" को -backend-config="KEY=VALUE" विकल्प का उपयोग -backend-config="KEY=VALUE"

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

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

आंशिक कॉन्फ़िगरेशन का उपयोग करते समय, टेराफ़ॉर्म को कम से कम आवश्यकता होती है कि बैकएंड प्रकार निर्दिष्ट करने के लिए एक खाली बैकएंड कॉन्फ़िगरेशन रूट टेराफ़ॉर्म कॉन्फ़िगरेशन फ़ाइलों में से एक में निर्दिष्ट होता है। उदाहरण के लिए:

terraform {
  backend "consul" {}
}

बैकएंड कॉन्फ़िगरेशन फ़ाइल में backend ब्लॉक की सामग्री शीर्ष-स्तरीय विशेषताओं के रूप में है, इसे किसी अन्य terraform या backend ब्लॉक में लपेटने की आवश्यकता के बिना:

address = "demo.consul.io"
path    = "example_app/terraform_state"
scheme  = "https"

वैकल्पिक रूप से एक ही सेटिंग्स को कमांड लाइन पर निर्दिष्ट किया जा सकता है:

$ terraform init \
    -backend-config="address=demo.consul.io" \
    -backend-config="path=example_app/terraform_state" \
    -backend-config="scheme=https"

कॉन्फ़िगरेशन बदलना

आप किसी भी समय अपना बैकएंड कॉन्फ़िगरेशन बदल सकते हैं। आप दोनों कॉन्फ़िगरेशन को और साथ ही बैकएंड के प्रकार (उदाहरण के लिए "कॉन्सुल" से "s3") में बदल सकते हैं।

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

यदि आप कई workspaces का उपयोग कर रहे हैं, तो Terraform सभी कार्यस्थानों को गंतव्य पर कॉपी कर सकता है। यदि टेराफ़ॉर्म पता लगाता है कि आपके पास कई कार्यस्थान हैं, तो यह पूछेगा कि क्या आप ऐसा करना चाहते हैं।

यदि आप केवल एक ही बैकएंड को फिर से कॉन्फ़िगर कर रहे हैं, तो Terraform अभी भी पूछेगा कि क्या आप अपने राज्य को स्थानांतरित करना चाहते हैं। आप इस परिदृश्य में "नहीं" का जवाब दे सकते हैं।

एक बैकेंड को अपुष्ट करना

यदि आप अब किसी भी बैकएंड का उपयोग नहीं करना चाहते हैं, तो आप बस फ़ाइल से कॉन्फ़िगरेशन हटा सकते हैं। टेराफॉर्म किसी अन्य परिवर्तन की तरह इसका पता लगाएगा और आपको initialized से initialized करने के लिए प्रेरित करेगा।

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