ansible Jinja2:unicode对象'没有属性'前缀'

时间:2017-08-21 12:45:38

标签: ansible jinja2

我有以下广告资源文件:

172.16.1.177 name=P1
172.16.1.182 name=P2
172.16.1.183 name=P3
172.16.1.184 name=P4

跟随变量文件:

P1:
 prefix: "16001"
P2:
 prefix: "16002"
P3:
 prefix: "16003"
P4:
 prefix: "16004"

使用上面的Jinja2模板,如果我使用以下这个工作正常:

Host ID for P1 = {{P1.prefix}}

我输出为:P1 = 16001的主机ID

但是我想动态地为每个主机使用它,当我尝试以下时:

Host ID for {{name}} = {{name.prefix}}

运行playbook时出现以下错误:

{"failed": true, "msg": "'unicode object' has no attribute 'prefix'"}

有人可以帮助我避免这个错误吗?

1 个答案:

答案 0 :(得分:0)

当您键入name.prefix时,您希望Ansible / Jinja2将第一部分(name)视为值,将第二部分(prefix)视为对象名称。但是name也将被视为对象名称。

您可以改为使用vars词典:

vars[name].prefix