- 本书赞誉
- 前言
- 第一部分 基础篇
- 第1章 系统基础信息模块详解
- 第2章 业务服务监控详解
- 第3章 定制业务质量报表详解
- 第4章 Python 与系统安全
- 第二部分 高级篇
- 第5章 系统批量运维管理器 pexpect 详解
- 第6章 系统批量运维管理器 paramiko 详解
- 第7章 系统批量运维管理器Fabric详解
- 第8章 从零开发一个轻量级 WebServer
- 第9章 集中化管理平台 Ansible 详解
- 第10章 集中化管理平台 Saltstack 详解
- 第11章 统一网络控制器 Func 详解
- 第12章 Python 大数据应用详解
- 第三部分 案例篇
- 第13章 从零开始打造 B/S 自动化运维平台
- 第14章 打造 Linux 系统安全审计功能
- 第15章 构建分布式质量监控平台
- 第16章 构建桌面版 C/S 自动化运维平台
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9.10 条件语句
有时候一个playbook的结果取决于一个变量,或者取决于上一个任务(task)的执行结果值,在某些情况下,一个变量的值可以依赖于其他变量的值,当然也会影响Ansible的执行过程。
下面主要介绍When声明。
有时候我们想跳过某些主机的执行步骤,比如符合特定版本的操作系统将不安装某个软件包,或者磁盘空间爆满了将进行清理的步骤。在Ansible中很容易做到这一点,通过When子句实现,其中将引用Jinja2表达式。下面是一个简单的示例:
tasks: - name: "shutdown Debian flavored systems" command: /sbin/shutdown -t now when: ansible_os_family == "Debian"
通过定义任务的Facts本地变量ansible_os_family(操作系统版本名称)是否为Debian,结果将返回BOOL类型值,为True时将执行上一条语句command:/sbin/shutdown-t now,为False时该条语句都不会触发。我们再看一个示例,通过判断一条命令执行结果做不同分支的二级处理。
tasks: - command: /bin/false register: result ignore_errors: True - command: /bin/something when: result|failed - command: /bin/something_else when: result|success - command: /bin/still/something_else when: result|skipped
“when:result|success”的意思为当变量result执行结果为成功状态时,将执行/bin/something_else命令,其他同理,其中success为Ansible内部过滤器方法,返回Ture代表命令运行成功。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论