Ansible

Ansible task の状態の種類 ( ok / changed / failed / skipped / ignoring )

図解

image.png

DO は SKIP の反対語として、適当につけた名前。

DO

タスクが実行される。なぜならタスクは実行するためのもの。
結果は三種類に分かれる。

DO -> OK

タスクが成功。

DO -> CHANGED

タスクでなにか変化が起きた時のステータス。
たとえばファイルの新規設置をしたり、パーミッション変更をしたり。

DO -> FAILED

タスクが失敗した時のステータス。
その後の挙動は二つに分かれる。

FAILED -> EXIT

次以降のタスクにも進まず、そこで終了する。

FAILED -> IGNORING

失敗を無視して次のタスク実行に進む。

SKIP

タスクをスキップする。何もしない。つまり OK / CHANGED / FAILED の結果もない。

Playbookの例

- hosts:
    - localhost
  tasks:
    - name: skip
      debug:
        msg: this task will be skipped
      when: false

    - name: do -> ok
      debug:
        msg: task has done and return ok

    - name: do -> changed
      debug:
        msg: task has done and return changed
      changed_when: yes

    - name: do -> failed -> ignoring
      debug:
        msg: task has done, return failed, and continue to next task
      failed_when: yes
      ignore_errors: yes

    - name: do -> failed -> exit
      debug:
        msg: task has done, return failed, and exit ( do not continue to next task )
      failed_when: yes

    - name: after failed task
      debug:
        msg: task will be not run because previous task has failed and exit

実行結果例

TASK [skip] **************************************************************************************************************************************
skipping: [localhost]

TASK [do -> ok] **********************************************************************************************************************************
ok: [localhost] => {
    "msg": "task has done and return ok"
}

TASK [do -> changed] *****************************************************************************************************************************
changed: [localhost] => {
    "msg": "task has done and return changed"
}

TASK [do -> failed -> ignoring] ******************************************************************************************************************
fatal: [localhost]: FAILED! => {
    "msg": "task has done, return failed, and continue to next task"
}
...ignoring

TASK [do -> failed -> exit] **********************************************************************************************************************
fatal: [localhost]: FAILED! => {
    "msg": "task has done, return failed, and exit ( do not continue to next task )"
}
    to retry, use: --limit @/Users/yuma/projects/study/ansible/playbooks/task_state.retry

PLAY RECAP ***************************************************************************************************************************************
localhost                  : ok=4    changed=1    unreachable=0    failed=1   

環境

  • ansible 2.6.1