用于打印输出的 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