Ansible Jinja2 для распечатки дает повторяющийся результат

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"

Не очень очевидно, почему я получаю такой результат. Похоже, он создает какую-то карту из результатов, но я не понимаю, почему.


person AlexS    schedule 22.01.2017    source источник


Ответы (1)


Вы получаете ожидаемый результат, вы просто видите противоречивый вывод, потому что вы использовали параметр var вместо msg в модуле debug.

Пытаться:

- 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
person techraf    schedule 22.01.2017