как вывести значения из списка в шаблоне ansible jinja2 - PullRequest
0 голосов
/ 28 июня 2019

У меня есть переменная, которая хранит 2 значения из прогонов задач

- name: Set result
  set_fact:
    xresult: "{{ xresult | default([]) + [ yresult ] }}"

напечатано с отладкой, это выглядит так:

[u'abc', u'def']

Я пытаюсь отобразить вывод в шаблоне jinja2 следующим образом:

{% for x in xresult %}
First run result: {{ x[0] }}
Second run result:{{ x[1] }}
{% endfor %}

Вывод должен выглядеть так:

First run result: abc
Second run result: def

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Игра ниже

- hosts: localhost
  vars:
    xresult:
      - abc
      - def
  tasks:
    - set_fact:
        output: |
          {% for i in range(0, xresult|count, 2) %}
          First run result: {{ xresult[i] }}
          Second run result: {{ xresult[i+1] }}
          {% endfor %}
    - debug:
        msg: "{{ output.split('\n') }}"

дает

"msg": [
    "First run result: abc", 
    "Second run result: def", 
    ""
]
0 голосов
/ 28 июня 2019

По сути, это будет отображать только следующее значение.

First run result: a
Second run result: b
First run result: d
Second run result: e

Поскольку вы используете x [0], значение для первой итерации будет равно x = abc, и вы используете его как x [0], т. Е. X [abc], который фактически является.

Вам необходимо ограничить прогон и получить прямой доступ к значениям, поэтому для этого нужно добавить некоторое логическое условие.

Надеюсь, так почему очищается просто нужно обработать в шаблоне.

...