Ansible-----条件判断与错误处理

when

在ansible中,条件判断的关键词是when

---
- hosts: allremote_user: roottasks:- debug:msg: "System release is centos"when: ansible_distribution == "CentOS"

ansible_distribution就是facts信息中的一个key,之前如果我们需要引用变量一般是通过"{{ key }}"这样的方式获取,但是在when关键词中,不需要添加"{{  }}"。

---
- hosts: allremote_user: rootgather_facts: notasks:- debug:msg: "{{ item }}"with_items:- 1- 2- 3when: item > 1

下面是一个逻辑运算实例

---
- hosts: allremote_user: roottasks:- debug:msg: "System release is centos7"when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "7"

逻辑与除了and 也可以使用列表的方式表示。

---
- hosts: allremote_user: roottasks:- debug:msg: "System release is centos7"when:- ansible_distribution == "CentOS"- ansible_distribution_major_version == "7"

  这个列表中的每一项都是一个条件,当所有条件同时成立时,任务才会执行。

fail模块

想要playbook按照我们的意愿中断任务,可以借助fail模块。

在任务没有设置ignore_errors:true情况下,如果有任务执行失败,playbook会自动停止执行,当fail模块执行后,playbook会认为任务执行失败了,会主动中止任务。

---
- hosts: allremote_user: roottasks:- debug:msg: "1"- debug:msg: "2"- fail:- debug:msg: "3"- debug:msg: "4"

我们也可以通过fail模块自带的msg,自定义报错信息,

---
- hosts: test70remote_user: roottasks:- debug:msg: "1"- fail:msg: "Interrupt running playbook"- debug:msg: "2"

fail+when

 fail模块通常与when模块结合,如果中断剧本的条件成立,则执行fail模块,中断剧本。

---
- hosts: allremote_user: roottasks:- shell: "echo 'This is a string for testing--error'"register: return_value- fail:msg: "Conditions established,Interrupt running playbook"when: "'error' in return_value.stdout"- debug:msg: "I never execute,Because the playbook has stopped"

failed_when也可以完成类似的功能,当条件成立时将对应任务的状态设置为失败,中止剧本。

---
- hosts: allremote_user: roottasks:- debug:msg: "I execute normally"- shell: "echo 'This is a string for testing error'"register: return_valuefailed_when: ' "error" in return_value.stdout'- debug:msg: "I never execute,Because the playbook has stopped"

changed_when

failed_when关键词的作用是在条件成立时将任务状态改为失败。

changed_when关键词的作用是在条件成立时,将任务状态改为changed。

---
- hosts: allremote_user: roottasks:- debug:msg: "test message"changed_when: 2 > 1

 当changed_when状态被设置为false时,不管原任务状态为啥,最终都会被设置为ok状态

---
- hosts: allremote_user: roottasks:- shell: "ls /opt"changed_when: True

 

转载于:https://www.cnblogs.com/jinyuanliu/p/10656467.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分解 python_面试官:如何用Python实现将一个整数分解成质因数?

概述今天主要分享一个关于分解质因数的实例,判断的逻辑稍微多了点,一起来看看吧~需求将一个整数分解质因数。例如:输入90,打印出90233*5思路其实根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质…

Kali学习笔记25:Arachni使用(实现分布式扫描)

文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 Arachni不同于上次介绍的nikto和skipfish 是一个Web界面的一个Web扫描器 Arachni的强大不…

红帽正式宣布发布JBoss BPM Suite 6和JBoss BRMS 6

红帽公司刚刚宣布了这些期待已久的产品的全面上市 ! 要花费大量精力将社区代码转变为企业质量的软件,客户和最终用户可以在Red Hat支持的生产环境中使用这些代码。 现在是现在和潜在客户学习该产品,让合作伙伴开始使用它并学习基本知识&…

三星sd卡无法删除数据_单反相机里的SD卡在电脑中突然无法识别提示要格式化怎么办?...

大家在这个国庆佳节出去游玩都拍了不少精彩照片吧,昨天就有微信好友求助,说刚刚从外面游玩回到家里,准备把单反相机里64G存储SD卡中的照片用读卡器复制到电脑里,插入电脑后就提示如下图:在电脑中只显示“可移动磁盘”&…

CF1080F Katya and Segments Sets

题目链接:洛谷 题目描述:【看翻译】 这种强制在线的方法可真是奇妙。 主席树可真是奇妙。 我们用主席树的版本维护$x\leq l$的限制,用线段树维护$[a,b]$的限制,用节点的值来维护$r\leq y$的限制。 详细地说,就是先将线…

在微信小程序上,帮助中心界面实现类似手风琴案例

小程序wxml代码如下: <block wx:for"{{arrdata}}" wx:key""><view class"centent_title" tap"open_that" data-index"{{index}}"><view class"title" >{{item.name}}?</view><image…

python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...

面试官&#xff1a;如让线程顺序执行&#xff1f;我&#xff1a;使用Thread的join方法。面试官&#xff1a;除了join还有别的办法吗&#xff1f;我&#xff1a;目前只用过join。面试官&#xff1a;哦&#xff0c;那你了解CountDownLatch吗&#xff1f;我&#xff1a;不了解&…

计算斐波那契数列

