Ansible 错误:模板字符串时出现模板错误:预期标记"打印结束语句",得到"字符串"


kubectl get -n istio-system secret istio-ca -ogo-template='{{index .data "tls.crt"}}' | base64 -d > ca.pem

如何在易理解的剧本中运行上述命令?

我正在尝试按如下方式使用它:

- name: Apply secret istio-ca
shell: kubectl get -n istio-system secret istio-ca -ogo-template='{{index .data "tls.crt"}}' | base64 -d > ca.pem
register: sout

但这给了我一个错误如下:

fatal: [172.31.20.135]: FAILED! => {"msg": "template error while templating string: expected token 'end of print statement', got 'string'. String: kubectl get -n istio-system secret istio-ca -ogo-template='{{index .data "tls.crt"}}' | base64 -d > ca.pem"}

我发誓这个问题已经被回答了一千次,但我无法立即在成千上万个相同错误中找到golang/hem/kubectl特定的错误

问题是jinja2使用{{作为其转义语法,但golang文本模板使用{{作为其转义句法,并且由于ansible不知道你指的是golang版本,它试图将你的go模板评估为jinja2和kaboom

有两种途径可以摆脱这种情况:{% raw %}{% endraw %},或者具有解析为内部golang表达的外部jinja2表达

- debug:
msg: kubectl get {% raw %}-ogo-template={{ awesome }}{% endraw %}
- debug:
msg: kubectl get -ogo-template={{"{{"}} awesome {{"}}"}}

相关内容

  • 没有找到相关文章

最新更新