模板模块中的Ansible group_vars

时间:2018-09-06 12:41:08

标签: ansible ansible-template

我想在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"}

有什么办法可以解决这个问题?

1 个答案:

答案 0 :(得分:3)

不要在变量名称中使用点。点符号用于指代字典键。

阅读What Makes A Valid Variable Name

  

foo-portfoo portfoo.port12不是有效的变量名。


尽管实际上,可以使用名称中带有点的变量,并通过vars查找插件引用其值:

fos.broker.host={{ lookup('vars', 'fos.broker.host') }}