检查何时条件不是ansible中的值

时间:2020-06-18 09:55:29

标签: ansible

我只想在db_version var相等或不相等时运行某些任务。这是我的任务:

- name: Install Software Only 12.1 or 12.2
    shell: |
      {{ stage_dir}}/runInstaller -silent -waitforcompletion \
      oracle.install.option=INSTALL_DB_SWONLY \
      UNIX_GROUP_NAME=dba \
      INVENTORY_LOCATION={{ db_inventory }} \
      ORACLE_HOME={{ oracle_home }} \
      ORACLE_BASE={{ oracle_base }} \
      ..
    when:  db_version == "12.1.0.2" or db_version == "12.2.0.2"

- name: Install Software Only for 18c and above
    shell: |
      {{ oracle_home}}/runInstaller -silent -applyRU {{ stage_dir }} -waitforcompletion \
      oracle.install.option=INSTALL_DB_SWONLY \
      UNIX_GROUP_NAME=dba \
      INVENTORY_LOCATION={{ db_inventory }} \
      ORACLE_HOME={{ oracle_home }} \
      ORACLE_BASE={{ oracle_base }} \
      ...
    when: db_version != "12.1.0.2" or db_version != "12.2.0.2"

当db_version为12.1.0.2时,它将运行18c任务。这种“简单”的条件有什么问题?

谢谢

1 个答案:

答案 0 :(得分:1)

显然可以使用jinja2版本解决此问题。

when: db_version is version('12.2.0.2','<=')

when: db_version is version('18','>=')

在ansible 2.5中,将ansible重命名为version_compare到version