Terraform 0.11 - Interpolation Syntax

इंटरपोलेशन सिंटेक्स




terraform

इंटरपोलेशन सिंटेक्स

टेराफ़ॉर्म में तार के भीतर एंबेडेड, चाहे आप टेराफ़ॉर्म सिंटैक्स या JSON सिंटैक्स का उपयोग कर रहे हों, आप अन्य मानों को प्रक्षेपित कर सकते हैं। ये प्रक्षेप ${} में लिपटे हैं, जैसे ${var.foo}

प्रक्षेप सिंटैक्स शक्तिशाली है और आपको चर, संसाधनों की विशेषताओं, कॉल फ़ंक्शन आदि को संदर्भित करने की अनुमति देता है।

आप प्रक्षेपों में सरल गणित का प्रदर्शन कर सकते हैं, जिससे आप ${count.index + 1} जैसे भाव लिख सकते हैं। और आप कुछ तर्क के आधार पर मूल्य निर्धारित करने के लिए conditionals का उपयोग भी कर सकते हैं।

आप दोहरे डॉलर के संकेतों के साथ प्रक्षेप से बच सकते हैं: $${foo} को शाब्दिक ${foo} रूप में प्रदान किया जाएगा।

उपलब्ध चर

विभिन्न प्रकार के उपलब्ध चर संदर्भ हैं जिनका आप उपयोग कर सकते हैं।

उपयोगकर्ता स्ट्रिंग चर

var. प्रयोग करें var. उपसर्ग चर नाम के बाद। उदाहरण के लिए, ${var.foo} foo चर मान को प्रक्षेपित करेगा।

उपयोगकर्ता मानचित्र चर

वाक्यविन्यास var.MAP["KEY"] । उदाहरण के लिए, ${var.amis["us-east-1"]} को amis मैप चर के भीतर us-east-1 कुंजी का मान मिलेगा।

उपयोगकर्ता सूची चर

वाक्य रचना "${var.LIST}" । उदाहरण के लिए, "${var.subnets}" को एक सूची के रूप में, subnets सूची का मूल्य मिलेगा। आप सूची तत्वों को इंडेक्स द्वारा भी वापस कर सकते हैं: ${var.subnets[idx]}

अपने स्वयं के संसाधन की विशेषताएँ

वाक्य-विन्यास self.ATTRIBUTE । उदाहरण के लिए ${self.private_ip} उस संसाधन के निजी IP पते को ${self.private_ip} करेगा।

अन्य संसाधनों की विशेषताएँ

वाक्य रचना TYPE.NAME.ATTRIBUTE । उदाहरण के लिए, ${aws_instance.web.id} web से aws_instance संसाधन से आईडी विशेषता को aws_instance । यदि संसाधन में एक count विशेषता सेट है, तो आप ${aws_instance.web.0.id} जैसे शून्य-आधारित सूचकांक के साथ व्यक्तिगत विशेषताओं तक पहुँच सकते हैं। आप सभी विशेषताओं की सूची प्राप्त करने के लिए splat सिंटैक्स का भी उपयोग कर सकते हैं: ${aws_instance.web.*.id}

डेटा स्रोत की विशेषताएँ

वाक्यविन्यास data.TYPE.NAME.ATTRIBUTE । उदाहरण के लिए। ${data.aws_ami.ubuntu.id} aws_ami नाम के aws_ami डेटा स्रोत से id विशेषता को aws_ami । यदि डेटा स्रोत में एक count विशेषता सेट है, तो आप शून्य-आधारित इंडेक्स, जैसे ${data.aws_subnet.example.0.cidr_block} साथ व्यक्तिगत विशेषताओं का उपयोग कर सकते हैं। आप सभी विशेषताओं की सूची प्राप्त करने के लिए splat सिंटैक्स का भी उपयोग कर सकते हैं: ${data.aws_subnet.example.*.cidr_block}

एक मॉड्यूल से आउटपुट

वाक्यविन्यास MODULE.NAME.OUTPUT । उदाहरण के लिए ${module.foo.bar} foo module से bar आउटपुट को प्रक्षेपित करेगा।

