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