我将Ansible 2.3.2.0用于我的项目。在这个项目中,我有一个使用is_file
测试的任务:
- name: Create repository.ini file
template: src="{{ playbook_dir }}/../../../repository.ini" dest="/{{ repository_dir }}/repository.ini"
when: "{{ playbook_dir }}/../../..//repository.ini"|is_file
此任务会产生以下错误:
The offending line appears to be:
template: src="{{ playbook_dir }}/../../../repository.ini" dest="/{{ jse_repository_dir }}/repository.ini"
when: "{{ playbook_dir }}/../../../repository.ini"|is_file
^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:
. . . .
我尽力而为但无所作为。
答案 0 :(得分:4)
当您使用引号启动YAML键值时,必须引用整个值,因此如果内部有任何其他字符串,则应使用不同的引号(例如,单引号+双引号)。
Ansible期望when
的值为Jinja2语句,因此无需在内部使用{{
。
因为2.您需要使用Jinja2语法进行字符串连接variable + 'string'
。
合并后,您的条件应为:
when: "(playbook_dir+'/../../../repository.ini')|is_file"