2017-08-24 117 views
1

我使用遠程EXEC提供商在我terraform v0.9.11模板是這樣的:如何逃避terraform中的雙引號?

... 
provisioner "remote-exec" { 
    inline = [ 
     "Set-ExecutionPolicy Bypass -force", 
     "./C:\ProgramData\Amazon\EC2-Windows\Launch\Config\Replace-FileString.ps1 -Pattern '""' -Replacement '"${var.admin_password}"' -Path LauchConfig.json" 
    ] 
... 

但我在-Pattern '""'得到一個illegal char escape錯誤。

我要在遠程計算機上執行的命令是:"... FileString.ps1 -Pattern '""' -Replacement '"xyz"' "

PS:用\轉義像"... FileString.ps1 -Pattern '\"\"' -Replacement '\"xyz\"' "也不起作用。

...這裏代表省略不相關的文字。

+0

一切從我所看到的,它看起來像一個反斜槓應努力逃脫,當你嘗試它實際上會發生什麼 - 假設它是某種解析器錯誤?如果是這樣,我想知道這是否是terraform和sho的迴歸uld被記錄爲新的錯誤。同時,你可以使用'script'選項而不是'inline'嗎? –

+0

@JamesThorpe當我使用了反斜槓時,我仍然得到'非法字符轉義'..我會嘗試'腳本',看看問題是否仍然存在 – Sami

+1

只是看着那個 - 你可能需要使用['file'和'inline',因爲你有參數傳入](https://www.terraform.io/docs/provisioners/remote-exec.html#script-arguments)('admin_password') –

回答

1

原來指向-Pattern '""'當錯誤信息被誤導爲實際的錯誤原來是在模板中的另一個位置,其中在Windows文件路徑中的反斜槓不正確地轉義(即C:\filename當它應該!一直C:\\filename

錯誤消息需要在正確的錯誤位置指向