循环遍历yaml以获取ansible-playbook中的特定键值

时间:2017-08-24 05:00:40

标签: ansible yaml

我有一个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。

上述任何提示都会有所帮助。

1 个答案:

答案 0 :(得分:0)

Ansible使用Jinja2模板,因此您可以使用filters,在这种情况下使用selectattr filter

- debug:
    msg: "{{ test_metadata | selectattr('provision_windows') | list }}"

==>这会显示test_metadata的所有元素,其中provision_windows属性设置为True