用于打印输出的 Ansible Jinja2 产生重复结果
Ansible Jinja2 for printout produces duplicate result
Ansible 版本 2.2,Mac OS X El Capitan
我正在尝试生成端口映射列表。
当我 运行 那样编码时
---
- hosts: [localhost]
sudo: True
pre_tasks:
- debug:
var: "{% for id in range(100,102) %}
'{{ id }}'
{% endfor %}"
我希望得到这样的结果:
"'100' '101'"
但是我得到的结果是:
" '100' '101' ": "100101"
为什么我得到这样的结果不是很明显。它看起来像是根据结果创建了某种地图,但我不明白为什么。
您得到了预期的结果,只是看到了不一致的输出,因为您在 debug
模块中使用了 var
参数而不是 msg
。
尝试:
- hosts: localhost
tasks:
- debug:
msg: "{% for id in range(100,102) %}
'{{ id }}'
{% endfor %}"
在更复杂的情况下,您可能会考虑一种更可靠的调试方式,将内容保存到文件中并检查内容。这将消除显示 Ansible 日志的回调插件的影响。
- hosts: localhost
tasks:
- copy:
dest: ./result.txt
content: "{% for id in range(100,102) %}
'{{ id }}'
{% endfor %}"
然后:
cat ./result.txt
Ansible 版本 2.2,Mac OS X El Capitan
我正在尝试生成端口映射列表。
当我 运行 那样编码时
---
- hosts: [localhost]
sudo: True
pre_tasks:
- debug:
var: "{% for id in range(100,102) %}
'{{ id }}'
{% endfor %}"
我希望得到这样的结果:
"'100' '101'"
但是我得到的结果是:
" '100' '101' ": "100101"
为什么我得到这样的结果不是很明显。它看起来像是根据结果创建了某种地图,但我不明白为什么。
您得到了预期的结果,只是看到了不一致的输出,因为您在 debug
模块中使用了 var
参数而不是 msg
。
尝试:
- hosts: localhost
tasks:
- debug:
msg: "{% for id in range(100,102) %}
'{{ id }}'
{% endfor %}"
在更复杂的情况下,您可能会考虑一种更可靠的调试方式,将内容保存到文件中并检查内容。这将消除显示 Ansible 日志的回调插件的影响。
- hosts: localhost
tasks:
- copy:
dest: ./result.txt
content: "{% for id in range(100,102) %}
'{{ id }}'
{% endfor %}"
然后:
cat ./result.txt