我在 Ansible 中有两个注册变量,两者的行数相同。
register_1.stdout_lines
有以下输出
1
2
...
120
register_2.stdout_lines
有以下输出
one
two
...
one hundred twenty
我想将
register_1.stdout_lines
的第一个值与 register_2.stdout_lines
的第一个值匹配,将 register_1.stdout_lines
的第二个值与 register_2.stdout_lines
的第二个值匹配,一直到 120。
预期输出:
1 one
2 two
... ...
120 one hundred twenty
我尝试使用循环,但我得到的输出为:
1 one
1 two
1 three
...
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