ansible-playbook流程控制-when条件判断
1. ansible-playbook添加判断
when相当于shell脚本里的if 判断,when语句就是用来实现这个功能的,它是一个jinja2的语法,但是不需要双大括号,用法很简单
1.1) 示例1:
1 [root@test-1 when]# vim when_test1.yaml
2 [root@test-1 when]# cat when_test1.yaml
3 ---
4 - hosts: web1
5 gather_facts: yes
6
7 tasks:
8 - name: "IP if"
9 debug: msg={{ansible_default_ipv4.address}}
10 when: ansible_default_ipv4.address == '192.168.200.133'
11
12 # 注意 Ansible facts和vars 比如 ansible_os_family 应能被引用
13 # 直接写,不带双大括号。
1.2) 示例2:使用括号对条件进行分组
1 [root@test-1 when]# vim when_test2.yaml
2 [root@test-1 when]# cat when_test2.yaml
3 ---
4 - hosts: localhost
5 gather_facts: yes
6
7 tasks:
8 - name: "shut down CentOS 6 and Debian 7 systems"
9 command: ls -a
10 when: (ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_major_version'] == "6") or
11 (ansible_facts['distribution'] == "Debian" and ansible_facts['distribution_major_version'] == "7")
1.3) 示例3:所有需要为true的多条件判读(逻辑“and”) 也可以指定为列表
1 [root@test-1 when]# vim when_test3.yaml
2 [root@test-1 when]# cat when_test3.yaml
3 ---
4 - hosts: localhost
5 gather_facts: yes
6
7 tasks:
8 - name: "shut down CentOS 7 systems"
9 command: ls -a
10 when:
11 - ansible_facts['distribution'] == "CentOS"
12 - ansible_facts['distribution_major_version'] == "7"
2. 案例:
2.1) ansible-playbook进行when判断是centos还是Ubuntu系统后在安装http
1 [root@test-1 when]# vim when_mc.yaml
2 [root@test-1 when]# cat when_mc.yaml
3 ---
4 - hosts: localhost
5 gather_facts: yes
6
7 tasks:
8 - name: "update apache version - yum"
9 yum: name=httpd state=present
10 when:
11 - ansible_pkg_mgr == 'yum'
12 notify: restart httpd
13
14 - name: "Update apache version - apt"
15 apt: name=apache2 state=present update_cache=yes
16 when:
17 - ansible_pkg_mgr == 'apt'
18 notify: restart apache2
19
20
21 handlers:
22 - name: restart apache2
23 service: name=apache2 state=restarted
24 - name: restart httpd
25 service: name=httpd state=restarted
2.2) 配置文件检查
1 [root@test-1 when]# ansible-playbook --syntax-check when_mc.yaml
2
3 playbook: when_mc.yaml
2.3) 执行远程安装脚本
1 [root@test-1 when]# ansible-playbook when_mc.yaml
2
3 PLAY [localhost] *******************************************************************************************************************************
4
5 TASK [Gathering Facts] *************************************************************************************************************************
6 ok: [192.168.200.131]
7
8 TASK [update apache version - yum] *************************************************************************************************************
9 changed: [192.168.200.131]
10
11 TASK [Update apache version - apt] *************************************************************************************************************
12 skipping: [192.168.200.131]
13
14 RUNNING HANDLER [restart httpd] ****************************************************************************************************************
15 changed: [192.168.200.131]
16
17 PLAY RECAP *************************************************************************************************************************************
18 192.168.200.131 : ok=3 changed=2 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
ansible-playbook流程控制-when条件判断的更多相关文章
- 廖雪峰Java1-3流程控制-3条件判断
1.if条件判断的格式 if (条件) { 代码块 } if (条件) { 代码块1 } else { 代码块2 } if (条件1) { 代码块1 } else if { 代码块2 } else { ...
- Python流程控制-2 条件判断
条件判断 条件判断是通过一条或多条判断语句的执行结果(True或者False)来决定执行的代码块. 在Python语法中,使用if.elif和else三个关键字来进行条件判断. if语句的一般形式如下 ...
- 基础运算符补充,流程控制之if判断/while循环
常量 常量即指不变的量.在python中没有一个专门 的语法代表常量,程序员约定俗成地用变量名全部被大写代表常量. AGE_OF_OLDBOY = 56 基础运算符补充 1.算术运算 加减乘除+ - ...
- 格式化输出的三种方式,运算符及流程控制之if判断
''' 格式化输出的三种方式,运算符及流程控制之if判断 ''' # 格式化输出的三种方式 # 一.占位符 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式 比如要求用户输入用户名和年龄 ...
- [基本运算符、流程控制之if判断、与用户交互、深浅拷贝]
[基本运算符.流程控制之if判断.与用户交互] 基本运算符 1.算数运算符 python支持的算术运算符与数学上计算的符号使用是一致的 salary = 3.3 res = salary * 12 p ...
- python 流程控制(条件语句)
1,python流程控制单条件基本语句 2,python流程流程多条件控制语句 3,三元运算 1,python流程控制单条件基本语句 if 判断条件: 执行语句…… else: 执行语句…… 判断条件 ...
- java基础 流程控制和条件语句,循环语句
顺序结构 程序的顺序结构: 如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的, 一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束. if语句 if语句使用bo ...
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...
- [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html linux shell有一套自己的流程控制语句,其中包括条件语句 ...
随机推荐
- PHP check 的一些绕过技术
绕过空格 $_GET[str]=str_replace(" ","",$_GET[str]); ${IFS} 但不能写作 $IFS $IFS$ % 绕过ech ...
- 类文件的结构、JVM 的类加载过程、类加载机制、类加载器、双亲委派模型
一.类文件的结构 我们都知道,各种不同平台的虚拟机,都支持 "字节码 Byte Code" 这种程序存储格式,这构成了 Java 平台无关性的基石.甚至现在平台无关性也开始演变出 ...
- 软件架构与设计 百度网盘的pdf电子书籍
如有版权问题请及时联系小编 软件架构与设计 百度网盘的pdf电子书籍 1:<软件体系结构(PDF)>https://pan.baidu.com/s/1lChfIJt5lc63KO09n5L ...
- springboot配置ssl访问
第一步:########################################### # 端口设置 ########################################### s ...
- 单线程模式从网易下载A股叁仟捌佰支股票一年的交易数据耗时十四分钟
代码下载:https://files.cnblogs.com/files/xiandedanteng/StockDataDownloader20200305.rar 压缩包内包含股票代号文件,调整好日 ...
- 浅谈DOM事件的优化
在 JavaScript 程序的开发中,经常会用到一些频繁触发的 DOM 事件,如 mousemove.resize,还有不是那么常用的鼠标滚轮事件:mousewheel (在 Firefox 中,滚 ...
- python中反射 getattr(对象,'方法')()和hasattr(对象,'方法')
getattr(对象,'方法')():从一个对象里面找到里面的方法,,, 传了一个对象,再传一个字符串,就能找到这个字符串的方法 hasattr(对象,'方法') 判断这个对象里面有没有这个方法,返回 ...
- XXE外部实体注入漏洞
XML被设计为传输和存储数据,XML文档结构包括XML声明.DTD文档类型定义(可选).文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具.XXE漏洞全称XML E ...
- 吴恩达《深度学习》-课后测验-第三门课 结构化机器学习项目(Structuring Machine Learning Projects)-Week1 Bird recognition in the city of Peacetopia (case study)( 和平之城中的鸟类识别(案例研究))
Week1 Bird recognition in the city of Peacetopia (case study)( 和平之城中的鸟类识别(案例研究)) 1.Problem Statement ...
- jekins使用的坑
1.日志打满 一个周末回来,服务器的磁盘就写满了 现象如下,最后是修改catalina脚本 添加了如下配置 ###jekins log problem#########export JAVA_OPTS ...