Hi
How can I avoid that the template engine throws this error ?
Task
`
- name: Get Service Account Token
shell: |
/usr/local/bin/oc get sa/jenkins -n {{ namespace }} --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -D -
register: sa_jenkins_token
`
Error
`
fatal: [10.8.244.145]: FAILED! => {"failed": true, "msg": "template error while templating string:
unexpected '.'. String: /usr/local/bin/oc get sa/jenkins -n {{ namespace }} --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -D -"}
`
Regards
Charles
Hi
How can I avoid that the template engine throws this error ?
Don't use . in variable name.
https://docs.ansible.com/ansible/latest/playbooks_variables.html#what-makes-a-valid-variable-name
Task
- name: Get Service Account Token
shell: |
/usr/local/bin/oc get sa/jenkins -n {{ namespace }} --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 oc get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -D -
register: sa_jenkins_token
This looks very strange and I don't understand what you are trying to do.
{{ }} is only used for variables not Jinja logic.
The shell command that I want to execute is
`
oc get sa/jenkins -n infra --template=‘{{range .secrets}}{{ .name }} {{end}}’ | xargs -n 1 oc get secret --template=‘{{ if .data.token }}{{ .data.token }}{{end}}’ | head -n 1 | base64 -D -
`
and I will get as response a token
So the {{ }} characters that you see within my command are used to extract info using openshift oc template
I will change my syntax to use jsonpath
sivel
(sivel)
4
The problem is that you seem to be using templating that the oc
command will use that overlaps with template syntax of jinja.
You will likely need to wrap your command in {% raw %}command with {{ here }}{% endraw %}
See http://jinja.pocoo.org/docs/dev/templates/#escaping
user35
(Денис Милованов)
5
Has the same error, by trying send this way:
An unhandled exception occurred while templating ‘Alertname: {{ .GroupLabels.alertname }}\n Severity: {{ .CommonLabels.severity }}\n {{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}’. Error was a <class ‘ansible.errors.AnsibleError’>, original message: template error while templating string: unexpected ‘.’. String: Alertname: {{ .GroupLabels.alertname }}\n Severity: {{ .CommonLabels.severity }}\n {{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"
}
?
Guys, make some advice, please.
пятница, 27 октября 2017 г. в 19:30:33 UTC+3, Matt Martz: