可靠的。 Select key:value 对列表中的第 n 个项目,其中键等于 x
Ansible. Select n-th item in a list of key:value pairs where key equals to x
从包含多个项目的列表 entities
中,确定哪个项目(索引号)的键 is_default
等于 true
。已知列表中只有一项符合此条件。将生产的项目分配给一个变量。
---
- hosts: databases
gather_facts: true
vars:
entities:
- name: dude
is_default: false
id: 2104
gen: 12-C
- name: mate
is_default: true
id: 1724
gen: 13-A
- name: pal
is_default: false
id: 1809
gen: 13-A
通过查看列表,我们可以确定名为 mate
的列表中的第二项具有等于 true
的键 is_default
。下面演示需要选择列表中的哪一项:
---
- hosts: databases
gather_facts: true
vars:
entities:
- name: dude
is_default: false
id: 2104
gen: 12-C
- name: mate
is_default: true
id: 1724
gen: 13-A
- name: pal
is_default: false
id: 1809
gen: 13-A
selected_item: "{{ entities[1] }}"
tasks:
- name: show
debug:
msg: "{{ selected_item }}"
在这种情况下,selected_item
变量存储列表的正确项。需要避免这种方法,因为键 is_default
等于 true
的项目可能位于列表中的任何索引处,关键是要避免查看列表以确定需要哪个项目。需要在显示的 Ansible 配置文件中解决。
尝试
selected_item: "{{ entities|selectattr('is_default')|list|first }}"
从包含多个项目的列表 entities
中,确定哪个项目(索引号)的键 is_default
等于 true
。已知列表中只有一项符合此条件。将生产的项目分配给一个变量。
---
- hosts: databases
gather_facts: true
vars:
entities:
- name: dude
is_default: false
id: 2104
gen: 12-C
- name: mate
is_default: true
id: 1724
gen: 13-A
- name: pal
is_default: false
id: 1809
gen: 13-A
通过查看列表,我们可以确定名为 mate
的列表中的第二项具有等于 true
的键 is_default
。下面演示需要选择列表中的哪一项:
---
- hosts: databases
gather_facts: true
vars:
entities:
- name: dude
is_default: false
id: 2104
gen: 12-C
- name: mate
is_default: true
id: 1724
gen: 13-A
- name: pal
is_default: false
id: 1809
gen: 13-A
selected_item: "{{ entities[1] }}"
tasks:
- name: show
debug:
msg: "{{ selected_item }}"
在这种情况下,selected_item
变量存储列表的正确项。需要避免这种方法,因为键 is_default
等于 true
的项目可能位于列表中的任何索引处,关键是要避免查看列表以确定需要哪个项目。需要在显示的 Ansible 配置文件中解决。
尝试
selected_item: "{{ entities|selectattr('is_default')|list|first }}"