J'essaie de vérifier si la version fournie est une version prise en charge valide. J'ai défini la liste des versions acceptables dans une variable et je souhaite échouer en dehors de la tâche si la version fournie ne figure pas dans la liste. Cependant, je ne sais pas comment faire cela.
#/role/vars/main.yml
---
acceptable_versions: [2, 3, 4]
et
#/role/tasks/main.yml
---
- fail:
msg: "unsupported version"
with_items: "{{acceptable_versions}}"
when: "{{item}} != {{version}}"
- name: continue with rest of tasks...
Ci-dessus, c'est en quelque sorte ce que je veux faire, mais je n'ai pas été en mesure de déterminer s'il existe un moyen d'une ligne de construire un appel "list contient" pour le module fail.
Tu n'as pas besoin {{}}
dans les conditions quand. Ce que vous recherchez, c'est:
- fail: msg="unsupported version"
when: version not in acceptable_versions
Ansible a un filtre version_compare
Depuis 1.6. Vous pouvez faire quelque chose comme ci-dessous dans when
conditionnel:
when: ansible_distribution_version | version_compare('12.04', '>=')
Cela vous aidera à comparer les versions majeure et mineure. Vous pouvez également comparer les versions à l'aide d'opérateurs tels que:
<, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne
Vous trouverez plus d’informations à ce sujet ici: Ansible - Filtres de comparaison de versions
Sinon, si vous avez un cas très simple, vous pouvez utiliser ce que @ ProfHase85 a suggéré