我在ansible中有2个注册变量(都具有相同的行数)。
register_1.stdout_lines 有以下输出 1 2 。 。 120
register_2.stdout_lines 有以下输出 一 二 。 一百二十。
我想将register_1.stdout_lines的第一个值与register_2.stdout_lines的第一个值相匹配,将register_1.stdout_lines的第二个值与register_2.stdout_lines的第二个值相匹配,并继续直到120。
预期产出 1 一 2 两个 。 120百二十
尝试循环时,输出为,
1 一 1 两个 1 三及以后
任何建议都会有帮助。谢谢
zip
过滤器可以匹配两个相同大小的列表:
鉴于:
- name: Spell out numbers
ansible.builtin.debug:
msg: "{{ item.0 }} {{ item.1 }}"
loop: "{{ register_1.stdout_lines | zip(register_2.stdout_lines) }}"
loop_control:
label: "{{ item.1 }}"
vars:
register_1:
stdout_lines:
- 1
- 2
- 3
- ...
- 120
register_2:
stdout_lines:
- one
- two
- three
- ...
- one hundred twenty
您将得到以下输出:
ok: [localhost] => (item=one) =>
msg: 1 one
ok: [localhost] => (item=two) =>
msg: 2 two
ok: [localhost] => (item=three) =>
msg: 3 three
ok: [localhost] => (item=...) =>
msg: '... ...'
ok: [localhost] => (item=one hundred twenty) =>
msg: 120 one hundred twenty