2017-09-20 4 views
2

En Terraform je peux utiliser:Terraform - entre guillemets intégré

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

qui recherche la chaîne "pomme" dans var.names.

Cependant, cette syntaxe casserait dans la plupart des langages de programmation car elle essayerait d'analyser "${var.names[" puis apple puis "])".

J'ai recherché de la documentation à ce sujet mais je n'ai rien trouvé. Y a-t-il des détails?

J'ai lu:

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

Le dernier lien donne brièvement un exemple

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

mais n'explique pas.

+1

Que demandez-vous réellement? Comment ils peuvent faire ce travail? Je suppose que c'est juste leur analyseur, qui suppose que je recherche $ {..} 'sur toute autre chose, puis fonctionne vers l'extérieur –

+1

Je pensais avoir été assez clair -> Y a-t-il des détails sur cette syntaxe? C'est un peu gênant d'avoir à deviner la syntaxe quand c'est en fait très anti-intuitif étant donné que la syntaxe casserait dans la plupart des langages de programmation. – Snowcrash

+0

Bon, je suis d'accord avec vous - j'ai l'impression de lutter contre la syntaxe la plupart du temps. Sur votre second lien, il dit _ "Embedded dans les chaînes de Terraform, que vous utilisiez la syntaxe Terraform ou la syntaxe JSON, vous pouvez interpoler d'autres valeurs .Ces interpolations sont enveloppées dans $ {}, comme $ {var.foo }. "_ Je suppose couplé avec le fait que ces interpolations peuvent alors contenir des variables de la carte, etc, mais en quelque sorte l'expliquer, mais pas très explicitement –

Répondre

0

Upgrade guide à v0.7 introduit explicitement un contexte de soumission imbriqué. Apparemment, cela avait été autorisé depuis l'une des versions précédentes, mais je ne pouvais pas déterminer laquelle exactement.