2014-10-29 11 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 

Gdy ten playbook, otrzymuję ten błąd:ansibl: nie ma dostępu do wartości słownika - dostaje błąd: „Przedmiot dict” ma atrybut

One or more undefined variables: 'dict object' has no attribute 'name' 

ten jeden faktycznie działa dobrze :

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

Czego mi brakuje?

Odpowiedz

9

To nie jest ten sam kod. Jeśli przyjrzysz się dokładnie przykładowi, zobaczysz, że pod numerem users masz kilka dykt.

W twoim przypadku masz dwie dicts ale tylko z jednym przyciskiem (alice lub telephone) z odpowiednimi wartościami "Alice", 123.

Wolisz robić:

- 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 

(zauważ, że zmieniłem hosta na localhost, więc mogę go łatwo uruchomić i dodać gather_facts: no, ponieważ nie jest to konieczne.) YMMV.)

+0

O, błąd literowy ... dzięki! – user1692261

Powiązane problemy