博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible-playbook流程控制-when条件判断
阅读量:4961 次
发布时间:2019-06-12

本文共 3393 字,大约阅读时间需要 11 分钟。

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 -a10       when: (ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_major_version'] == "6") or11             (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 -a10       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=present10     when:11       - ansible_pkg_mgr == 'yum'12     notify: restart httpd13 14   - name: "Update apache version - apt"15     apt: name=apache2 state=present update_cache=yes16     when:17       - ansible_pkg_mgr == 'apt'18     notify: restart apache219 20 21   handlers:22     - name: restart apache223       service: name=apache2 state=restarted24     - name: restart httpd25       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

 

转载于:https://www.cnblogs.com/scajy/p/11561416.html

你可能感兴趣的文章
数据持久化(五)之CoreData
查看>>
Drupal 7 电子邮件的发送设置 SMTP, Mail System, Mime Mail
查看>>
VS2013打包部署(图解)
查看>>
开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
查看>>
搭建一个Oracle到Oracle的Goldengate双向复制环境
查看>>
LED操作
查看>>
字符流与转换流
查看>>
[leetcode] #213 House Robber II Medium (medium)
查看>>
6.23-6.24 小结复习(文件上传 与 MYSQL的总结)
查看>>
JSP 生命周期
查看>>
人才盘点
查看>>
说说视图层架构
查看>>
解读ASP.NET 5 & MVC6系列
查看>>
Android如何连接MySQL数据库
查看>>
Android获取短信验证码
查看>>
ABP从入门到精通(5):.扩展国际化语言资源
查看>>
Niveum类型框架库
查看>>
Chrome开发者工具详解(3)-Timeline面板
查看>>
"Hello World"
查看>>
ASP.NET Core 2.0 使用支付宝PC网站支付实现代码(转)
查看>>