我是Ansible新手,我尝试使用由其他变量组成的变量名
在group_vars目录中有all.yml文件,其中包含以下变量:
device_name: nycisco
remote_site: sydney
nycisco_ipsec_sydney: 10.10.10.10
在我的剧本中,我希望能够使用 device_name 变量和 remote_site 变量来显示 nycisco_ipsec_sydney 变量。
我尝试了以下操作:
- name: Display remote peer IP address
debug: msg="{{ device_name + '_ipsec_' + remote_site }}"
但是它返回“ nycisco_ipsec_sydney”,而不是我希望显示的预期变量值10.10.10.10。
我不明白,因为当我尝试:
- name: Display remote peer IP address
debug: msg="{{ nycisco_ipsec_sydney }}"
它正确返回10.10.10.10。
在此先感谢您的帮助;)
答案 0 :(得分:0)
尝试定义一个临时变量,为其分配以下值
var="{{ device_name }}_ipsec_{{ remote_site }}"
然后像这样打印出味精:
msg="{{ var }}"
可能是,您必须将不同的{{}}用引号引起来,但我对此不是100%肯定。
我们项目中的另一个示例是:
remote_home: "{{ansible_env.HOME}}"
jboss_home: "{{remote_home}}/example/jboss-project"
希望有帮助。
编辑:另一种解决方案
答案 1 :(得分:0)
我已经可以使用查找模块解决问题。 以下代码正确返回 nycisco_ipsec_sydney 变量值,即10.10.10.10。
msg="{{ lookup('vars', device_name + '_ipsec_remote_' + remote_site) }}"
答案 2 :(得分:0)
我能够通过以下代码解决
vars:
app: xxx
xxx_header: this is a new variable
- debug:
msg: "{{vars[app + '_header']}}"