可以用ansible在变量中设置变量吗?

可以用ansible在变量中设置变量吗?,ansible,Ansible,例如,将每个不同服务的用户名设置为 -名称:使用密码添加用户'user_xxx' ansible.builtin.user: 名称:“{{user\u name{{{svc\u name}}}” 密码:{{user_password{{svc_name}}}密码{hash('sha512')} 要将动态值设置为名称和密码,请使用组变量: user_name_a user_name_b user_name_c user_password_a user_password_b user_passwo

例如,将每个不同服务的用户名设置为

-名称:使用密码添加用户'user_xxx'
ansible.builtin.user:
名称:“{{user\u name{{{svc\u name}}}”
密码:{{user_password{{svc_name}}}密码{hash('sha512')}
要将动态值设置为
名称
密码
,请使用
组变量

user_name_a
user_name_b
user_name_c
user_password_a
user_password_b
user_password_c
但是要从环境变量中读取
a
b
c
,如下所示:

导出服务\u NAME=a
剧本:

vars:
svc_名称:“{{lookup('env','SERVICE_name')}”
然后将两种变量编译在一起,形成最终值

当我试着去做的时候,我

fatal: [server]: FAILED! => {"msg": "template error while templating string: expected token 'end of print statement', got '{'. String: {{ user_name_{{svc_name}} }}"}
例如,给定组变量

shell>cat组变量/all.yml
用户名:userA
用户名:userB
用户名:userC
用户密码:psswdA
用户密码:psswdB
用户密码:psswdC
剧本

shell>cat playbook.yml
-主机:本地主机
变量:
svc_名称:“{{lookup('env','SERVICE_name')}”
任务:
-调试:
msg:“名称:{{lookup('vars',user_name_'~svc_name)},
pswd:{{lookup('vars','user_password_'~svc_name)}”
给予

shell>SERVICE\u NAME=b ansible playbook playbook.yml
播放[本地主机]****************************************************************
任务[调试]********************************************************************
确定:[本地主机]=>
msg:'name:userB,pswd:psswdB'
...

谢谢。就是<代码>查找是解决此问题的正确方法。