Terraform 0.11 - Configuration Syntax

कॉन्फ़िगरेशन सिंटैक्स




terraform

कॉन्फ़िगरेशन सिंटैक्स

टेराफ़ॉर्म कॉन्फ़िगरेशन के वाक्य विन्यास को HashiCorp कॉन्फ़िगरेशन भाषा (HCL) कहा जाता है। इसका अर्थ है कि मशीन के अनुकूल होने के साथ-साथ मानव पठनीय और संपादन योग्य के बीच संतुलन बनाना। मशीन-मित्रता के लिए, टेराफॉर्म, JSON कॉन्फ़िगरेशन भी पढ़ सकता है। सामान्य टेराफ़ॉर्म कॉन्फ़िगरेशन के लिए, हालांकि, हम एचसीएल टेराफॉर्म सिंटैक्स का उपयोग करने की सलाह देते हैं।

टेराफॉर्म सिंटेक्स

यहाँ टेराफॉर्म के HCL सिंटैक्स का एक उदाहरण दिया गया है:

# An AMI
variable "ami" {
  description = "the AMI to use"
}

/* A multi
   line comment. */
resource "aws_instance" "web" {
  ami               = "${var.ami}"
  count             = 2
  source_dest_check = false

  connection {
    user = "root"
  }
}

मूल बुलेट बिंदु संदर्भ:

  • सिंगल लाइन टिप्पणियां # शुरू होती हैं

  • बहु-पंक्ति टिप्पणियाँ /* और */ साथ लिपटी हैं

  • मान key = value के सिंटैक्स के साथ दिए गए हैं (व्हॉट्सएप कोई फर्क नहीं पड़ता)। मान किसी भी आदिम (स्ट्रिंग, संख्या, बूलियन), एक सूची, या एक मानचित्र हो सकता है।

  • स्ट्रिंग्स डबल-कोट्स में हैं।

  • स्ट्रिंग्स ${} , जैसे ${var.foo} में लिपटे सिंटैक्स का उपयोग करके अन्य मूल्यों को प्रक्षेपित कर सकते हैं। प्रक्षेप के लिए पूर्ण वाक्य-विन्यास यहाँ प्रलेखित है

  • मल्टीलाइन स्ट्रिंग्स शेल-स्टाइल "यहाँ डॉक्टर" वाक्यविन्यास का उपयोग कर सकते हैं, स्ट्रिंग के साथ एक मार्कर के साथ शुरू होता है जैसे <<EOF और उसके बाद स्ट्रिंग EOF साथ समाप्त होता है। स्ट्रिंग और अंत मार्कर की पंक्तियों को इंडेंट नहीं किया जाना चाहिए।

  • संख्या को आधार 10 माना जाता है। यदि आप 0x साथ एक संख्या को उपसर्ग करते हैं, तो इसे हेक्साडेसिमल संख्या के रूप में माना जाता है।

  • बूलियन मूल्य: true , false

  • चौकोर कोष्ठक ( [] ) के साथ आदिम प्रकार की सूची बनाई जा सकती है। उदाहरण: ["foo", "bar", "baz"]

  • नक्शे ब्रेसिज़ ( {} ) और कॉलन (:): { "foo": "bar", "bar": "baz" } साथ बनाए जा सकते हैं। कुंजी पर उद्धरण छोड़ दिए जा सकते हैं, जब तक कि कुंजी एक संख्या से शुरू नहीं होती है, जिस स्थिति में उद्धरण की आवश्यकता होती है। सिंगल लाइन मैप्स के लिए की / वैल्यू पेयर के बीच कमांड की आवश्यकता होती है मल्टी-लाइन मैप्स में की / वैल्यू पेयर के बीच एक नई लाइन पर्याप्त है।

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

variable "ami" {
  description = "the AMI to use"
}

के बराबर है:

variable = [{
  "ami": {
    "description": "the AMI to use",
  }
}]

ध्यान दें कि शीर्ष श्लोक नेत्रहीन कैसे बेहतर दिखता है? कई variable खंडों को दोहराकर, यह variable सूची बनाता है। जब संभव हो, तब से वर्गों का उपयोग करें क्योंकि वे नेत्रहीन स्पष्ट और अधिक पठनीय हैं।

JSON सिंटैक्स

Terraform भी JSON स्वरूपित कॉन्फ़िगरेशन फ़ाइलों को पढ़ने का समर्थन करता है। उपरोक्त उदाहरण JSON में परिवर्तित हो गया:

{
  "variable": {
    "ami": {
      "description": "the AMI to use"
    }
  },

  "resource": {
    "aws_instance": {
      "web": {
        "ami": "${var.ami}",
        "count": 2,
        "source_dest_check": false,

        "connection": {
          "user": "root"
        }
      }
    }
  }
}

रूपांतरण बहुत सीधा और स्व-दस्तावेज होना चाहिए।

JSON की डाउनसाइड कम मानवीय पठनीयता और टिप्पणियों की कमी है। अन्यथा, दो पूरी तरह से परस्पर हैं।