Dha*_*ade 0 ansible kubernetes kubectl
kubectl get -n istio-system secret istio-ca -ogo-template='{{index .data "tls.crt"}}' | base64 -d > ca.pem
Run Code Online (Sandbox Code Playgroud)
如何在 ansible playbook 中运行上述命令?
我尝试按如下方式使用它:
- 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
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误,如下所示:
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"}
Run Code Online (Sandbox Code Playgroud)
我发誓这个问题已经被回答了一千次,但是我无法立即在数千个相同的错误中找到 golang/helm/kubectl 的具体错误
问题是 jinja2 使用{{
作为其转义语法,但 golang 文本模板使用{{
作为其转义语法,并且因为 ansible 不知道您指的是 golang 版本,所以它尝试评估您的 go-template,就好像它是 jinja2 和 kaboom 一样
有两种解决这种情况的方法:{% raw %}
和/{% endraw %}
或具有解析为内部 golang 表达式的外部 jinja2 表达式
- debug:
msg: kubectl get {% raw %}-ogo-template={{ awesome }}{% endraw %}
- debug:
msg: kubectl get -ogo-template={{"{{"}} awesome {{"}}"}}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3874 次 |
最近记录: |