在加壳器中,如何在不调用函数的情况下在字符串中添加文字大括号 {{}}?

In packer, how do I add the literal braces {{}} in a string without calling a function?

Ansible 支持 {{CWD}} 宏。

Packer 使用 {{}} 作为函数和变量。

我看不出有什么方法可以转义 {{function_name}} 语法,这样我就可以输入文字 {{CWD}}。我尝试了很多不同的方法,包括使用 unicode 大括号(没有用),但它们总是无效或试图调用一个不存在的 CWD 函数,这显然会破坏打包程序。

这是我尝试开始工作的字符串示例。

"extra_arguments": [ "--extra-vars", "roles_path={{.CWD}}/temp-roles" ],

我找到了一个 hacky 解决方法。只需获取 shell 提供的 $PWD 变量并将其传入,然后在我使用 CWD 的地方使用它。这并没有回答我的问题,查看它基于的 Go 模板库,我认为不可能逃脱花括号。

  "variables": {
    "pwd": "{{env `PWD`}}"
  },

      "extra_arguments": [ "--extra-vars", "roles_path={{user `pwd`}}/temp-roles" ],

我相当确定这对于 packer 在后台使用的 go 模板引擎是不可能的。我已经和他们开了一张票,但由于他们正试图转移到 HCL,我不知道这是否会得到解决。

https://github.com/hashicorp/packer/issues/9125