Check if a list contains an item in Ansible

Shark picture Shark · Jan 22, 2015 · Viewed 100.8k times · Source

I'm trying to check if the version supplied is a valid supported version. I've set the list of acceptable versions in a variable, and I want to fail out of the task if the supplied version is not in the list. However, I'm unsure of how to do that.

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

and

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

  - name: continue with rest of tasks...

Above is sort of what I want to do, but I haven't been able to figure out if there's a one line way to construct a "list contains" call for the fail module.

Answer

ProfHase85 picture ProfHase85 · Jan 22, 2015

You do not need {{}} in when conditions. What you are searching for is:

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