这似乎是一个简单的问题,也许我在某处误读了文档。我试图设置一个带字符串值的变量,在我的例子中,它是Azure blob的SAS令牌,然后我想将其传递给模板部署。我遇到的问题是字符串被插值导致令牌无效。我无法弄清楚如何传递一个变量而不是插值。
scripts_blob_sas_token = "${var.scripts_blob_sas_token}"
这是字符串:
?sv=2015-04-05&sr=c&sig=O%2FurgY2Eu%2FZN3Ax1GSN58cNpc2DRMahLdB7lPqVifNc%3D&st=2017-06-13T17%3A17%3A45Z&se=2027-06-13T17%3A17%3A45Z&sp=r
当我引用${var.scripts_blob_sas_token}
变量时,它会被插入到此:
?sv=2015-04-05\\u0026sr=c\\u0026sig=O%2FurgY2Eu%2FZN3Ax1GSN58cNpc2DRMahLdB7lPqVifNc%3D\\u0026st=2017-06-13T17%3A17%3A45Z
有没有办法在Terraform中调用变量并转义字符串的插值?
任何想法/建议都将不胜感激。
答案 0 :(得分:0)
您可以将变量放入文件中并将其读入字符串。
file(path) - 将文件内容读入字符串。 此文件中的变量未插入。文件的内容按原样读取。路径相对于工作目录进行解释。路径变量可用于引用相对于其他基本位置的路径。例如,当从模块内部使用file()时,通常需要创建相对于模块库的路径,如:file(" $ {path.module} / file")。
https://www.terraform.io/docs/configuration/interpolation.html#file-path-