我的剧本里有这个:
- name: Get facts about containers
shell: "docker ps -f name=jenkins --format {%raw%}{{.Names}}{% endraw %}"
register: container
请注意,我插入了{%raw%}
and {%endraw%}
这样 ansible 不会评估“{{”。
如果我运行这个,我会得到这个错误:
致命:[localhost]:失败! => {“失败”: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'警告':[]}:模板化字符串时出现模板错误:意外的'.'。字符串:docker ps -f name=jenkins --format {{.Names}}"}
换句话说,该命令成功运行(输出 ecs-task-17-jenkins-ec8eccee8c9eb8e38f01 是正确的),但它再次尝试模板字符串...?
这里出了什么问题,我该如何解决这个问题?
EDITED
逃离{{
像这样:
shell: "docker ps -f name=jenkins --format {{ '{' }}{.Names}{{ '}' }}"
导致同样的错误。
这是Ansible 2.2.1中引入的问题:https://github.com/ansible/ansible/issues/20400 https://github.com/ansible/ansible/issues/20400。
注册变量时发生{{
里面。
This https://stackoverflow.com/a/41721634/2795592解决方法防止{{
从出现在注册变量中:
shell: "docker inspect --format '{''{ .NetworkSettings.IPAddress }''}' consul"
重现bug的方法:
- hosts: localhost
gather_facts: no
tasks:
- shell: "echo '{''{.Names}''}'"
register: myvar
- debug: var=myvar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)