ansible的error处理机制

ignore_errors忽略错误

ansible的错误处理机制

  • 和python一样,程序自上而下运行,默认情况下,ansible在遇到错误时会立刻停止playbook,后续所有的任务都不会再执行
    在这里插入图片描述
---
- name: error处理演示剧本
  hosts: all
  tasks:
    - name: 开启一个不存在的服务
      service: 
        name: noname
        state: started
    - name: 创建一个文件
      file:
        path: /tmp/service.txt
        state: touch

  • 使用ignore_errors可以忽略错误,继续后续的任务
    在这里插入图片描述

单任务忽略错误

---
- name: 单任务error处理演示剧本
  hosts: all
  tasks:
    - name: 开启一个不存在的服务
      service: 
        name: noname
        state: started
      ignore_errors: yes
    - name: 创建一个文件
      file:
        path: /tmp/service.txt
        state: touch

  • 忽略错误后的执行结果
qiaofei@omaidb play % ansible-playbook error.yml

PLAY [error处理演示剧本] *************************************************************

TASK [Gathering Facts] *********************************************************
ok: [c8]
ok: [guajibao]

TASK [开启一个不存在的服务] **************************************************************
fatal: [guajibao]: FAILED! => {"changed": false, "msg": "Could not find the requested service noname: host"}
...ignoring
fatal: [c8]: FAILED! => {"changed": false, "msg": "Could not find the requested service noname: host"}
...ignoring

TASK [创建一个文件] ******************************************************************
changed: [guajibao]
changed: [c8]

PLAY RECAP *********************************************************************
c8                         : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=1   
guajibao                   : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=1   

全局忽略错误

单任务忽略错误,只能忽略一个任务的错误,全局忽略错误,不论哪一步出现错误都会忽略错误并继续执行脚本。

---
- name: 全局error处理演示剧本
  hosts: all
  ignore_errors: yes # 全局忽略错误
  tasks:
    - name: 开启一个不存在的服务
      service: 
        name: noname
        state: started
      
    - name: 创建一个文件
      file:
        path: /tmp/service.txt
        state: touch

错误控制和handlers的结合

fore_handlers: yes 参数在生产环境中是必加的
fore_handlers只有当paly中的所有tasks都运行正确,在程序结束时才会通知执行handlers,如果play运行中遇到了错误,handlers不会被通知执行

---
- name: 错误控制和handlers的结合
  hosts: all
  force_handlers: yes	
  tasks:
    - name: 一个绝对成功的tasks
      command: /bin/true
      notify: restart the database

    - name: 安装一个不存在的软件包
      yum:
        name: notpkg
        state: latest
  handlers:
    - name: restart the database
      service:
        name: database
        state: restarted
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值