Ansible Documentation
Ignoring Failed Commands機能
タスクで発生したエラーを無視するコマンド
| パラメータ | 選択肢/ Default | 説明 |
|---|---|---|
| ignore_errors | ・no ・yes | yes を指定するとタスク内で発生したエラーを無視する |
例
■ play---
- hosts: all
gather_facts: no
tasks:
- name: 意図的にエラーを発生させる
shell: /usr/false
ignore_errors: yes
register: result
- name: 実行結果を表示する
debug:
var: result
■ 実行結果/usr/false コマンドは存在しないので shell モジュールを使用したタスクでエラーが発生します。しかし ignore_errors: yes が指定されているため処理を中断せず、次のタスクに進みます。
ansibleman@ubuntu-pc:~/ansible/error handling$ ansible-playbook -i hosts.yml site.yml
PLAY [all] *********************************************************************
TASK [意図的にエラーを発生させる] ***********************************************************
fatal: [node-c0706]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "cmd": "/usr/false", "delta": "0:00:00.003798", "end": "2019-05-19 22:37:43.015711", "msg": "non-zero return code", "rc": 127, "start": "2019-05-19 22:37:43.011913", "stderr": "/bin/sh: /usr/false: そのようなファイルやディレクトリはありません", "stderr_lines": ["/bin/sh: /usr/false: そのようなファイルやディレクトリはありません"], "stdout": "", "stdout_lines": []}
...ignoring
TASK [実行結果を表示する] ***************************************************************
ok: [node-c0706] => {
"result": {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"cmd": "/usr/false",
"delta": "0:00:00.003798",
"end": "2019-05-19 22:37:43.015711",
"failed": true,
"msg": "non-zero return code",
"rc": 127,
"start": "2019-05-19 22:37:43.011913",
"stderr": "/bin/sh: /usr/false: そのようなファイルやディレクトリはありません",
"stderr_lines": [
"/bin/sh: /usr/false: そのようなファイルやディレクトリはありません"
],
"stdout": "",
"stdout_lines": []
}
}
PLAY RECAP *********************************************************************
node-c0706 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1
ansibleman@ubuntu-pc:~/ansible/error handling$