ansible when is 二: 判断数字字符、奇偶数、整除、大写、小写,版本号比较

1、数字与字符常用的比较

  even : 判断数值是否是偶数,是偶数则返回真;
  odd :判断数值是否是奇数,是奇数则返回真;
  divisibleby(num) :判断是否可以整除指定的数值,如果除以指定的值以后余数为0,则返回真;
  number: 是否为数字;
  string: 是否为字符;
  lower: 是否为小写;
  upper: 是否为大写;

如:

---
            - hosts: hostA
              tasks:
                - name: "是否为数字"
                  tags: data_string
                  debug:
                    msg: "1 is number"
                  when: 1 is number
                - name: "是否为字符"
                  tags: data_string
                  vars:
                    var1: abc
                  debug:
                    msg: "var1 is string"
                  when: var1 is string
                - name: "是否为全大写"
                  tags: data_string
                  debug:
                    msg: "'Abc is not upper string'"
                  when: '"Abc" is not upper'
                - name: "是否为全小写"
                  tags: data_string
                  debug:
                    msg: "abc is lower string"
                  when: '"abc" is lower'
                - name: "是否为奇数"
                  tags: data_string
                  debug:
                    msg: "13 是奇数"
                  when: 13 is odd
                - name: "是否为偶数"
                  tags: data_string
                  debug:
                    msg: "44 是偶数"
                  when: 44 is even
                - name: "是否可以被指定数整除"
                  tags: data_string
                  debug:
                    msg: "33 可以被11 整除"
                  when: 33 is divisibleby(11)

2、版本号比较

version: 版本号的比较
可以用于对比两个版本号的大小,或者与指定的版本号进行对比,使用语法为 version('版本号', '比较操作符'),如:2.4 is version('2.5','gt');
版本比较的符号写法:
  大于 :> 或 gt
  大于等于:>= 或 ge
  小于 :< 或 lt
  小于等于:<= 或 le
  等于 := 或 eq
  如:

---
        - hosts: hostA
            tasks:
            - name: "获取ansible 软件版本"
              shell: ansible --version | head -n 1 | awk -F " " '{print $2}'
                register: result
                tags: vers
            - name: "版本号比较"
              debug:
                msg: "ansible 版本号:{{result.stdout}}"
              when: result.stdout is version("2.9.6","eq") and result.stdout is version("2.9.4","gt")
              tags: vers

测试结果:

root@master:/home/user1# ansible-playbook -i ansible_host test_when.yml -t vers
        PLAY [hostA] **********************************************************************************************************************

        TASK [Gathering Facts] ************************************************************************************************************
        ok: [192.168.108.22]

        TASK [获取ansible 软件版本] *******************************************************************************************************
        changed: [192.168.108.22]

        TASK [版本号比较] *****************************************************************************************************************
        ok: [192.168.108.22] => {}

        MSG:
        ansible 版本号:2.9.6

        PLAY RECAP ************************************************************************************************************************
        192.168.108.22             : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

 

posted @ 2023-03-30 14:03  橘子飞飞  阅读(197)  评论(0编辑  收藏  举报