2012-06-05 16 views
7

Attualmente sto imparando Jinja2 e io sono sicuro su come affrontare le variabili il modo corretto:Jinja2 nidificato variabili

Ecco le mie variabili in YAML:

--- 
hosts: 
    app201.acme.com: {eth0: {ip: 46.0.0.1, netmask: 255.255.255.255}} 
    graphite.acme.com: {eth0: {ip: 46.0.0.2, netmask: 255.255.255.255}, 
         eth0.1: {ip: 10.2.90.1, netmask: 255.255.255.255}} 

e qui il modello Jinja2:

quindi attualmente il mio output appare così poiché non riesco ad accedere alla seconda dimensione dell'hashl.

graphite.acme.com eth0.1

eth0

risposta

20

La variabile hosts è un dict. Il modo corretto per accedere ai valori in dict consiste nell'utilizzare l'operatore [].

{{ fqdn }} 
{% for interface in hosts[fqdn] %} 
    {{ interface }} 
    {{ hosts[fqdn][interface]['ip'] }} 
{% endfor %} 

. L'operatore è utilizzato per accedere all'attributo di un oggetto.

+0

che ha fatto il trucco. grazie! – damaex

+1

@ user1436955, molto gradito. Puoi contrassegnarlo come una risposta se pensi che questo sia quello che stavi cercando. – Vikas

+0

Interessantemente l'interfaccia ['ip'] non sembra funzionare, suppongo che l'interfaccia sia trattata come una stringa, non detta. –