【问题标题】:how to escape double quotation in terraform?如何在terraform中转义双引号?
【发布时间】:2018-02-02 12:46:16
【问题描述】:

我在 terraform v0.9.11 模板中使用 remote-exec 提供程序,如下所示:

... 
 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\"' " 这样用\ 转义也不起作用。

...代表此处省略不相关的文字。

【问题讨论】:

  • 从我所看到的一切来看,看起来用反斜杠转义应该可行。当你尝试它时实际上会发生什么 - 假设它是某种解析器错误?如果是这样,我想知道这是否是 terraform 的回归,应该记录为新错误。同时,您能否使用script 选项而不是inline
  • @JamesThorpe 当我使用反斜杠时,我仍然得到illegal char escape .. 我会尝试script 看看问题是否仍然存在
  • 只是在看 - 您可能需要使用 file and inline since you've got an argument to pass in (admin_password)

标签: terraform hcl


【解决方案1】:

事实证明,当指向 -Pattern '""' 时,错误消息具有误导性,因为实际错误出现在模板中的另一个位置,其中 windows 文件路径中的反斜杠未正确转义(即 C:\filename 当它应该是C:\\filename

错误信息需要指向正确的错误位置!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2013-06-17
    • 2013-03-16
    相关资源
    最近更新 更多