2015-01-22 18 views
15

Sto provando a verificare se la versione fornita è una versione supportata valida. Ho impostato l'elenco di versioni accettabili in una variabile e desidero annullare l'attività se la versione fornita non è presente nell'elenco. Tuttavia, non sono sicuro di come farlo.Verifica se un elenco contiene un elemento in Ansible

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

e

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

    - name: continue with rest of tasks... 

Sopra è una sorta di quello che voglio fare, ma non sono stati in grado di capire se c'è un modo una linea di costruire una "lista contiene" invito a il modulo Fail.

risposta

43

Non è necessario {{}} in presenza di condizioni. Quello che stai cercando è:

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

Dove è documentato? – thisjustin

+0

Questo sembra funzionare solo per le stringhe esatte :( – xenithorb

+0

In realtà questa è una funzionalità di jinja2 e quindi nella loro documentazione. Vedi http://jinja.pocoo.org/docs/2.9/templates/#other-operators – teissler

4

Ansible ha un filtro version_compare dal 1.6. Si può fare qualcosa di simile di seguito in when condizionale:

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

questo vi darà supporto per i principali & le versioni minori paragoni ed è possibile confrontare le versioni con operatori come:

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

È potete trovare maggiori informazioni al riguardo qui: Ansible - Version comparison filters

O se hai un caso davvero semplice puoi usare ciò che @ ProfHase85 ha suggerito

+0

Ho notato questo durante la mia ricerca, ma il motivo per cui non ho optato per questo è che volevo essere in grado di supportare un elenco casuale di #, che potrebbe essere discontinuo. Ie 2, 7, 10, 11, e non l'ho fatto voglio costruire una pazza combinazione di operatori – Shark

Problemi correlati