如何在ansible变量中转义字符“{%”

时间:2018-03-14 08:44:39

标签: ansible jinja2

我有一个包含用户名和密码哈希的yml文件,如下所示:

  users:
  - name: eucariot
    pwd_hash: $1c$FCM#Y+8Z:T$/l>IX1tZG%Fh~u&q\Xq6fd7dT|>*,8>G8y:f38{-$
  - name: test
    pwd_hash: $1a$eWcH'5dD~1$l<vvDig#@.)I|;ZASgH'%Kv~N)&DA=[i<R@.'{%>$

然后我从Jinja模板中引用它。它适用于用户“eucariot”,而“test”则失败,因为它的哈希包含“{%”。

运行playbook会返回错误:

template error while templating string: tag name expected. String: $1a$eWcH'5dD~1$l<vvDig#@.)I|;ZASgH'%Kv~N)&DA=[i<R@.'{%>$"}

我找到了如何通过在字符串之前使用!unsafe来逃避这种字符的方法,但问题是这样的文件是由脚本自动创建的,我不知道如何把“!unsafe”放在那里。

1 个答案:

答案 0 :(得分:-1)

看起来以下内容对我有用:

---
- hosts: localhost
  gather_facts: no
  tasks:
    - debug:
        msg: "{{ \"$1a$eWcH'5dD~1$l<vvDig#@.)I|;ZASgH'%Kv~N)&DA=[i<R@.'{%>$\"}}"

请注意"{{ \"\" }}"