將 List 轉置為 dict 的 list
需求是這樣子的,需要把 List 裡的元素轉置為 dict,再放到 List 裡。
也就是
my_users:
- aaa
- bbb
- ccc
要轉換為
my_users:
- Name: aaa
- Name: bbb
- Name: ccc
用 Ansible 該怎麼做呢?看這篇:Using filters to manipulate data 看了好久,都沒找到適合的 filter…
試了好一會,終於試出來,在這邊分享。這個方法需要使用 loop ,再搭配 List 可以相加的特性。Playbook 如下
- name: Transform data
vars:
orig_users:
- aaa
- bbb
- ccc
my_users: []
set_fact:
my_users: "{{ my_users + [{} | combine({'Name': item})] }}"
loop: "{{ orig_users }}"
說明如下:
- 利用 combine 這個 filter 來組出 dict
- 利用 loop 去 iterate orig_users
- 用
my_users + [{} | combine({'Name': item})]
來做 List append
用這樣的方式,就可以去做出轉置了。
參考資料: