每个列表的第一项附加到 ansible playbook 中的另一个列表
First item of each list appended to another list in ansible playbook
以上我好像做不到。
---
...
vars:
sg:
- hostname: test26081
skip: this1
- hostname: test26082
skip: this2
- set_fact:
sg_dest: "{{ sg[0]['hostname'] }}"
我上面的解决方案只会将第一个主机名 (test26081) 附加到我的 set_fact,我想包括第二个主机名 test26082,这样我只有一个简单的主机名列表。我试过各种方法都无济于事。
我无法对第二个值进行硬编码 "{{ sg[1]['hostname'] }}"
,因为它需要针对新条目进行缩放。
您可以在 set_fact
任务中循环遍历列表 sg
并将其附加到新列表 (sg_dest
)。
---
- hosts: localhost
vars:
sg:
- hostname: test26081
skip: this1
- hostname: test26082
skip: this2
tasks:
- debug: var=sg
- name: Initialize an empty list for our hostnames
set_fact:
sg_dest: []
- set_fact:
sg_dest: "{{ sg_dest + [ item.hostname ] }}"
with_items: "{{ sg }}"
- debug: var=sg_dest
以上我好像做不到。
---
...
vars:
sg:
- hostname: test26081
skip: this1
- hostname: test26082
skip: this2
- set_fact:
sg_dest: "{{ sg[0]['hostname'] }}"
我上面的解决方案只会将第一个主机名 (test26081) 附加到我的 set_fact,我想包括第二个主机名 test26082,这样我只有一个简单的主机名列表。我试过各种方法都无济于事。
我无法对第二个值进行硬编码 "{{ sg[1]['hostname'] }}"
,因为它需要针对新条目进行缩放。
您可以在 set_fact
任务中循环遍历列表 sg
并将其附加到新列表 (sg_dest
)。
---
- hosts: localhost
vars:
sg:
- hostname: test26081
skip: this1
- hostname: test26082
skip: this2
tasks:
- debug: var=sg
- name: Initialize an empty list for our hostnames
set_fact:
sg_dest: []
- set_fact:
sg_dest: "{{ sg_dest + [ item.hostname ] }}"
with_items: "{{ sg }}"
- debug: var=sg_dest