Cet article très rapide explique comment caster proprement des variables d’environnement de type bool passées à un Playbook.

Si l’utilisateur entre yes, 1, True cela sera considéré de la même manière si vous utilisez cette commande:

1
{{ votre_var | d() | bool }}

Le d() (pour default) est utile pour ne pas avoir une erreur disant que votre_var n’est pas définie.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from jinja2 import Template
from ansible.runner.filter_plugins.core import bool
Template('').environment.filters['bool'] = bool
tmpl = Template('{{ var | d() | bool }}')
>>> print tmpl.render()
False
>>> print tmpl.render(var=None)
None
>>> print tmpl.render(var='')
False
>>> print tmpl.render(var='toto')
False
>>> print tmpl.render(var=' ')
False
>>> print tmpl.render(var='True')
True
>>> print tmpl.render(var=[])
False
>>> print tmpl.render(var=['list'])
False
>>> print tmpl.render(var={})
False
>>> print tmpl.render(var={'key': 'value'})
False