我有以下广告资源文件:
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'"}
有人可以帮助我避免这个错误吗?
答案 0 :(得分:0)
当您键入name.prefix
时,您希望Ansible / Jinja2将第一部分(name
)视为值,将第二部分(prefix
)视为对象名称。但是name
也将被视为对象名称。
您可以改为使用vars
词典:
vars[name].prefix