changed_when, failed_whenの意味
changed_whenは指定した条件が成立したときだけそのタスクをchangedと見做す。
failed_whenは指定した条件が成立したときだけそのタスクをfailedと見做す。
以下の例ではコマンドの実行結果をresultに格納し、結果のリターンコードが0以外ならchanged、0,1以外ならfailedと見做す。
- name: Dockerのインストール確認
shell: which docker
register: result
check_mode: no
failed_when: result.rc not in [0, 1]
changed_when: result.rc != 0
# 上のコマンドではfailed扱いではないが、Dcokerがインストールされてない場合、rcは1であるため、ここではインストールされていないと見做されてこのタスクは実行される。
- name: Dockerをインストール
shell: curl -fsSL https://get.docker.com/ | sh
when: docker_engine_installed|failed
ignore_errors: trueでもfailedにならず次のタスクを実行できるが、失敗した場合に画面に赤くfailedの文字が出るため驚かされる(ignoringも出るが)。
上記のfailed_whenだとそれが出ないので表示を抑えたいときにはfailed_whenを使う。