博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ansible-playbook 条件判断when、pause(学习笔记二十三)
阅读量:5756 次
发布时间:2019-06-18

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

有一些模块,例如copy这个模块有一些机制能跳过本次模块的运行.其实我们也可以使用自己的条件语句去配置跳过模块,这样方便你服务能够选择使用不同的包管理(apt,yum)和不同的文件系统.并且你还可以使用set_fact这个模块做成更多的差异配置

你能够使用when这个关键字去达到跳过本次模块运行的效果,when关键字后面跟着的是python的表达式,在表达式中你能够使用任何的变量或者fact,当表达式的结果返回的是false,便会跳过本次的模块

下面一段配置就说明了如何在debian和redhat系统中选择apt还是yum包管理,并且如果不是以上两个系统,会用debug模块把系统打印出来

---

- name: Install VIM

  hosts: all

  tasks:

    - name: Install VIM via yum

      yum: name=vim-enhanced state=installed

      when: ansible_os_family == "RedHat"

    - name: Install VIM via apt

      apt: name=vim state=installed

      when: ansible_os_family == "Debian"

    - name: Unexpected OS family

      debug: msg="OS Family {

{ ansible_os_family }} is not supported" fail=yes

      when: not ansible_os_family == "RedHat" or ansible_os_family == "Debian"

条件语句还有一种用法,它还可以让你当达到一定的条件的时候暂停下来,等待你的输入确认.一般情况下,当ansible遭遇到error时,它会直接结束运行.那其实你可以当遭遇到不是预期的情况的时候给使用pause模块,这样可以让用户自己决定是否继续运行任务

name: pause for unexpected conditions

pause: prompt="Unexpected OS"

when: ansible_os_family != "RedHat"

下面一些情景建议你使用条件语句做跳过动作

job里面有不同操作系统的机器

提示用户,然后再执行操作请求

提高性能,避免运行一个需要执行一段时间模块,而且你知道这个模块不会返回changed

转载地址:http://tztkx.baihongyu.com/

你可能感兴趣的文章
Proxy服务器配置_Squid
查看>>
开启“无线网络”,提示:请启动windows零配置wzc服务
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
栈(一)
查看>>
ios 自定义delegate(一)
查看>>
创建美国地区的appleId
查看>>
例题10-2 UVa12169 Disgruntled Judge(拓展欧几里德)
查看>>
JS 原生ajax写法
查看>>
Composer管理PHP依赖关系
查看>>
React.js学习笔记之JSX解读
查看>>
我所了解的Libevent和SEDA架构
查看>>
Socket编程问题小记
查看>>
基于Flask-Angular的项目组网架构与部署
查看>>
一张图道尽程序员的出路
查看>>
redis 常用命令
查看>>
LVS+Keepalived高可用负载均衡集群架构
查看>>
烂泥:kvm安装windows系统蓝屏
查看>>
iPhone开发面试题--葵花宝典
查看>>
EdbMails Convert EDB to PST
查看>>