O(n)复杂度方法O(logn)复杂度方法计算矩阵的n次方&#xff0c;可以先求矩阵的n/2次方&#xff0c;然后再平方即可。 1 #include <cassert>2 3 struct Matrix2By24 {5 Matrix2By26 (7 long long m00 0,8 long long m01 0,9 long long m…

使用ANTLR4,用于代码镜像和基于Web的DSL的Primefaces扩展

DSL是很酷的东西&#xff0c;但是我不清楚它们有什么用。 然后我意识到它们对以下方面有好处&#xff1a; 摆脱复杂的UI 意思是 更快的做事方式 而已。 当我阅读此博客时&#xff0c;我得出了这个结论。 如果您的用户是技术人员&#xff0c;并且不惧怕类似SQL的语法处理方…

hdu 1069 Monkey and Banana 【动态规划】

题目 题意&#xff1a;研究人员要测试猴子的IQ&#xff0c;将香蕉挂到一定高度&#xff0c;给猴子一些不同大小的箱子&#xff0c;箱子数量不限&#xff0c;让猩猩通过叠长方体来够到香蕉。 现在给你N种长方体&#xff0c; 要求&#xff1a;位于上面的长方体的长和宽 要小于 …

使用带有OAuth2的Web应用程序和使用JWT来调用API – WSO2 API Manager

在这篇文章中&#xff0c;我将分享我在WSO2 API管理器&#xff08;API-M&#xff09;方面的经验和理解&#xff0c;以解决该行业中非常普遍和有用的情况。 简要地说明以下流程。 公开了一个API&#xff0c;供应用程序开发人员在API Manager&#xff08;可为API添加访问控制&a…

scala的插值器

Scala 为我们提供了三种字符串插值的方式&#xff0c;分别是 s, f 和 raw。它们都是定义在 StringContext 中的方法。 s 字符串插值器 val a 2println(s"小明今年$a 岁了") f 字符串插值器 它除 s 的功能外(不指定格式就和 s 一样)&#xff0c;还能进行格式化输出&a…

confluence 编辑器加载_Onlyoffice集成Confluence的工作原理

onlyoffice 与 confluence集成使用&#xff0c;使用onlyoffice connector for confluence 插件对接confluence插件在confluence中创建了一个新的按钮动作&#xff0c;Edit in OnlyOffice 用来处理office文档。这允许多用户实时协作并且将变更返回到confluence中。具体工作原理&…

红帽JBoss BRMS和BPMS富客户端框架展示了与GWT / Errai / UberFire和AngularJS的多语言集成...

上周&#xff0c;我发布了一个博客&#xff0c;重点介绍了我的演示文稿&#xff0c;该演示文稿展示了我们在BRMS和BPMS平台内完成的工作&#xff0c;Drools和jBPM项目的产品化版本所产生的丰富客户端平台。 该演示文稿是所有屏幕截图和视频&#xff0c;您可以在此处找到博客和幻…

vscode如何设置回车自动换行缩进?

要解决这个问题&#xff0c;首先打开设置&#xff0c;查找tabsize&#xff0c;进入settings.json。 把"editor.autoIndent"的属性值改为false&#xff0c;即"editor.autoIndent": "false"&#xff0c;就可以了。

vue 过滤器使用的传参说明

在table中&#xff0c;需要对obj的数据类型进行文字转换&#xff0c;例如后台接口返回的姓别值&#xff1a;1&#xff0c;2。其中需要页面根据字典需要把1》男&#xff0c;2》女进行转换。 以前的习惯是每一个过滤方法都写一个方法进行转换&#xff0c;例如&#xff1a; 页面代…

ruby sinatra mysql_一分钟开始持续集成之旅系列之:Ruby + Sinatra 应用

前言现代软件工程越来越复杂&#xff0c;而开发效率随着软件复杂度增加呈指数型下降。为在提高开发效率的同时也能保证质量&#xff0c;越来越多团队开始践行敏捷开发方法。持续集成是敏捷开发的重要实践之一。它倡导团队通过自动化构建工具频繁地验证软件可用性&#xff0c;从…

C++语言实现-邻接表

图的邻接表实现 邻接表是图的一种链式存储结构。主要是应对于邻接矩阵在顶点多边少的时候&#xff0c;浪费空间的问题。它的方法就是声明两个结构。如下图所示&#xff1a; 先来看看伪代码&#xff1a; typedef char Vertextype; //表结点结构 struct ArcNode { int adjvex; …

使用Lucene的新FreeTextSuggester查找长尾建议

Lucene的“ 建议”模块提供了许多有趣的自动建议实现&#xff0c;以便在用户将每个字符输入搜索框时为他们提供实时搜索建议。 例如&#xff0c; WFSTCompletionLookup将所有建议及其权重编译到一个紧凑的有限状态传感器中 &#xff0c;从而可以对基本建议进行快速前缀查找。 …

mysql 查看锁表日志_MYSQL 表锁情况查看

查看锁表情况mysql> show status like ‘Table%’;—————————-——–| Variable_name | Value |—————————-——–| Table_locks_immediate | 795505 || Table_locks_waited | 0 || Table_open_cache_hits | 0 || Table_open_cache_misses | 0 || Table_ope…