जानकारी गिनें

वाक्य विन्यास count.FIELDcount.FIELD । उदाहरण के लिए, ${count.index} एक बहु-गिनती संसाधन में वर्तमान सूचकांक को प्रक्षेपित करेगा। count बारे में अधिक जानकारी के लिए, संसाधन कॉन्फ़िगरेशन पृष्ठ देखें

पथ की जानकारी

वाक्यविन्यास path.TYPE । TYPE cwd , module या rootcwd वर्तमान कामकाजी निर्देशिका को प्रक्षेपित करेगा। module वर्तमान मॉड्यूल के लिए मार्ग को प्रक्षेपित करेगा। root रूट मॉड्यूल के मार्ग को प्रक्षेपित करेगा। सामान्य तौर पर, आप शायद path.module चर चाहते हैं।

टेराफॉर्म मेटा जानकारी

वाक्यविन्यास terraform.FIELD । इस चर प्रकार में वर्तमान में निष्पादित टेराफॉर्म रन के बारे में मेटाडेटा है। FIELD वर्तमान में केवल सक्रिय राज्य के वातावरण को संदर्भित करने के लिए env हो सकता है

सशर्त,

इंटरपोलेशन में अंतिम मूल्य पर शाखा करने के लिए सशर्त शामिल हो सकते हैं।

resource "aws_instance" "web" {
  subnet = "${var.env == "production" ? var.prod_subnet : var.dev_subnet}"
}

सशर्त सिंटैक्स प्रसिद्ध टर्नरी ऑपरेशन है:

CONDITION ? TRUEVAL : FALSEVAL

स्थिति किसी भी मान्य प्रक्षेप सिंटैक्स हो सकती है, जैसे कि चर पहुंच, एक फ़ंक्शन कॉल, या यहां तक ​​कि एक और सशर्त। सही और गलत मान किसी भी मान्य प्रक्षेप सिंटैक्स हो सकता है। सही और झूठे पक्ष द्वारा दिए गए प्रकार समान होने चाहिए।

समर्थित ऑपरेटर हैं:

  • समानता: == और !=
  • संख्यात्मक तुलना: > , < , >= , <=
  • बूलियन तर्क: && , || , एकात्मक !

सशर्त के लिए एक सामान्य उपयोग मामला सशर्त रूप से गिनती सेट करके संसाधन को अक्षम / अक्षम करने के लिए है:

resource "aws_instance" "vpn" {
  count = "${var.something ? 1 : 0}"
}

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

अंतर्निहित कार्य

निर्मित कार्यों के साथ टेराफॉर्म जहाज। फ़ंक्शंस को सिंटैक्स name(arg, arg2, ...) साथ कहा जाता है। उदाहरण के लिए, किसी फ़ाइल को पढ़ने के लिए: ${file("path.txt")}

निर्मित कार्यों का समर्थन किया

