2015-11-13 18 views
3

Ansible如何在一系列任務上執行劇本loop?我希望實現一個執行任務序列的輪詢循環,直到任務成功。當它失敗時,異常處理程序將嘗試修復該條件,然後循環將重複執行任務序列。Ansible如何循環執行一系列任務?

考慮以下假想例子:

- action: 
    - block: 
     - debug: msg='i execute normally' 
     - command: /bin/foo 
     rescue: 
     - debug: msg='I caught an error' 
     - command: /bin/fixfoo 
     always: 
     - debug: msg="this always executes" 
    register: result 
    until: result 
    retries: 5 
    delay: 10 

回答

4

在Ansible 1.x中這根本無法做到的。它只是沒有這樣設計。

Ansible 2.0支持遍歷包含文件,所以你可以把你所有的任務在一個文件中,然後做這樣的事情:

- include: test.yml 
    with_items: 
    - 1 
    - 2 
    - 3 

不過我不相信任何你所提到的其他結構的(registeruntil,retries,delay等)將與此一起工作。雖然其中一些理論上可以應用於包含文件中的所有任務,但其他類似registeruntil明確地綁定到單個任務。讓多個任務嘗試註冊相同的輸出變量是沒有意義的。

+0

但是,使用include循環中設置的其他變量之前,這是有意義的。 –