Ansible:如何使用变量中的变量数迭代数组

Ansible:如何使用变量中的变量数迭代数组,ansible,Ansible,我有一个数组,来自循环的注册结果。 它有4个元素。 我想用循环遍历数组中的项目,顺序为:0-3(3,表示最后一个元素)。 当我进行如下“硬编码”时,一切正常,我得到了我想要的结果。 但我不知道如何将序列变量放入结果变量中,请有人指导我好吗 工作代码: - name: Show output array debug: msg: - "{{ output.results[0] }}" # This also works - "{{ o

我有一个数组,来自循环的注册结果。
它有4个元素。
我想用循环遍历数组中的项目,顺序为:0-3(3,表示最后一个元素)。
当我进行如下“硬编码”时,一切正常,我得到了我想要的结果。
但我不知道如何将序列变量放入结果变量中,请有人指导我好吗

工作代码:

- name: Show output array
  debug:
    msg:
      - "{{ output.results[0] }}" # This also works
      - "{{ output.results.0.stdout }}"
      - "{{ output.results.1.stdout }}"
      - "{{ output.results.2.stdout }}"
      - "{{ output.results.3.stdout }}"
  run_once: yes
非工作代码(语法错误)

任务[显示输出数组]************************************************************************************************ 致命:[localhost]:失败!=>{“msg”:“模板字符串时模板错误:应为名称或编号。字符串:{{output.results.{{my_item}}.stdout}”

我有一个数组,来自循环的注册结果

从您的问题来看,您似乎在
输出中获得了一个数组。结果[0-n]
。此外,您在
调试任务中有3条消息。错误是针对第二条消息:

- "{{ output.results.{{ my_item }}.stdout }}" # Not working
它还抱怨在已经打开的Jinja上下文中存在不必要的
{{..}}

简易方法:

由于
output.results
已经是一个数组,您可以直接在其上循环,只需获取
item.stdout

例如:

-调试:
msg:“{item.stdout}”
带有_项:“{output.results}”
使用序列或
范围

将示例中的
范围
用作
和_序列
替换为
循环

with_sequence
loop
range
函数以及潜在的
format
过滤器所取代

-调试:
msg:{{output.results[my_item].stdout}”
循环:{range(0,output.results | length)| list}
回路控制:
循环变量:我的项目
- "{{ output.results.{{ my_item }}.stdout }}" # Not working