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条件判断的更多相关文章

  1. 廖雪峰Java1-3流程控制-3条件判断

    1.if条件判断的格式 if (条件) { 代码块 } if (条件) { 代码块1 } else { 代码块2 } if (条件1) { 代码块1 } else if { 代码块2 } else { ...

  2. Python流程控制-2 条件判断

    条件判断 条件判断是通过一条或多条判断语句的执行结果(True或者False)来决定执行的代码块. 在Python语法中,使用if.elif和else三个关键字来进行条件判断. if语句的一般形式如下 ...

  3. 基础运算符补充,流程控制之if判断/while循环

    常量 常量即指不变的量.在python中没有一个专门 的语法代表常量,程序员约定俗成地用变量名全部被大写代表常量. AGE_OF_OLDBOY = 56 基础运算符补充 1.算术运算 加减乘除+ - ...

  4. 格式化输出的三种方式,运算符及流程控制之if判断

    ''' 格式化输出的三种方式,运算符及流程控制之if判断 ''' # 格式化输出的三种方式 # 一.占位符 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式 比如要求用户输入用户名和年龄 ...

  5. [基本运算符、流程控制之if判断、与用户交互、深浅拷贝]

    [基本运算符.流程控制之if判断.与用户交互] 基本运算符 1.算数运算符 python支持的算术运算符与数学上计算的符号使用是一致的 salary = 3.3 res = salary * 12 p ...

  6. python 流程控制(条件语句)

    1,python流程控制单条件基本语句 2,python流程流程多条件控制语句 3,三元运算 1,python流程控制单条件基本语句 if 判断条件: 执行语句…… else: 执行语句…… 判断条件 ...

  7. java基础 流程控制和条件语句,循环语句

    顺序结构 程序的顺序结构: 如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的, 一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束. if语句 if语句使用bo ...

  8. linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载

    http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...

  9. [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例

    原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html linux shell有一套自己的流程控制语句,其中包括条件语句 ...

随机推荐

  1. java基础(swing+jsp+mybatis配置)

    JAVA SE GUI编程(swing) # 组件 描述 1 JFrame 一个普通的窗口(绝大多数 Swing 图形界面程序使用 JFrame 作为顶层容器) 2 JDialog 对话框 常用的中间 ...

  2. SQL连接(内连接、外连接、交叉连接)

    SQL连接(内连接.外连接.交叉连接) 假设现在有两个表:table1 , table2 table1:                                table2 :  id     ...

  3. 2vscode user settings

    {   "editor.accessibilityPageSize": 14,   "editor.fontSize": 14,   "editor. ...

  4. input历史快捷-变黄解决

    一: <form action="loginAction" method="post" autocomplete="off">给 ...

  5. 性能测试1:loadrunner介绍及代理录制

    一.安装loadrunner lr安装环境要求: Lr11只支持ie9及一下,火狐30以下,不支持chrome.  操作系统只支持到win7.Lr打开时必须用管理员身份打开 在虚拟机中安装的win7, ...

  6. java+swing+mysql图书管理系统

    系统说明:本系统采用eclipse开发,IDEA,eclipse,myeclipse均可运行 界面采用swing实现 数据库:mysql,附sql代码,其余数据库可复制sql代码运行 数据库连接文件m ...

  7. Python 面试题 字符串 删除多少个字符使得出现做多的字符数量大于等于字符串长度的一半.

    str1 = input() num = {} for i in set(str1): num[i]=str1.count(i) max_value = max(num.values()) n=abs ...

  8. 微信小程序-组件-视图容器

    1.view 1.作用:类似 html 的 div 用来进行页面布局,具有块级盒子特性. 2.常用属性:设置view盒子点击后的状态,以及控制是否影响父盒子的点击状态 3.eg:<view ho ...

  9. Face The Right Way(POJ 3276)

    原题如下: Face The Right Way Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6708   Accepte ...

  10. PhpStorm license server(版权许可服务器)在线激活服务器集群列表

    原文链接:https://bingyishow.top/easy/55.html 服务器列表 序号 服务器(域名) 状态 1 http://www.yuanzhaoyi.cn 在线 2 http:// ...