shimgo
7/23/2017 - 11:07 AM

changed_when, failed_whenの意味

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を使う。