users:
- name: hellouser
password: pw
accessToken: ""
readonly: false
- name: hellouser2
password: pw2
accessToken: ""
readonly: true
приводит к:
fatal: [IP]: FAILED! => {"changed": false, "failed": true, "msg":
"AnsibleUndefinedVariable: 'unicode object' has no attribute 'name'"}
когда users
изменен на users2
:
users2:
- name: hellouser
password: pw
accessToken: ""
readonly: false
- name: hellouser2
password: pw2
accessToken: ""
readonly: true
запуск анзибла завершается успешно.
Обсуждение
users
поскольку эта проблема больше не возникала, поскольку пользовательская переменная users
был изменен на users2
. тем не мение users
не был найден в то What Makes A Valid Variable Name
документация:добавить, добавить, as_integer_ratio, bit_length, capize, center, clear, сопрягать, копировать, подсчитывать, декодировать, знаменатель, разницу, difference_update, отбрасывать, кодировать, заканчивается, расширять, расширять, находить, форматировать, fromhex, fromkeys, get, has_key, шестнадцатеричный, imag, index, insert, пересечение, crossction_update, isalnum, isalpha, isdecimal, isdigit, isdisjoint, is_integer, islower, isnumeric, isspace, issubset, issueperset, istitle, isupper, items, iteritems, iterkeys, keys, itervalues, ljust, lower, lstrip, numerator, partition, pop, popitem, real, remove, replace, reverse, rfind, rindex, rjust, rpartition, rsplit, rstrip, setdefault, sort, split, splitlines, startwith, strip, swapcase, symric_difference, simric_difference_update, title, translate, union, update, upper, values, viewitems, viewkeys, viewvalues, zfill.
- Глобальный: устанавливается конфигурацией, переменными среды и командной строкой.
- Игра: каждая игра и содержащиеся структуры, записи переменных, include_vars, значения по умолчанию для ролей и переменные.
- Хост: переменные, напрямую связанные с хостом, такие как инвентарь, факты или зарегистрированные выходные данные задач.
Вопросы
Без задач, которые подняли "AnsibleUndefinedVariable: 'unicode object' has no attribute 'name'"
ошибка, трудно сказать, что здесь пошло не так. Я не могу воспроизвести эту ошибку, поэтому полагаю, что это ошибка используемого вами модуля.
Помимо уже процитированных список из known public attributes
я не знаю никаких других правил. Даже используя known public attributes
не привело ни к каким ошибкам в моих тестах.
В Ansible есть концепция магические переменные которые в основном представляют собой факты, собранные setup
модуль. Вы можете получить список magic variables
запустив setup
модуль против хоста.
Нет global
и local
переменные в Ansible в смысле types
. Переменные в Ansible имеют scope
. Объем переменной зависит от того, где она установлена. Взгляни на документация по приоритету переменных.