Ansible: не удается получить доступ к значению словаря-ошибка: "объект dict" не имеет атрибута
---
- 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
когда я запускаю этот playbook, я получаю эту ошибку:
One or more undefined variables: 'dict object' has no attribute 'name'
Это на самом деле работает просто отлично:
debug: msg="user {{ item.key }} is {{ item.value }}"
что я упустил?
1 ответов
это не тот же код. Если вы внимательно посмотрите на пример, вы увидите, что под users
, у вас есть несколько предсказывает.
в вашем случае, у вас есть два предсказывает, но только с одним ключом (alice
или telephone
) с соответствующими значениями "Алиса", 123.
вы бы лучше сделали:
- 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
поэтому я могу легко запустить его и добавил gather_facts: no
так как это не нужно здесь. YMMV.)