【问题标题】:Ansible copy fails: template errorAnsible 复制失败:模板错误
【发布时间】:2015-09-26 12:58:04
【问题描述】:

使用本地 vagrant 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'

在写这个问题时找到了答案,将在下面提供解决方案。

【问题讨论】:

    标签: vagrant ansible ansible-playbook


    【解决方案1】:

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

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

    让我们了解 Ansible 做了什么:

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

    【讨论】:

    • 为什么你会认为变量名可以包含空格?
    • 几天前问自己这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2021-11-01
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多