如何在 list 裡新增內容或合併兩個 list?
使用場景
寫作 Playbook 若遇到這兩種情況時,可以怎麼做呢?
- 新增內容到 list 裡
- 合併兩個 list
方法
方法相當簡單,使用 + 就可以。
新增內容到 list 時,可以這樣寫
- name: 配置 list
set_fact:
result_list: []
- name: 取得時間
shell: date +%T
register: shell_result
- name: 附加內容到 result_list
set_fact:
result_list: "{{ result_list + [ shell_result.stdout ]}}"
- name: 再次取得時間
shell: sleep 3 && date +%T
register: shell_result
- name: 附加內容到 result_list
set_fact:
result_list: "{{ result_list + [ shell_result.stdout ]}}"
若是要合併兩個 list,就是這樣寫
- name: 配置兩個 list
set_fact:
list_one:
- 1
- 2
- 3
list_two:
- 4
- 5
- 6
- name: 合併兩個 list
set_fact:
lists_merged: "{{ list_one + list_two }}"
結論
在做例如檢查性的 playbook 時,透過這個技巧,就可以持續把項目的檢查結果加到 list 裡。檢查的結過可以在最後用 template 去處理 list 來顯示就可以了。