1
目標:在完成循環中的所有任務時,需要發起對發起循環的任務的響應。如何在ANSIBLE循環中處理每次迭代的結果
示例代碼:
角色/創建/任務/ main.yml
- name: Perform operations on all elements of 'input' list
include: task_lists.yml
with_items: "{{ input }}"
角色/創建/任務/ task_lists.yml
# operation_1 is a python module
- name: Perform operation - 1
operation_1:
task: "Perform operation - 1"
.
.
.
# operation_2 is a python module
- name: Perform operation - 2
operation_2:
task: "Perform operation - 2"
.
.
.
我們有設計,其中一個框架,每個任務都是一個python模塊。我們將任務參數傳遞給每個模塊。根據框架,我們傳遞給python模塊的任務名稱和任務參數之間應該有一個映射。
現在的問題是,我們需要一個普通的python模塊從main.yml中調用。每次迭代的結果應該作爲輸入傳遞給這個python模塊並處理。
- name: Perform operations on all elements of 'input' list
include: task_lists.yml
#Store result from the task_lists.yml into register say 'result'
#Call a python module here, which accepts 'result' as input and does some operation
with_items: "{{ input }}"
我的問題這可能嗎?
有人可以幫我在這裏。
在此先感謝。
我最好的建議你可以嘗試在循環中使用'wait_for'。這可以等待特定的事件發生,例如等待直到創建特定的文件。然後,所有任務都可以在完成時創建帶有結果的輸出文件,並且主要進程將把這些輸出傳遞到下一個模塊。我不知道這是否是最好的解決方案,但它應該起作用。 –
您正在問這個問題[https://stackoverflow.com/q/38470217/2947502]。 Ansible中沒有這樣的機制 - 您可以手動將單個結果添加到列表中。 – techraf