2016-05-17 7 views
3

私は1つのホスト上でのみプレイブックを実行しています。Ansible:失敗したタスクからプレイブックを再実行

私の現在のタスク実行の流れは以下のとおりです。タスクのいずれかが、間に障害が発生したすべてのもの
3)最初から再実行をクリーンアップする場合は
1)実行中のタスク
2)。

これはあまり効率的ではありません。私は、非常にこのような流れを作成するために、我々はプレイブックを再実行する場合

1)タスク
2)タスクが失敗した実行..
3)、ansibleが失敗したタスクからタスクを実行する必要がありますしたいです。それは最初から再開すべきではありません。

私はそれを達成しようとしていましたが、タスクが失敗すると、 "--limit"でプレイブックを実行しようとしていましたが、次のエラーがスローされます。

[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

私はidempotent playbookを構築しようとしています。場所のほとんどは、私が "シェル"と "コマンド"モジュールを作っていますので、私は "create"引数の助けを借りています。 あなたが言及した問題は常に残っています。私が直面している別の問題は.. タスクが実行され、タスクが失敗した場合、タスクの出力はファイルに記録され、palybookの次の実行では、正常に実行されたタスクと失敗したタスクもスキップします。 – tgcloud

答えて

5

これは、指定された名前に一致するタスクであなたの脚本を開始します--start・アット・タスク= START_AT

オプションを使用します。あなたの場合:

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

"START_AT"はあなたが開始するタスクの名前で変更してください。

あなたが使用している--limitオプションは、パターンに一致するホストと制限するものではないタスク

あなたが本当にあなたのプレイブックは冪等作るべきである
+0

ロール内で定義されたタスクで '--start-at-task'が機能しません –

関連する問題