Ansible复制失败:模板错误

时间:2015-07-08 14:27:44

标签: vagrant ansible ansible-playbook

使用本地流浪汉VM,我想部署.war文件。运行以下简单的ansible-playbook,我卡住了。 ansible-master-playbook包含在Vagrantfile中,并在'vagrant provision'过程中运行。长话短说:下面的剧本正在运行。

---
  - copy: src={{ ci files }}/app.war dest=/path/to/webapps/app.war
  [...]

变量'files'继承自master-playbook。

- hosts: all
  sudo: yes
  remote_user: vagrant
  vars:
    ci_files: /local-user/ci

这是错误:

fatal: [default] => Failed to template src={{ files }}/opencms.war dest=/usr/local/tomcat/webapps/ mode=0755: template error while templating string: expected token 'end of print statement', got 'files'

在撰写此问题时找到答案,并提供以下解决方案。

1 个答案:

答案 0 :(得分:2)

Ansible 变量可能包含空格。修复参考解决了问题:

- copy: src={{ ci_files }}/app.war dest=/path/to/webapps/app.war

让我们理解Ansible的所作所为:

它试图解析字符串{{ ci files }}。然而,第二个空格表示变量的结束已达到。因此,Ansible期望下一部分字符(标记)成为右括号,但得到files。右括号是end of print statement的标记。