समर्थित अंतर्निहित कार्य हैं:

  • abs(float) - किसी दिए गए फ्लोट का निरपेक्ष मान लौटाता है। उदाहरण: abs(1) रिटर्न 1 , और abs(-3.14) abs(-1) भी 1 लौटेगा, जबकि abs(-3.14) रिटर्न 3.14signum फ़ंक्शन भी देखें।

  • basename(path) - किसी पथ का अंतिम तत्व लौटाता है।

  • base64decode(string) - एक base64decode(string) एन्कोडेड स्ट्रिंग को देखते हुए, इसे डिकोड करता है और मूल स्ट्रिंग देता है।

  • base64encode(string) - दिए गए स्ट्रिंग का एक बेस 64-एनकोडेड प्रतिनिधित्व लौटाता है।

  • base64gzip(string) - दिए गए स्ट्रिंग को gzip से कंप्रेस करता है और फिर परिणाम को base64 में एनकोड करता है। यह कुछ संसाधन तर्कों के साथ उपयोग किया जा सकता है जो बाइनरी डेटा को बेस 64 एन्कोडिंग के साथ पारित करने की अनुमति देते हैं, क्योंकि टेराफॉर्म स्ट्रिंग को वैध यूटीएफ -8 होने की आवश्यकता होती है।

  • base64sha256(string) - दिए गए स्ट्रिंग के कच्चे SHA-256 योग का एक बेस 64-एनकोडेड प्रतिनिधित्व लौटाता है। यह base64encode(sha256(string)) sha256() रिटर्न हेक्साडेसिमल प्रतिनिधित्व के बाद से base64encode(sha256(string)) बराबर नहीं है

  • base64sha512(string) - दिए गए स्ट्रिंग के कच्चे SHA-512 योग का एक बेस 64-एनकोडेड प्रतिनिधित्व लौटाता है। यह sha512() रिटर्न हेक्साडेसिमल प्रतिनिधित्व के बाद से base64encode(sha512(string)) बराबर नहीं है

  • bcrypt(password, cost) - दिए गए मूल्य पर स्ट्रिंग का एन्क्रिप्टेड एन्क्रिप्टेड bcrypt(password, cost) लौटाता है। प्रदान नहीं किए जाने पर 10 की डिफ़ॉल्ट cost का उपयोग किया जाएगा।

  • ceil(float) - तर्क से अधिक या बराबर कम से कम पूर्णांक मान लौटाता है।

  • chomp(string) - दिए गए स्ट्रिंग से नई लाइनों को हटाता है।

  • chunklist(list, size) - size द्वारा chunked list आइटम लौटाता है। उदाहरण:

  • cidrhost(iprange, hostnum) - CIDR नोटेशन में एक IP एड्रेस रेंज लेता है और दिए गए होस्ट नंबर के साथ एक IP एड्रेस बनाता है। यदि दिया गया होस्ट नंबर ऋणात्मक है, तो गिनती रेंज के अंत से शुरू होती है। उदाहरण के लिए, cidrhost("10.0.0.0/8", 2) 10.0.0.2 और cidrhost("10.0.0.0/8", -2) रिटर्न 10.255.255.254 रिटर्न 10.255.255.254

  • cidrnetmask(iprange) - CIDR संकेतन में एक IP एड्रेस रेंज लेता है और IPv4 इंटरफेस के लिए कुछ सिस्टम जो एड्रेस-स्वरूपित सबनेट मास्क प्रारूप देता है। उदाहरण के लिए, cidrnetmask("10.0.0.0/8") 255.0.0.0 देता है। IPv6 नेटवर्क पर लागू नहीं है क्योंकि CIDR संकेतन IPv6 के लिए एकमात्र मान्य संकेतन है।

  • cidrsubnet(iprange, newbits, netnum) - CIDR अंकन (जैसे 10.0.0.0/8 ) में एक आईपी एड्रेस रेंज लेता है और एक अतिरिक्त सबनेट नंबर शामिल करने के लिए इसके उपसर्ग का विस्तार करता है। उदाहरण के लिए, cidrsubnet("10.0.0.0/8", 8, 2) 10.2.0.0/16 रिटर्न; cidrsubnet("2607:f298:6051:516c::/64", 8, 2) रिटर्न 2607:f298:6051:516c:200::/72

  • coalesce(string1, string2, ...) - दिए गए तर्कों से पहला गैर-रिक्त मान लौटाता है। कम से कम दो तर्क देने होंगे।

  • coalescelist(list1, list2, ...) - दिए गए तर्कों से पहली गैर-रिक्त सूची लौटाता है। कम से कम दो तर्क देने होंगे।

  • compact(list) - एक सूची से खाली स्ट्रिंग तत्वों को निकालता है। यह कुछ मामलों में उपयोगी हो सकता है, उदाहरण के लिए जब पारित सूचियों को मॉड्यूल चर के रूप में शामिल किया जाता है या जब मॉड्यूल आउटपुट पार्स करते हैं। उदाहरण: compact(module.my_asg.load_balancer_names)

  • concat(list1, list2, ...) - एक सूची में दो या अधिक सूचियों को concat(list1, list2, ...) । उदाहरण: concat(aws_instance.db.*.tags.Name, aws_instance.web.*.tags.Name)

  • contains(list, element) सम्‍मिलित करता है - यदि कोई सूची में दिए गए तत्व सम्‍मिलित है और सही है तो वापस लौटता है। उदाहरण: contains(var.list_of_strings, "an_element")

  • dirname(path) - सभी को वापस करता है लेकिन पथ का अंतिम तत्व, आमतौर पर पथ की डायरेक्टरी।

  • distinct(list) - एक सूची से डुप्लिकेट आइटम निकालता है। प्रत्येक तत्व की पहली घटना को रखता है, और बाद की घटनाओं को हटा देता है। यह फ़ंक्शन केवल फ्लैट सूचियों के लिए मान्य है। उदाहरण: distinct(var.usernames)

  • element(list, index) - दिए गए इंडेक्स में एक सूची से किसी एक तत्व को लौटाता है। यदि सूचकांक तत्वों की संख्या से अधिक है, तो यह फ़ंक्शन एक मानक मॉड एल्गोरिथ्म का उपयोग करके लपेटेगा। यह फ़ंक्शन केवल फ्लैट सूचियों पर काम करता है। उदाहरण:

  • file(path) - स्ट्रिंग में एक फ़ाइल की सामग्री को पढ़ता है। इस फ़ाइल में चर interpolated नहीं हैं। फ़ाइल की सामग्री के रूप में पढ़ा जाता है। कार्यशील निर्देशिका के सापेक्ष path की व्याख्या की जाती है। पथ चर का उपयोग अन्य आधार स्थानों के सापेक्ष पथ को संदर्भित करने के लिए किया जा सकता है। उदाहरण के लिए, किसी मॉड्यूल के अंदर file() का उपयोग करते समय, आप आमतौर पर मॉड्यूल आधार के सापेक्ष पथ बनाना चाहते हैं, जैसे: file("${path.module}/file")

  • floor(float) - तर्क से कम या बराबर सबसे बड़ा पूर्णांक मान लौटाता है।

  • flatten(list of lists) - सपाट सूची आदिम मूल्यों की एक समतल सूची में नीचे सूचीबद्ध होती है, किसी भी नेस्टेड सूचियों को पुनरावर्ती रूप से नष्ट कर देती है। उदाहरण:

  • format(format, args, ...) - दिए गए प्रारूप के अनुसार एक स्ट्रिंग का निर्माण करता है। प्रारूप के लिए सिंटैक्स मानक sprintf सिंटैक्स है। सिंटैक्स के लिए अच्छा प्रलेखन यहाँ पाया जा सकता है । उदाहरण के लिए एक गिनती शून्य से उपसर्ग करें, आमतौर पर नामकरण सर्वर के लिए उपयोग किया जाता है: format("web-%03d", count.index + 1)

  • formatlist(format, args, ...) - दिए गए प्रारूप के अनुसार सूची के प्रत्येक तत्व को format , format समान, और सूची को लौटाता है। प्रत्येक सूची तत्व के लिए गैर-सूची तर्क दोहराए जाते हैं। उदाहरण के लिए, DNS पतों की सूची को URL की सूची में परिवर्तित करने के लिए, आप इसका उपयोग कर सकते हैं: formatlist("https://%s:%s/", aws_instance.foo.*.public_dns, var.port) । यदि एकाधिक आर्ग सूचियां हैं, और उनके पास समान संख्या में तत्व हैं, तो स्वरूपण समानांतर में सूचियों के तत्वों पर लागू होता है। उदाहरण: formatlist("instance %v has private ip %v", aws_instance.foo.*.id, aws_instance.foo.*.private_ip) । विभिन्न लंबाई के साथ सूचियों को प्रारूपित करने में त्रुटि होती है।

  • indent(numspaces, string) - निर्दिष्ट संख्याओं को रिक्त स्थान की सभी लेकिन पहले से दी गई मल्टी-लाइन स्ट्रिंग के लिए प्रस्तुत करता है। पहले से ही इंडेंटेड संदर्भ में मल्टी-लाइन स्ट्रिंग सम्मिलित करते समय उपयोगी हो सकता है। पहली पंक्ति इंडेंट नहीं है, पहले से इंडेंट किए गए प्रस्तावना के कुछ प्रकार के बाद इंडेंट स्ट्रिंग को रखने की अनुमति देने के लिए। उदाहरण: " \"items\": ${ indent(4, "[\n \"item1\"\n]") },"

  • index(list, elem) - किसी सूची में दिए गए तत्व के सूचकांक को ढूँढता है। यह फ़ंक्शन केवल फ्लैट सूचियों पर काम करता है। उदाहरण: index(aws_instance.foo.*.tags.Name, "foo-test")

  • join(delim, list) - परिणामी स्ट्रिंग के लिए सीमांकक के साथ सूची में शामिल होता है। यह फ़ंक्शन केवल फ्लैट सूचियों पर काम करता है। उदाहरण:

  • jsonencode(value) - दिए गए मूल्य का एक JSON- एनकोडेड प्रतिनिधित्व लौटाता है, जिसमें मनमाने ढंग से सूचीबद्ध सूची और नक्शे शामिल हो सकते हैं। ध्यान दें कि यदि मूल्य एक स्ट्रिंग है तो इसके मूल्य को उद्धरणों में रखा जाएगा।

  • keys(map) - keys(map) एक क्रमबद्ध क्रमबद्ध सूची देता है।

  • length(list) - किसी दिए गए सूची या नक्शे में सदस्यों की संख्या, या किसी दिए गए स्ट्रिंग में वर्णों की संख्या लौटाता है।

  • list(items, ...) - फ़ंक्शन में तर्कों से मिलकर एक सूची देता है। यह फ़ंक्शन इंटरपोल में सूची शाब्दिक का प्रतिनिधित्व करने का एक तरीका प्रदान करता है।

  • log(x, base) - x का लघुगणक लौटाता है।

  • lookup(map, key, [default]) - एक मानचित्र चर में एक गतिशील लुकअप करता है। map पैरामीटर एक और चर होना चाहिए, जैसे var.amis । यदि key map में मौजूद नहीं है, तो प्रक्षेप तब तक विफल रहेगा जब तक कि आप तीसरे तर्क, default निर्दिष्ट नहीं करते हैं, जो कि map में कोई key नहीं मिलने पर वापस जाने के लिए एक स्ट्रिंग मान होना चाहिए। यह फ़ंक्शन केवल फ्लैट मैप्स पर काम करता है और उन नक्शों के लिए एक त्रुटि लौटाएगा जिसमें नेस्टेड सूची या नक्शे शामिल हैं।

  • lower(string) - सभी यूनिकोड अक्षरों के साथ स्ट्रिंग की एक प्रति लौटाता है जो उनके निचले मामले में मैप की जाती है।

  • map(key, value, ...) - एक नक्शा देता है जिसमें तर्कों के रूप में निर्दिष्ट कुंजी / मूल्य जोड़े शामिल होते हैं। प्रत्येक विषम तर्क में एक स्ट्रिंग कुंजी होनी चाहिए, और प्रत्येक तर्क में भी उसी प्रकार का होना चाहिए जैसे कि अन्य मान निर्दिष्ट हैं। डुप्लिकेट कुंजियों की अनुमति नहीं है। उदाहरण:

  • matchkeys(values, keys, searchset) - दो सूचियों के values और समान लंबाई की keys के लिए, उन सभी तत्वों को उन values से लौटाता है जहाँ keys का संगत तत्व searchset सूची में मौजूद है। उदाहरण matchkeys(aws_instance.example.*.id, aws_instance.example.*.availability_zone, list("us-west-2a")) उदाहरण की एक सूची aws_instance.example उदाहरणों की ID "us-west-2a" aws_instance.example "us-west-2a" में "us-west-2a" । कोई भी मैच खाली सूची में नहीं होगा। keys वस्तुओं को क्रमिक रूप से संसाधित किया जाता है, इसलिए लौटे values का क्रम संरक्षित है।

  • max(float1, float2, ...) - फ़्लोट्स का सबसे बड़ा रिटर्न।

  • merge(map1, map2, ...) - 2 या अधिक मानचित्रों का मिलन लौटाता है। दिए गए क्रम में नक्शे का उपभोग किया जाता है, और डुप्लिकेट कुंजियाँ पिछली प्रविष्टियों को अधिलेखित करती हैं।

  • min(float1, float2, ...) - फ़्लोट्स में से सबसे छोटा लौटाता है।

  • md5(string) - दिए गए स्ट्रिंग के MD5 हैश का एक (पारंपरिक) हेक्साडेसिमल रिटर्न लौटाता है।

  • pathexpand(string) - होम डायरेक्टरी में ~ साथ एक filepath स्ट्रिंग देता है। नोट: यह दो अलग-अलग मेजबानों के बीच एक योजना बनायेगा, जब तक कि फ़ाइलपथ समान न हो।

  • pow(x, y) - फ्लोट के रूप में घातीय y का बेस x लौटाता है।

    उदाहरण:

  • replace(string, search, replace) - किसी दिए गए स्ट्रिंग पर खोज और प्रतिस्थापित करता है। search सभी उदाहरणों को प्रतिस्थापित के मूल्य से replace । यदि search को आगे के स्लैश में लपेटा जाता है, तो इसे एक नियमित अभिव्यक्ति के रूप में माना जाता है। यदि एक नियमित अभिव्यक्ति का उपयोग करते हैं, तो replace उप-रूपक को नियमित अभिव्यक्ति में $n का उपयोग करके संदर्भित कर सकता है जहां n उप-सूचकांक का नाम या नाम है। यदि एक नियमित अभिव्यक्ति का उपयोग करते हुए, वाक्यविन्यास re2 नियमित अभिव्यक्ति सिंटैक्स के अनुरूप होता है।

  • rsadecrypt(string, key) - RSA का उपयोग करके string । पेडिंग स्कीम PKCS # 1 v1.5 का उपयोग किया जाता है। string को बेस 64-एनकोडेड होना चाहिए। PEM प्रारूप में कुंजी RSA निजी key होनी चाहिए। आप इसे फ़ाइल से लोड करने के लिए file() का उपयोग कर सकते हैं।

  • sha1(string) - दिए गए स्ट्रिंग के SHA-1 हैश का एक (पारंपरिक) हेक्साडेसिमल प्रतिनिधित्व लौटाता है। उदाहरण: "${sha1("${aws_vpc.default.tags.customer}-s3-bucket")}"

  • sha256(string) - दिए गए स्ट्रिंग के SHA-256 हैश का (पारंपरिक) हेक्साडेसिमल प्रतिनिधित्व लौटाता है। उदाहरण: "${sha256("${aws_vpc.default.tags.customer}-s3-bucket")}"

  • sha512(string) - दिए गए स्ट्रिंग के SHA-512 हैश का (पारंपरिक) हेक्साडेसिमल प्रतिनिधित्व लौटाता है। उदाहरण: "${sha512("${aws_vpc.default.tags.customer}-s3-bucket")}"

  • signum(integer) - ऋणात्मक संख्याओं के लिए रिटर्न -1 , 0 लिए 0 और सकारात्मक संख्या के लिए 1 । यह फ़ंक्शन तब उपयोगी होता है जब आपको पहले संसाधन के लिए एक मान और बाकी संसाधनों के लिए एक अलग मूल्य निर्धारित करने की आवश्यकता होती है। उदाहरण: element(split(",", var.r53_failover_policy), signum(count.index)) जहां 0 वें अंक PRIMARY और 1 से FAILOVER को FAILOVER

  • slice(list, from, to) - (समावेशी) और (अनन्य) के बीच की list का हिस्सा लौटाता है। उदाहरण: slice(var.list_of_strings, 0, length(var.list_of_strings) - 1)

  • sort(list) - एक तर्क के रूप में पारित सूची में निहित स्ट्रिंग्स की एक शाब्दिक क्रमबद्ध सूची देता है। सॉर्ट केवल उन सूचियों के साथ उपयोग किया जा सकता है जिनमें केवल तार होते हैं। उदाहरण: sort(aws_instance.foo.*.id) , sort(var.list_of_strings)

  • split(delim, string) - पहले से बनाई गई स्ट्रिंग को एक सूची में वापस split(delim, string) । मॉड्यूल आउटपुट के माध्यम से सूचियों को आगे बढ़ाने के लिए यह उपयोगी है क्योंकि वे वर्तमान में केवल स्ट्रिंग मानों का समर्थन करते हैं। उपयोग के आधार पर, इस स्ट्रिंग के भीतर जो प्रदर्शन किया जा रहा है, उसे यह इंगित करने के लिए ब्रैकेट में a_resource_param = ["${split(",", var.CSV_STRING)}"] आवश्यकता हो सकती है कि आउटपुट वास्तव में एक सूची है, उदाहरण के लिए a_resource_param = ["${split(",", var.CSV_STRING)}"] । उदाहरण: split(",", module.amod.server_ids)

  • substr(string, offset, length) - इनपुट स्ट्रिंग से एक विकल्प निकालता है। एक नकारात्मक ऑफसेट को स्ट्रिंग के अंत से पीछे की ओर मापा गया एक सकारात्मक ऑफसेट के बराबर माना जाता है। -1 लंबाई "स्ट्रिंग के अंत तक" अर्थ के रूप में व्याख्या की गई है।

  • timestamp() - RFC 3339 प्रारूप में एक UTC टाइमस्टैम्प स्ट्रिंग लौटाता है। यह स्ट्रिंग फ़ंक्शन के हर आह्वान के साथ बदल जाएगी, इसलिए हर योजना में ignore_changes को रोकने और लागू करने के लिए इसे ignore_changes जीवनचक्र विशेषता के साथ उपयोग किया जाना चाहिए।

  • timeadd(time, duration) - RFC 3339 प्रारूप में time दी गई duration को जोड़ने के लिए इसी UTC टाइमस्टैम्प स्ट्रिंग को लौटाता है।
    उदाहरण के लिए, timeadd("2017-11-22T00:00:00Z", "10m") एक मान "2017-11-22T00:10:00Z" पैदा करता है।

  • title(string) - सभी शब्दों के पहले वर्णों के साथ स्ट्रिंग की एक प्रति लौटाता है जिसे कैपिटलाइज़ किया जाता है।

  • transpose(map) - स्ट्रिंग की सूचियों के मानचित्र में कुंजियों और सूची मूल्यों को स्वैप करता है। उदाहरण के लिए, स्थानान्तरण (मानचित्र ("ए", सूची ("1", "2"), "बी", सूची ("2", "3")) मानचित्र के बराबर मूल्य ("1"), सूची ( "ए", "2", सूची ("ए", "बी"), "3", सूची ("बी"))।

  • trimspace(string) - सभी प्रमुख और पीछे चल रहे सफेद रिक्त स्थान के साथ स्ट्रिंग की एक प्रति लौटाता है।

  • upper(string) - उनके ऊपरी मामले में मैप किए गए सभी यूनिकोड अक्षरों के साथ स्ट्रिंग की एक प्रति लौटाता है।

  • urlencode(string) - urlencode(string) URL-सुरक्षित प्रति लौटाता है।

  • uuid() - RFC 4122 v4 प्रारूप में एक UUID स्ट्रिंग लौटाता है। यह स्ट्रिंग फ़ंक्शन के हर आह्वान के साथ बदल जाएगी, इसलिए हर योजना में ignore_changes को रोकने और लागू करने के लिए इसे ignore_changes जीवनचक्र विशेषता के साथ उपयोग किया जाना चाहिए।

  • values(map) - keys फ़ंक्शन द्वारा लौटाए गए कुंजियों के क्रम में मानचित्र मानों की एक सूची देता है। यह फ़ंक्शन केवल फ्लैट मैप्स पर काम करता है और उन नक्शों के लिए एक त्रुटि लौटाएगा जिसमें नेस्टेड सूची या नक्शे शामिल हैं।

  • zipmap(list, list) - चाबियों की सूची और मूल्यों की सूची से एक नक्शा बनाता है। चाबियाँ सभी प्रकार की होनी चाहिए, और सूचियों की लंबाई समान होनी चाहिए। उदाहरण के लिए, AWS IAM उपयोगकर्ता नामों की मैपिंग को उनके प्रारंभिक पासवर्ड को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली कुंजी के फिंगरप्रिंट के लिए आउटपुट करने के लिए, आप उपयोग कर सकते हैं: zipmap(aws_iam_user.users.*.name, aws_iam_user_login_profile.users.*.key_fingerprint)

टेम्पलेट्स

टेम्प्लेट का उपयोग करके लंबे तारों को प्रबंधित किया जा सकता है। Templates डेटा-स्रोत हैं जिन्हें एक फ़ाइल नाम और कुछ चर द्वारा परिभाषित किया गया है जो प्रक्षेप के दौरान उपयोग किया जाता है। उनके पास एक संगणित rendered विशेषता है जिसमें परिणाम होता है।

एक टेम्प्लेट डेटा स्रोत ऐसा दिखता है:

data "template_file" "example" {
  template = "$${hello} $${world}!"
  vars {
    hello = "goodnight"
    world = "moon"
  }
}

output "rendered" {
  value = "${data.template_file.example.rendered}"
}

तब प्रदान किया गया मान goodnight moon! होगा goodnight moon!

आप अपने टेम्पलेट में किसी भी अंतर्निहित कार्यों का उपयोग कर सकते हैं। टेम्प्लेट उपयोग के बारे में अधिक जानकारी के लिए, कृपया template_file प्रलेखन देखें।

गिनती के साथ टेम्पलेट्स का उपयोग करना

यहां एक उदाहरण दिया गया है, जो हमें एक पैरामीटर टेम्पलेट प्रदान करने के लिए count से प्रक्षेप के साथ टेम्पलेट्स की क्षमताओं को जोड़ता है, प्रत्येक संसाधन उदाहरण के लिए अद्वितीय है:

variable "count" {
  default = 2
}

variable "hostnames" {
  default = {
    "0" = "example1.org"
    "1" = "example2.net"
  }
}

data "template_file" "web_init" {
  # Render the template once for each instance
  count    = "${length(var.hostnames)}"
  template = "${file("templates/web_init.tpl")}"
  vars {
    # count.index tells us the index of the instance we are rendering
    hostname = "${var.hostnames[count.index]}"
  }
}

resource "aws_instance" "web" {
  # Create one instance for each hostname
  count     = "${length(var.hostnames)}"

  # Pass each instance its corresponding template_file
  user_data = "${data.template_file.web_init.*.rendered[count.index]}"
}

इसके साथ, हम template_file.web_init डेटा संसाधनों की एक सूची बनाएंगे जिसका उपयोग हम अपनी aws_instance.web संसाधनों की सूची के साथ संयोजन में कर सकते हैं।

गणित

साधारण गणित को प्रक्षेपों में किया जा सकता है:

variable "count" {
  default = 2
}

resource "aws_instance" "web" {
  # ...

  count = "${var.count}"

  # Tag the instance with a counter starting at 1, ie. web-001
  tags {
    Name = "${format("web-%03d", count.index + 1)}"
  }
}

समर्थित संचालन हैं:

  • जोड़ें ( + ), घटाव ( - ), गुणा प्रकार ( * ), और फ्लोट प्रकारों के लिए विभाजित ( / )
  • पूर्णांक प्रकारों के लिए ( + ), घटाव ( - ), गुणा ( * ), विभाजित ( / ) और मोडुलो ( % ) जोड़ें

ऑपरेटर पूर्ववर्ती संचालन का मानक गणितीय क्रम है: गुणा ( * ), डिवाइड ( / ), और मोडुलो ( % ) में ऐड ( + ) और सबट्रेक्ट ( - ) पर पूर्वता है। कोष्ठक का उपयोग आदेश देने के लिए किया जा सकता है।

"${2 * 4 + 3 * 3}" # computes to 17
"${3 * 3 + 2 * 4}" # computes to 17
"${2 * (4 + 3) * 3}" # computes to 42

आप गणित के संचालन की कोशिश करने के लिए टेराफॉर्म कंसोल कमांड का उपयोग कर सकते हैं।