从包含多个项目的列表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 }}"