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

ansible Jinja2:unicode对象';没有属性';前缀';,ansible,jinja2,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" 如果我使用以下工具,使用上面的if Jinja2模板效果很好: Host ID for P1 = {{P1.prefix}}

我有以下库存文件:

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"
如果我使用以下工具,使用上面的if 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'"}

有人能帮我避免这个错误吗?

当你键入
名称.前缀时,你想让Ansible/Jinja2将第一部分(
名称
)作为值,第二部分(
前缀
)作为对象名。但是,
name
也将被视为对象名称

您可以改用
vars
字典:

vars[name].prefix