1. ホーム
  2. ansible

[解決済み] Ansible タスクのエラーを無視し、タスクにエラーがあった場合、プレイブックの最後で失敗する。

2022-02-16 05:12:16

質問

Ansibleを学習中です。リソースをクリーンアップするためのプレイブックがありますが、私はプレイブックがすべてのエラーを無視して最後まで進み続け、エラーがあった場合は最後に失敗するようにしたいのですが、どうすればいいですか?

エラーを無視するには

  ignore_errors: yes

1つのタスクだったら、こんな感じ(ansibleのエラーキャッチより)。

- name: this command prints FAILED when it fails
  command: /usr/bin/example-command -x -y -z
  register: command_result
  ignore_errors: True

- name: fail the play if the previous command did not succeed
  fail: msg="the command failed"
  when: "'FAILED' in command_result.stderr"

最後に失敗するには?いくつかのタスクがありますが、quot;When" の条件は何でしょうか?

解決方法は?

使用方法 失敗 モジュールを使用します。

  1. エラーが発生した場合に無視する必要があるすべてのタスクでignore_errorsを使用します。
  2. タスクの実行に失敗するたびにフラグを立てる(例えばresult = false)。
  3. プレイブックの最後に、フラグが設定されているかどうかをチェックし、それに応じて実行を失敗させる
<ブロッククオート
- fail: msg="The execution has failed because of errors."
  when: flag == "failed"

更新しました。

例で示したようなタスクの結果を保存するには、registerを使用します。そして、このようなタスクを使用します。

- name: Set flag
  set_fact: flag = failed
  when: "'FAILED' in command_result.stderr"