如何把 block 放在回圈裡?
因為之前寫程式的經驗,很直覺的想可以在 block 加上 loop,像這樣
- set_fact:
user_list:
- John
- Mary
- Jane
- block:
- debug:
msg: "start of loop"
- debug:
msg: "Hello {{ item }}"
- debug:
msg: "end of loop"
loop: "{{ user_list }}"
但很遺憾,不能這樣使用,Ansible 會抱怨你使用了錯誤的語法。
後來才找到可以用另外一種寫法來做到:How to loop blocks of code in Ansible
作法是這樣的,把 block 裡的 tasks 搬到另外一個 yaml 檔案裡,例如 block1.yml
---
# block1.yml
- debug:
msg: "start of loop"
- debug:
msg: "Hello {{ item }}"
- debug:
msg: "end of loop"
然後原來的回圈改用 include_tasks
- set_fact:
user_list:
- John
- Mary
- Jane
- include_tasks: block1.yml
loop: "{{ user_list }}"
雖然需要拆分到另外一個檔案,但改寫為這樣就達到目的了。