跳到主要内容

ansible任务控制-忽略错误ignore_errors

编辑yml文件

这里故意执行一个返回值永远是错误的命令false

cat > task_ingore_errors.yml << EOF
- hosts: devops03
tasks:
- name: exec error cmd
shell: /bin/false

- name: touch file
file:
path: /tmp/test.txt
state: touch
EOF

执行yml文件,因为 /bin/false 永远是错误的返回,因此不能继续往下执行

$ ansible-playbook task_ingore_errors.yml

PLAY [devops03] ****************************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************
ok: [devops03]

TASK [exec error cmd] **********************************************************************************************************************************
fatal: [devops03]: FAILED! => {"changed": true, "cmd": "/bin/false", "delta": "0:00:00.031517", "end": "2021-09-21 23:51:30.811885", "msg": "non-zero return code", "rc": 1, "start": "2021-09-21 23:51:30.780368", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

PLAY RECAP *********************************************************************************************************************************************
devops03 : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

如果想要忽略错误不影响后边的task,就需要用到 ignore_errors

cat > task_ingore_errors.yml << EOF
- hosts: devops03
tasks:
- name: exec error cmd
shell: /bin/false
ignore_errors: yes

- name: touch file
file:
path: /tmp/test.txt
state: touch
EOF

再次执行yml就会忽略错误继续执行了

$ ansible-playbook task_ingore_errors.yml

PLAY [devops03] ****************************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************
ok: [devops03]

TASK [exec error cmd] **********************************************************************************************************************************
fatal: [devops03]: FAILED! => {"changed": true, "cmd": "/bin/false", "delta": "0:00:00.029109", "end": "2021-09-21 23:54:38.138763", "msg": "non-zero return code", "rc": 1, "start": "2021-09-21 23:54:38.109654", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
...ignoring

TASK [touch file] **************************************************************************************************************************************
changed: [devops03]

PLAY RECAP *********************************************************************************************************************************************
devops03 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1