VIju Venugopal
VIju Venugopal

Reputation: 23

When Condition Ansible not working using OR?

  1. The playbook should display kernels which are not mentioned in the playbook.
  2. Or conditions not getting checked as expected
---

- 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')

Upvotes: 2

Views: 77

Answers (1)

Vladimir Botka
Vladimir Botka

Reputation: 67984

Put the list into a variable, e.g.

- 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

gives

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

If you need advanced testing see Comparing versions.

Upvotes: 4

Related Questions