2017-06-14 172 views
0

這似乎是一個簡單的問題,也許我在某處誤讀了文檔。我試圖設置一個字符串值的變量,在我的情況下,它是一個Azure blob的SAS令牌,然後我想傳遞給模板部署。我遇到的問題是字符串被插入導致令牌無效。我無法弄清楚如何傳遞一個變量,而不是插入它。無插值的Terraform變量

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

你是如何傳遞字符串到變量?我個人從來沒有在terraform的URL上編碼的問題。我想知道在字符串到達​​Terraform之前是否發生了這種情況。或者相反,也許它可能是在您正在使用的資源提供程序或提供程序中轉義字符串,而不是在插值引擎中。該價值被傳遞給什麼資源或供應商?這也可能有助於瞭解您使用的地形的哪個版本。 – nbering

回答

0

您可以將該變量放入一個文件並將其讀入一個字符串中。

file(path) - 將文件內容讀入字符串。 該文件中的變量不是插值的。該文件的內容按原樣讀取。路徑是相對於工作目錄解釋的。路徑變量可用於引用相對於其他基本位置的路徑。例如,當從模塊內部使用file()時,通常需要使路徑相對於模塊庫,如下所示:file(「$ {path.module}/file」)。

https://www.terraform.io/docs/configuration/interpolation.html#file-path-