我有ansible工作,其工作是根据命令行提供的输入动态构建配置文件。
[ABC_Production]
<ip_address>
- hosts: "{{cluster}}"
remote_user: ubuntu
sudo: True
vars:
ABC_Production: {
dataSourceUsername: bobDb
}
tasks:
- name: copy test
template: src=templates/{{cluster}}.j2 dest=/tmp/test_file owner=root group=root mode=755
bobDBuser={{ cluster+'.dataSourceUsername'] }}
当以cluster=ABC_Production
作为参数运行ansible作业时,test_file中的预期输出:
bobDBuser=bobDb
实际输出:
bobDBuser=ABC_Production.dataSourceUsername
如何告诉jinja ABC_Production
是变量并访问它?
答案 0 :(得分:2)
如果你想动态访问变量名,你必须得到更多的python-y和少一点jinja-y:
- hosts: localhost
remote_user: ubuntu
sudo: True
vars:
ABC_Production:
dataSourceUsername: bobDb
cluster: ABC_Production
tasks:
- debug:
msg: "The value is {{ vars[cluster]['dataSourceUsername'] }}"