【Ansible】ansible 任务失败控制

简介:

任务失败控制

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 任务失败控制 》首发于 乐维论坛,欢迎来访。

相关文章
|
11月前
|
运维 Cloud Native Go
Ansible自动化:简化你的运维任务
Ansible自动化:简化你的运维任务
112 0
|
1月前
|
运维 Unix 应用服务中间件
自动化运维:使用Ansible简化日常任务
【8月更文挑战第4天】在现代IT架构中,自动化运维成为提升效率、减少人为错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常的运维任务,通过实际代码示例,展示配置管理、软件部署和系统更新等操作。我们将探索如何利用Ansible的简洁语法和强大功能来优化工作流程,从而为读者提供一套实用的自动化解决方案。
|
27天前
|
运维 监控 Devops
自动化运维的魔法:如何利用Ansible简化日常任务
【8月更文挑战第24天】在快速迭代的互联网时代,运维效率成为企业竞争力的关键。本文将介绍一种强大的自动化工具——Ansible,它如何通过简化配置管理和自动化部署来提升运维效率。你将了解到Ansible的基本概念、优势以及如何应用它来优化你的工作流程。让我们一起探索这个自动化的魔法世界,释放运维的潜能!
115 60
|
17天前
|
运维 应用服务中间件 nginx
自动化运维:使用Ansible简化日常任务
【9月更文挑战第2天】在快速迭代的软件开发周期中,高效可靠的运维成为项目成功的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常运维任务,从基础概念到实战应用,带你一步步构建自动化运维流程,解锁更高效的工作方式。
|
20天前
|
运维 Ubuntu 应用服务中间件
自动化运维:使用Ansible简化日常任务
【8月更文挑战第31天】告别繁琐,拥抱高效。本文带你领略Ansible的魅力,通过具体示例展示如何用它来自动化你的日常IT运维任务。准备好让你的服务器管理工作变得简单而有趣!
|
23天前
|
机器学习/深度学习 运维 Ubuntu
自动化运维:使用Ansible简化日常任务探索Python编程之美:从基础到进阶
【8月更文挑战第28天】在快速迭代的软件开发周期中,运维工作的效率至关重要。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常的运维任务,通过代码示例展示如何配置和使用Ansible,以及它如何帮助提升工作效率和减少人为错误。文章将深入讨论Ansible的核心概念,包括Playbooks和Tasks,并探讨如何利用这些概念进行高效的系统管理。 【8月更文挑战第28天】在数字时代的浪潮中,编程已成为一门艺术和科学。本文将通过Python语言的镜头,带领读者踏上一段从零基础到熟练运用的旅程。我们将一起探索Python的简洁语法、强大库支持以及它在数据科学、网络开发等领域的应用。无论你
|
24天前
|
运维 JavaScript 安全
自动化运维:使用Ansible简化日常任务深入理解Node.js事件循环和异步编程
【8月更文挑战第27天】在快节奏的技术环境中,自动化不再是奢侈品,而是必需品。本文将引导你通过Ansible实现自动化运维,从基础到高级应用,解锁高效管理服务器群的秘诀,让你的IT操作更加流畅和高效。
|
Shell 项目管理
ansible之when条件语法、处理任务失败、jinja2模板和项目管理
ansible之when条件语法、处理任务失败、jinja2模板和项目管理
105 0
|
存储 网络安全 API
【2023】ansible-高级任务控制
【2023】ansible-高级任务控制
124 0
|
应用服务中间件 测试技术 Linux
【2023】ansible-基本任务控制
【2023】ansible-基本任务控制
84 0