2014-10-29 6 views
12
--- 
- hosts: test 
    tasks: 
    - name: print phone details 
     debug: msg="user {{ item.key }} is {{ item.value.name }} ({{ item.value.telephone }})" 
     with_dict: users 
    vars: 
    users: 
     alice: "Alice" 
     telephone: 123 

'dict nesneyi' hayır özelliği vardır sözlük değerini erişemez hata var :yanıtlayıcı ': -</p> <pre><code>One or more undefined variables: 'dict object' has no attribute 'name' </code></pre> <p>Bu aslında gayet güzel çalışıyor: Ben bu taktik kitabı çalıştırdığınızda, bu hatayı alıyorum

debug: msg="user {{ item.key }} is {{ item.value }}" 

Neyi eksik?

cevap

9

Bu, tam olarak aynı kod değil. Örnekte dikkatli bir şekilde bakarsanız, users'un altında birkaç dikdörtgenin olduğunu görürsünüz. Senin durumunda

, iki dicts var ama sadece bir anahtarla (alice veya telephone) "Alice" ilgili değerleri ile, 123.

ile tercih edersin yapardım:

- hosts: localhost 
    gather_facts: no 
    tasks: 
    - name: print phone details 
     debug: msg="user {{ item.key }} is {{ item.value.name }} ({{ item.value.telephone }})" 
     with_dict: users 
    vars: 
    users: 
     alice: 
     name: "Alice" 
     telephone: 123 

(localhost'u ana bilgisayar olarak değiştirdiğime dikkat edin, böylece kolayca çalıştırabilirim ve burada gerekli olmadığından gather_facts: no eklenmiştir. YMMV.)

+0

Hata, yazım hatası ... teşekkürler! – user1692261

İlgili konular