我在我的剧本中有这个:
- name: Get facts about containers
shell: "docker ps -f name=jenkins --format {%raw%}{{.Names}}{% endraw %}"
register: container
请注意,我插入了{%raw%}
和{%endraw%}
,因此ansible不会评估'{{'。
如果我运行这个,我会收到此错误:
致命:[localhost]:失败! => {“失败”:真实,“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',你改变了:真的,你开始':你们2017-01-19 10:04: 27.481090',u'delta':u'0:00:00.010558',u'stderr':你','u'rc':0,'stdout_lines':[u'ecs-task-17-jenkins-ec8eccee8c9eb8e38f01' ],'uwarnings':[]}:模板错误,模板字符串:意外'。'。字符串:docker ps -f name = jenkins --format {{.Names}}“}
换句话说,命令成功运行(输出ecs-task-17-jenkins-ec8eccee8c9eb8e38f01是正确的),但是它再次尝试模板字符串?
这里出了什么问题,如何解决这个问题?
EDITED
像这样逃离{{
:
shell: "docker ps -f name=jenkins --format {{ '{' }}{.Names}{{ '}' }}"
导致同样的错误。
答案 0 :(得分:2)
这是Ansible 2.2.1中引入的问题:https://github.com/ansible/ansible/issues/20400。
在内部使用<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<div class="tweetButtonLaytout">
<div id="buttonContainer"></div>
<select id="TweetCounties" value="0">
<option value="0">Select Area</option>
<option value="1">Dublin</option>
<option value="2">Cavan</option>
<option value="3">Wicklow</option>
<option value="4">Galway</option>
</select>
</div>
注册变量时会发生错误。
This解决方法阻止{{
出现在注册变量中:
{{
重现错误的方法:
shell: "docker inspect --format '{''{ .NetworkSettings.IPAddress }''}' consul"