首页 > 解决方案 > 当条件 Ansible 不使用 OR 时?

问题描述

  1. 剧本应显示剧本中未提及的内核。
  2. 或未按预期检查条件
---

- name: Check Details
  hosts: all
  gather_facts: false
  become: true
  tasks:

    - name: Check Kernel
      shell: uname -r
      register: kernelver

    - name: Target Kernel NOT achieved
      debug:
        var: kernelver.stdout
      when: (kernelver.stdout != '2.6.32-754.35.1.el6.x86_64') or
            (kernelver.stdout != '3.10.0-1160.21.1.el7.x86_64') or
            (kernelver.stdout != '4.18.0-240.15.1.el8_3.x86_64')

标签: ansible

解决方案


将列表放入变量中,例如

- hosts: localhost
  gather_facts: false
  vars:
    kernel_black_list:
      - 5.4.0-70-generic
      - 5.4.0-71-generic
      - 5.4.0-72-generic
  tasks:
    - command: uname -r
      register: kernelver
    - debug:
        var: kernelver.stdout
      when: kernelver.stdout not in kernel_black_list

ok: [localhost] => 
  kernelver.stdout: 5.4.0-73-generic

如果您需要高级测试,请参阅比较版本


推荐阅读