Boucle dictionnaire d'ansible modèle

Je suis en train de boucler un dictionnaire par le biais d'un ansible modèle à l'aide de jinja2 de créer un certain nombre de sources de données, mais cette erreur [{'msg': "AnsibleUndefinedVariable: One or more undefined variables: 'dict object' has no attribute 'value'", 'failed': True}]}

Lors de l'exécution d'une tâche de débogage il ne obtenir les valeurs correctes donc je pense que mon problème est dans le modèle lui-même, mais j'ai été incapable de comprendre ce que je fais de mal.

Ansible Tâche

- name: debug dictionary
  debug: msg="{{ item.value.db_url }}"
  with_dict: databases

- name: copy tomcat config files
  template: src="{{ item.src }}" dest="{{ item.dest }}"
  with_items:
    - { src: 'context.xml.j2', dest: '/opt/tomcat/conf/context.xml'}
  notify: restart tomcat
  with_dict: databases

Ansible Dictionnaire

databases:
  db1:
    db_resource: jdbc/db1
    db_maxidle: 50
    db_maxconn: 350
    db_maxwait: 10000
    db_user: dbuser
    db_pass: "{{ dbpass }}"
    db_url: jdbc:postgresql://server:5432/dbname
    db_driver: org.postgresql.Driver

Jinja2 Modèle

{% for items in databases %}
    <resource name="{{ item.value.db_resource }}" auth="container" type="javax.sql.datasource"  maxtotal="{{ item.value.db_maxconn }}" maxidle="{{ item.value.db_maxidle }}" maxwaitmillis="{{ item.value.db_maxwait }}" username="{{ item.value.db_user }}" password="{{ item.value.db_pass }}" driverclassname="{{ item.value.db_driver }}" url="{{ item.value.db_url }}" />
{% endfor %}

Sortie De Débogage

ok: [IP] => (item={'key': 'db1', 'value': {'db_maxwait': 10000, 'db_maxconn': 350, 'db_maxidle': 50, 'db_driver': 'org.postgresql.Driver', 'db_pass': u'REDACTED', 'db_resource': 'jdbc/db1', 'db_user': 'dbuser', 'db_url': 'jdbc:postgresql://server:5432/dbname'}}) => {
    "item": {
        "key": "db1",
        "value": {
            "db_driver": "org.postgresql.Driver",
            "db_maxconn": 350,
            "db_maxidle": 50,
            "db_maxwait": 10000,
            "db_pass": "REDACTED",
            "db_resource": "jdbc/db1",
            "db_url": "jdbc:postgresql://server:5432/db",
            "db_user": "dbuser"
        }
    },
    "msg": "jdbc:postgresql://server:5432/dbname"
}
  • Pourquoi est votre deuxième tâche à l'aide de deux with_items et with_dict, surtout quand il ne semble pas être en faisant usage de celui-ci? Je serais très surpris si cela a effectivement travaillé.
  • Hmm, à l'origine, j'ai eu plusieurs fichiers dans cette tâche à l'aide de la with_items. Je l'ai enlevé mais toujours le même problème. Fait sens pour les séparer de leur bien, merci.
InformationsquelleAutor tweeks200 | 2016-06-10