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之间的冲突导致的,因为随着自定义variablesusers更改为users ,这个问题不再发生。 但是, 在What Makes A Valid Variable Name文档中找不到users : 添加,附加,as_integer_ratio,bit_length,大写,中心,清除,共轭,复制,计数,解码,分母,区别,差异_update,丢弃,编码,endswith,expandtabs,扩展,查找,格式,fromhex,fromkeys,get,has_key,hexforms,索引,插入,交集,intersection_update,isalnum,isalpha,isdecimal,isdigit,isdisjoint,is_integer,islower,isnumeric,isspace,issubset,issuperset,istitle,isupper,items,iteritems,iterkeys,itervalues,join,我们可以看到,我们可以使用它来创build一个新的对象,这个对象可以用来创build一个新的对象, symmetric_difference_update,title,translate,union,update,upper,values,viewitems,viewkeys,viewvalues,zfill。
- 全球:这是由configuration,环境variables和命令行设置
- 播放:每个播放和包含的结构,variables条目,include_vars,angular色默认值和variables。
- 主机:直接与主机关联的variables,如库存,事实或注册的任务输出
问题
如果没有提出"AnsibleUndefinedVariable: 'unicode object' has no attribute 'name'"错误的任务,那么这里很难说出什么问题了。 我不能重现这个错误,所以我想这是你正在使用的模块中的错误。
除已经列出的known public attributes ,我没有进一步的规则。 即使使用known public attributes ,在我的testing中也不会导致任何错误。
Ansible有魔法variables的概念,基本上只是由setup模块收集的事实。 您可以通过针对主机运行setup模块来获取magic variables的列表。
types意义上的Ansible中没有global和localvariables。 Ansible中的variables有一个scope 。 variables的范围取决于它的设置。 查看variables优先级的文档 。