【问题标题】:How to escape character "{%" in ansible variables如何在ansible变量中转义字符“{%”
【发布时间】:2018-03-14 08:44:39
【问题描述】:

我有一个包含用户名和密码哈希的 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”放在那里。

【问题讨论】:

    标签: ansible jinja2


    【解决方案1】:

    看起来以下对我有用:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多