在条件时逃脱前进斜线

时间:2016-05-19 03:43:02

标签: ansible jinja2

我试图做一个Ansible"当比较字符串不等于"

像这样:

when: "{{ result.stdout }} != '/var'"

如何逃避/ in' / var'因为它扔了一个:

The error was: template error while templating string: unexpected '/'.

我尝试使用\来转义/但是它会抛出错误:

ERROR! Syntax Error while loading YAML.
The offending line appears to be:

shell: rsync -a /var/ "{{ result.stdout }}"
when: "{{ result.stdout }} != '\/var'"
                               ^ here

我尝试在默认值中创建变量:

默认值 - > main.yml

var_partition: /var

任务 - > main.yml

when: "{{ result.stdout }} != {{ var_partition }}"

但它会引发错误:

"The conditional check '{{ result.stdout }} != {{ var_partition }}' failed. 
The error was: template error while templating string: unexpected '/'. 
String: {% if /disk1 != /var %}

3 个答案:

答案 0 :(得分:2)

这有效:

when: "{{ result.stdout != '/var' }}"

答案 1 :(得分:0)

我用破折号替换了斜线并摆脱了这个错误:

vars:
    - local_var_name: "{{ var_name | regex_replace('/', '-') }}"
tasks:
  some_task:
    ...
    when: local_var_name

答案 2 :(得分:0)

您不应在when statement中使用大括号:

  

... when子句,其中包含原始Jinja2表达式没有双花括号 ...

在您的示例中,只需使用:

when: result.stdout != '/var'