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 {{"}}"}}