[英]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.