我有一个yaml文件(abc.yaml),结构如下:
- my-container-sanity-testing:
tier: 0
phase: 1
provision_windows: True
resource_group_type: openstack
resource_groups:
- name: 'container_0'
role: 'atomic'
count: 1
image: 'fedora-atomic-cloud-released-latest'
- name: 'windows_0'
role: 'ad'
count: 1
image: 'win-2012-r2'
我有一个以下任务的剧本。
-name: Get test metadata
set_fact:
test_metadata="{{ lookup('file', '{{ playbook_dir }}/abc.yaml') | from_yaml }}"
我如何循环yaml假设我已经知道具体的列表值(my-container-sanity-testing)并检查列表值(这是一个dict)是否具有关键的provision_windows:True。
上述任何提示都会有所帮助。
答案 0 :(得分:0)
Ansible使用Jinja2模板,因此您可以使用filters,在这种情况下使用selectattr
filter:
- debug:
msg: "{{ test_metadata | selectattr('provision_windows') | list }}"
==>这会显示test_metadata
的所有元素,其中provision_windows
属性设置为True