繁体   English   中英

如何从ansible jinja2模板中的列表中输出值

[英]how to output values from a list in ansible jinja2 template

我有一个变量,它存储任务运行中的2个值

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

用debug打印它显示如下:

[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

下面的戏

- 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", 
    ""
]

这实际上将仅显示以下值。

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

因为您使用的是x [0],所以第一次迭代的值将为x = abc,并将其用作x [0],即x [abc],实际上是a。

您需要限制运行并直接访问值,因此需要添加一些逻辑条件才能实现。

希望这样清除的原因只需要在模板中处理即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM