IT袋

当前位置:主页 > 经验教程 > 系统教程 >

Ansible的条件判断介绍和使用方式详解

Ansible的条件判断介绍和使用方式详解!

时间:2023-09-17 20:48:10 来源:IT袋 作者:苏晓敏
导读:Ansible的条件判断介绍和使用方式详解,小编为大家解答Ansible的条件判断介绍和使用方式详解的IT知识,具体详情如下: 前言 很多时候,某些场景下playbook的结果依赖于变量、fact或者是前一个任务的执行结果,

Ansible的条件判断介绍和使用方式详解

小编为大家解答Ansible的条件判断介绍和使用方式详解的IT知识,具体详情如下:

前言

很多时候,某些场景下playbook的结果依赖于变量、fact或者是前一个任务的执行结果,或者有的时候,我们会基于上一个task执行返回的结果而决定如何执行后续的task,这个时候就需要用到条件判断。

Ansible的条件判断介绍和使用方式详解

条件语句在Ansible中的使用场景:

  • 在目标主机上定义了一个硬限制,比如:目标主机的发行版本必须是RedHat,才能执行该task;
  • 捕获一个命令的输出,根据命令输出结果的不同以触发不同的task;
  • 根据不同目标主机的facts,以定义不同的task;
  • 根据目标机的cpu或者memory的大小,对相关应用性能进行调优;
  • 用于判断某个服务的配置文件是否发生变更,以确定是否需要重启服务等。

下面就介绍一些常用的条件判断

when 关键字

1. when 关键字使用

在ansible中,when是条件判断的最常用关键字。如在安装包的时候,需要指定主机的操作系统类型,可以使用when语句来做判断。when关键字后面跟着的是python的表达式,在表达式中你能够使用任何的变量或者fact,当表达式的结果返回的是false,便会跳过本次的任务。

示例:

---
- name: install wget package
  hosts: all
  tasks:
    - name: Install wget
      yum:
        name: wget
        state: installed
      when: ansible_os_family == "RedHat"

2. when 配合比较运算符

以上示例,我们使用了”==“的比较运算符,在ansible中,还支持如下比较运算符:

  • ==:比较两个对象是否相等,相等则返回真。可用于比较字符串和数字
  • !=:比较两个对象是否不等,不等则为真。
  • :比较两个对象的大小,左边的值大于右边的值,则为真
  • <:比较两个对象的大小,左边的值小于右边的值,则为真
  • =:比较两个对象的大小,左边的值大于等于右边的值,则为真
  • <=:比较两个对象的大小,左边的值小于等于右边的值,则为真

如:

when: ansible_disibution == "CentOS"
when: ansible_machine == "x86_64" 
when: max_memory <= 512

3. 逻辑运算符

  • and:逻辑与,当左边和右边两个表达式同时为真,则返回真
  • or:逻辑或,当左右和右边两个表达式任意一个为真,则返回真
  • not:逻辑否,对表达式取反
  • ():当一组表达式组合在一起,形成一个更大的表达式,组合内的所有表达式都是逻辑与的关系
           
           

相关阅读