web-dev-qa-db-ja.com

Ansibleで失敗したtarball抽出を無視するにはどうすればよいですか?

私はansibleプレイブックにコマンドがあります:

- name: extract the tarball
  command: tar --ignore-command-error -xvkf release.tar

一部のファイルは既に存在するため抽出されないことが予想されます(-k 国旗)。

ただし、これにより、tar抽出からのエラーコードがあるため、プレイブック全体を確実に停止できます。

どうすればこれを回避できますか?ご覧のとおり、私は--ignore-command-error 無駄に。

13
bcmcfc

ignore_errors引数を使用します。

- name: extract the tarball
  command: tar --ignore-command-error -xvkf release.tar
  ignore_errors: yes

エラー処理のドキュメントページの "失敗したコマンドを無視" を参照してください。

ignore_errorsは、何らかの方法で成功を検出できる場合に最適に機能します。出力をregisterして確認するか、createsを使用して特定のファイル名を探すことができます。

32
tedder42

ignore_errors: yesでも、プロンプトで失敗したタスクを示すエラーが発生します。そのタスクを静かに失敗させたい場合は、failed_when: falseまたは manual で説明されているようなより洗練された条件:

- name: this command prints FAILED when it fails
  command: /usr/bin/example-command -x -y -z
  register: command_result
  failed_when: "'FAILED' in command_result.stderr"

したがって、stderrの出力を検索できます。ファイルが読めない、存在しないなどの場合でも失敗したいかもしれませんが、アーカイブが壊れていて抽出できない場合は失敗しないでください。

9
udondan