2017-08-24 2 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

错误消息需要在正确的错误位置指向