2016-05-17 89 views
3

我只在一臺主機上執行遊戲手冊。Ansible:從失敗的任務中重新運行劇本

我目前的任務執行流程是:
1)執行任務
2)如果任何任務的失敗之間,清理一切
3)從開始重新運行。

這聽起來不太有效。我想創建流程非常喜歡這一點,

1)執行任務
2)任務失敗..
3)如果我們重新運行遊戲書,ansible應該從失敗的任務執行任務。它不應該從一開始就重新運行。

爲了做到這一點,我試圖達到一旦任務失敗,我試圖用「 - 限制」執行遊戲手冊,它會引發以下錯誤。

[email protected]:/etc/ansible# ansible-playbook stack.yml --limit -vvvv 
ERROR: provided hosts list is empty 

[email protected]:/etc/ansible# cat /root/stack.retry 
10.17.10.150 

我不確定這是重新運行遊戲手冊以實現此工作流程的正確方法。

+0

你真的應該讓你的劇本冪等。如果它們是冪等的,那麼從一開始就重新運行的唯一問題就是時間。 – smiller171

+0

我正在嘗試構建冪等劇本,大多數我在劇本中使用'shell'和'command'模塊的地方,所以使它成爲冪等的,我正在接受「創建」參數的幫助。 您提到的問題仍然是.. ..我正面臨的另一個問題是.. 一旦任務執行,如果任務失敗,輸出任務將記錄在文件中,並在下一次運行palybook,ansible是跳過成功執行的任務和失敗的任務。 – tgcloud

回答

5

使用--start-在任務= START_AT

這將在任務開始你的劇本匹配給定名稱的選項。在你的情況下:

ansible-playbook stack.yml --start-at-task=START_AT 

將「START_AT」更改爲您將開始的任務名稱。

你已經使用了--limit選項是將劇本限制模式匹配的主機而不是限制性的任務

+0

'--start-at-task'不適用於角色中定義的任務 –