我想在ansible中使用jinja2模板复制文件。
我在templates / file.j2中有一个文件,在该文件中我定义了一个变量
fos.broker.host={{ fos.broker.host }}
在group_vars / stage中,我将此变量的值设为
fos.broker.host: 'api_vl.vlstage.fidor.de'
最后我通过main.yml部署它,它看起来像。
---
- hosts: vlstage
vars_files:
- group_vars/vlstage
tasks:
- name: copy files to host
template: src=templates/file.j2 dest=/opt/tomcat/lib/file.conf
backup=yes owner=zoaib group=zoaib
但是当我运行命令ansible-playbook -i hosts main.yml -u zoaib
我得到以下错误:
TASK [copy files to host] *************************************************************************************************************************************************************
fatal: [s-vl-idl-app02.fidor.intern]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'fos' is undefined"}
任何导致解决问题的方法?
不要在变量名中使用点。点表示法用于表示字典键。
阅读What Makes A Valid Variable Name:
foo-port
,foo port
,foo.port
和12
不是有效的变量名。
虽然实际上,可以在名称中使用带点的变量,并使用vars
查找插件引用它的值:
fos.broker.host={{ lookup('vars', 'fos.broker.host') }}