处理任务失败附实验(RH294)

首先,一个任务执行失败是肯定会遇见的事情

而这时候,就需要一个备用的计划

忽略任务失败

默认情况下 任务失败的时候play会终止

但是,我们可以通过忽略失败的任务来覆盖此行文

使用关键字 ignore_errors

举个栗子

- name: Latest version of notapkg is installed
  yum:
    name: notapk
    state: latest
  ignore_errors: yes

因为不存在notapk所以任务会执行,play会终止 但是,

在该任务中使用ignore_errors,在任务失败时也将继续在主机上执行playbook

任务失败后强制执行处理程序

使用force_handlers关键字,在任务失败的时候强制执行

---
- hosts: all
  force_handlers: yes
  tasks:
    - name: a task which always notifies its handler
      command: /bin/true
      notify: restart the database
    - name: a task which fails because the package doesnot exist
      yum:
        name: notapk
        state: latest
  handlers:
    - name: restart the database
      service:
        name: mariadb
        state: restarted

处理程序会在任务报告changed结果时获得通知,而在报告ok或failed时不会获得通知

指定任务失败的条件

使用关键字failed_when

处理错误

使用 rescue和always语句来处理错误

如果块中的任何任务失败,则执行rescue块中的任务

在block子句中的任务或者rescue子句中的任务运行之后 always子句中的任务将会运行

反正always的语句总会执行的

    tasks:
      - name: Upgrade DB
        block:
          - name: Upgrade the database
            shell:
                cmd: /usr/local/lib/upgrade-database
        rescue:
          - name: revert the database upgrade
            shell:
                cmd: /usr/local/lib/revert-database
        always:
          - name: always restart the database
            service:
                name: mariadb
                state: restarted

处理任务失败实验

1.实验开始 lab control-errors start

2.去往实验文件夹并且 创建 ansible配置文件 和一个服务器(包含服务器

servera.lab.example.com在databases组当中)

3.创建playbook

初始状态如下

运行playbook

此时因为不存在名为http的现有安装包,所以第一个任务失败了,因此第二个任务也没有运行

更新playbook

再次运行playbook

再次更新playbook 添加block内容

再次更新playbook 更正web_package的值 为httpd

并且再次运行

如果再次运行该playbook check local time 任务将再次返回changed

运行playbook

执行结果

完成实验 lab control-errors finish

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值