Проверьте, содержит ли список элемент в Ansible

Я пытаюсь проверить, является ли поставляемая версия допустимой поддерживаемой версией. Я установил список допустимых версий в переменной, и я хочу выйти из задачи, если поставляемая версия отсутствует в списке. Однако я не уверен, как это сделать.

#/role/vars/main.yml
---
  acceptable_versions: [2, 3, 4]

и

#/role/tasks/main.yml
---
  - fail: 
      msg: "unsupported version"
      with_items: "{{acceptable_versions}}"
      when: "{{item}} != {{version}}"

  - name: continue with rest of tasks...

Выше это то, что я хочу сделать, но я не смог выяснить, существует ли один способ построения "списка содержит" вызов для модуля fail.

Ответ 1

В условиях не требуется {{}}. Что вы ищете:

- fail: msg="unsupported version"
  when: version not in acceptable_versions

Ответ 2

Ansible имеет фильтр version_compare с 1.6. Вы можете сделать что-то вроде ниже в when условном:

when: ansible_distribution_version | version_compare('12.04', '>=')

Это даст вам поддержку для сравнения основных и второстепенных версий, и вы можете сравнивать версии с помощью таких операторов, как:

<, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne

Вы можете найти более подробную информацию об этом здесь: Ansible - фильтры сравнения версий

В противном случае, если у вас действительно простой случай, вы можете использовать то, что предложил @ProfHase85