Vérifier si une clé existe dans un dict en Jinja2 modèle sur ansible

J'ai un host_var dans ansible avec dict avec toutes les interfaces:

---
interfaces:
  vlan0:
    ip: 127.0.0.1
    mask: 255.255.255.0
    state: true

  vlan2:
    ip: 127.0.1.1
    mask: 255.255.255.0
    state: true

Et je veux vérifier si dict a une clé vlan1 si ok mettre à valeur de modèle vlan1.ip autre mis vlan2.ip.

{% if interfaces.vlan1 %} 
# and also I try {% if 'vlan1' in interfaces %}
{{ interfaces.vlan1.ip }};
{% else %}
{{ interfaces.vlan2.ip|default("127.0.0.1") }};
{% endif %};

Mais j'ai une erreur:

fatal: [127.0.0.1] => {'msg': "AnsibleUndefinedVariable: One or more undefined variables: 'dict object' has no attribute 'vlan1'", 'failed': True}

Je trouvé qu'il faut être travailler dans Jinja2 mais il semble qu'il ne fonctionne pas dans l'ansible. Peut-être que quelqu'un ait une autre façon de résoudre ce problème?
Quand je définis vlan1 il fonctionne très bien. Ansible la version 1.9.2

J'ai essayé de le reproduire en python et n'ont pas d'erreur si mon dictionnaire n'ont pas de clé vlan1. grâce à @GUIDO

>>> from jinja2 import Template
>>> b = Template("""
... {% if interfaces.vlan1 %}
... {{ interfaces.vlan1.ip }}
... {% else %}
... {{ interfaces.vlan2.ip|default("127.0.3.1") }}
... {% endif %}""")
>>> b.render(interfaces={'vlan3':{'ip':'127.0.1.1'},'vlan2':{'ip':'127.0.2.1'}})
u'\n\n127.0.2.1\n'
>>> b.render(interfaces={'vlan1':{'ip':'127.0.1.1'},'vlan2':{'ip':'127.0.2.1'}})
u'\n\n127.0.1.1\n'

OriginalL'auteur Alex | 2015-10-28