仅在SUSE计算机上运行Ansible任务

问题描述 投票:0回答:1

我只想在特定的SUSE版本上执行Ansible任务。但是,此任务将针对所有Linux OS版本执行。这是不期望的。有人可以帮我弄这个吗?为什么什么时候条件不起作用?我做错了吗?

代码:

# Action 146: addlink ld-lsb.so.3->ld-2.11.1.so in /lib on sles11.x,12.x for lmutil in cct2000739233
  - name: Addlink ld-lsb.so.3->ld-2.11.1.so in /lib on sles11.x,12.x for lmutil
    shell: "ls ld-*.so|grep -v lsb|head -n 1"
    args:
      chdir: /lib
    register: ldso

  - stat:
      path: /lib64/ld-lsb-x86-64.so.3
    register: lib64_result

  - stat:
      path: /lib/ld-lsb.so.3
    register: lib_result

  - block:
      - file:
          src: "/lib/{{ ldso.stdout }}"
          dest: /lib/ld-lsb.so.3
          state: link
          force: true
      - file:
          src: /lib64/ld-linux-x86-64.so.2
          dest: /lib64/ld-lsb-x86-64.so.3
          state: link
          force: true
    when:
      # Check the OS level. Make sure it runs only on SLES-11 SP4,SLES-12SP0/1/2/3
      - ansible_distribution == 'Suse'
      - ansible_distribution_major_version == "11"
      - ansible_distribution_release == "4"
      - ansible_distribution_version == "11.4"

      - ansible_distribution == 'SLES'
      - ansible_distribution_major_version == "12"
      - ansible_distribution_release == "0" or "1" or "2" or "3"
      - ansible_distribution_version == "12.0" or "12.1" or "12.2" or "12.3"

      - not lib64_result.stat.exists|bool or not lib_result.stat.exists|bool
      - ldso.stdout != ''

  - debug:
      msg: "{{ ldso.stdout }}"
ansible suse
1个回答
0
投票

无法那样做or。必须是这样的:

  - ansible_distribution_release == "0" or ansible_distribution_release == "1" or ansible_distribution_release == "2" or ansible_distribution_release == "3"
  - ansible_distribution_version == "12.0" or ansible_distribution_version == "12.1" or ansible_distribution_version == "12.2" or ansible_distribution_version == "12.3"

您拥有它的方式,ansible_distribution_release == "0" or "1"ansible_distribution_release == "0"评估为false,这很好,但是"1"评估为truefalse or true然后计算为true

© www.soinside.com 2019 - 2024. All rights reserved.