问题: 我正在尝试使用ansible管理我的弹性观察者,但运行我的剧本时出现以下错误:
“致命:[localhost] =>一个或多个未定义变量:“ ctx”未定义”
我发现原因是我的/roles/update-watchers/files/watcher.json文件(我的弹性观察者的json负载)包含许多使用观察者语法{{ctx.payload.status}}的引用
为了解决这个问题,我发现了一篇文章http://svops.com/blog/managing-elastic-watches-with-ansible/,其中说我可以对json文件中的变量引用进行转义,因此Ansible将忽略它。因此,而不是包含以下内容的watcher json文件:
{{ ctx.payload.status }}
它包含了这个
{% raw %}{{ ctx.payload.status }}{% endraw %}
这有效并且Ansible从我的观察者操作块的此示例部分中更新了有效负载:
"actions": {
"index_payload": {
"create-jira-issue": {
"jira": {
"account": "jiraaccountname",
"fields": {
"summary": "{{ctx.payload.summary}}",
"description": "{{ctx.payload.description}}"
}
}
}
}
}
对此:
"actions": {
"index_payload": {
"create-jira-issue": {
"jira": {
"account": "jiraaccountname",
"fields": {
"summary": "{% raw %}{{ctx.payload.summary}}{% endraw %} ",
"description": "{% raw %}{{ctx.payload.description}}{% endraw %} "
}
}
}
}
}
我现在面临的问题是,在上面的操作块中尝试创建Jira票证时,观察程序失败。除了使凭单不可读之外,因为凭单的摘要和说明的末尾都有esc字符,这还使“摘要”字段中的Jira验证失败。
问题: 我有什么办法可以避免不得不使用esc字符,而是让Ansible忽略我从/ roles / update-watchers / files /目录传递的文件中的{{}}字符吗?
也许某本剧本中存在某种全局标记?任何帮助将不胜感激。