在上一篇 Ansible how to use ‘list’ in yaml file
有提到怎麼用 with_items / set_fact 來取得在yaml 檔案中的清單
不過就是有點醜
這兩天又修改了一下,不需要用 when 來指定條件,改成用 filter 來篩選資料
將list整理成我們需要的「部份」資料就好,而不是所有資料都塞進來
- name: set dc_users
tags:
- dcusers
- depot_folder
- env
set_fact:
dc_users: "{{ item.users }}"
with_items: "{{ teams|selectattr('name','equalto','dc')|map(attribute='users')|list }}"
有沒有比較「優雅」(自己說…
先把 teams 這個 var 抓進來,然後用 selectattr 這個filter 選出 name == dc 的資料
再將篩選後的資料,用 map 去抓出 users 這個屬性,最後轉成 list
這樣子就可以直接得到 users 了