2017-09-20 1 views
2

In Terraforming ich verwenden kann:Terraforming - eingebettete Anführungszeichen

name = "${var.names["apple"])" 

, die die Zeichenfolge "Apfel" in var.names nachschlägt.

Diese Syntax würde jedoch in den meisten Programmiersprachen brechen, da sie "${var.names[" und dann apple und dann "])" analysieren würde.

Ich habe die Dokumentation nachgeschlagen, konnte aber nichts finden. Gibt es irgendwelche Details?

Ich habe gelesen:

https://www.terraform.io/docs/configuration/syntax.html und https://www.terraform.io/docs/configuration/interpolation.html

Das letzte Glied gibt kurz ein Beispiel

template = "${file("templates/web_init.tpl")}" 

aber nicht erklären.

+1

Was fragen Sie eigentlich? Wie können sie das schaffen? Ich vermute, das liegt an ihrem Parser, von dem ich annehme, dass er nach '$ {..}' sucht, dann arbeitet er nach außen. –

+1

Ich dachte, ich wäre ziemlich klar gewesen -> Gibt es Details zu dieser Syntax? Es ist ein wenig nervig, die Syntax erraten zu müssen, wenn sie eigentlich sehr intuitiv ist, da die Syntax in den meisten Programmiersprachen brechen würde. – Snowcrash

+0

Richtig, da stimme ich dir zu - ich habe das Gefühl, dass ich die Syntax oft bekämpfe. Auf Ihrem zweiten Link heißt es: "In Strings in Terraform eingebettet, können Sie unabhängig davon, ob Sie die Terraform-Syntax oder die JSON-Syntax verwenden, andere Werte interpolieren. Diese Interpolationen sind in $ {} eingeschlossen, z. B. $ {var.foo }. "_ Ich denke, zusammen mit der Tatsache, dass diese Interpolationen dann Kartenvariablen usw. enthalten können, erklärt es, aber ja - nicht sehr explizit –

Antwort

0

Upgrade guide bis v0.7 führt explizit einen verschachtelten Quoting-Kontext ein. Anscheinend war das seit einer der früheren Versionen erlaubt, aber ich konnte nicht genau feststellen, welches genau.

Verwandte Themen