【发布时间】:2017-01-19 09:10:55
【问题描述】:
我的剧本中有这个:
- name: Get facts about containers
shell: "docker ps -f name=jenkins --format {%raw%}{{.Names}}{% endraw %}"
register: container
注意,我插入了{%raw%} 和{%endraw%},这样ansible 就不会评估'{{'。
如果我运行这个,我会得到这个错误:
致命:[本地主机]:失败! => {"failed": true, "msg": "{u'cmd': u'docker ps -f name=jenkins --format {{.Names}}', u'end': u'2017-01 -19 10:04:27.491648', u'stdout': u'ecs-sde-abn-17-jenkins-ec8eccee8c9eb8e38f01', u'changed': True, u'start': u'2017-01-19 10: 04:27.481090', u'delta': u'0:00:00.010558', u'stderr': u'', u'rc': 0, 'stdout_lines': [u'ecs-task-17-jenkins- ec8eccee8c9eb8e38f01'], u'warnings': []}: template error while templating string: unexpected '.'. String: docker ps -f name=jenkins --format {{.Names}}"}
换句话说,命令运行成功(输出 ecs-task-17-jenkins-ec8eccee8c9eb8e38f01 是正确的),但它再次尝试模板字符串...?
这里出了什么问题,我该如何解决?
已编辑
像这样转义{{:
shell: "docker ps -f name=jenkins --format {{ '{' }}{.Names}{{ '}' }}"
导致同样的错误。
【问题讨论】: