saltstack 和从 pillar 引用的奇怪的 unicode

saltstack and strange unicode quoting from pillar

我有一些简单的 (ascii) 支柱数据,看起来像这样(有点简化):

host:
  name:
    user: 'jeff'
    pass: 'sekret'

在 salt (sls) 文件中,我像这样调用一个 jinja 模板:

{% set the_name = pillar.get('host')['name'] %}

/dev/null/myfile:
  file.managed:
    source: myfile_template
    ...
    -defaults:
       stuff: {{ the_name }

而在myfile_template中,我指的是{{ stuff.user }}。我被告知 stuff 没有属性 'user'。如果我尝试 {{ stuff["user"] }}{{ stuff['user'] }}.

也一样

在 salt 2018.3.2 中,此代码有效。 在 salt 2019.2.0 中,此代码不起作用,我收到上述错误。

简单地将{{ stuff }}插入文件(使用salt 2019.2.0)表示值为

{u"u'user'": u"u'jeff'", u"u'pass'": u"u'sekret'" }

我很确定双 unicode 指示符是我的问题的标志,但我有点不知所措。 对我可能做错了什么或发生了什么变化有什么建议吗?

正如您所说,它在 2018.3 中有效,但在 2019.2 中无效,您应该查看那里提供的 2019.2 发行说明 https://docs.saltstack.com/en/latest/topics/releases/2019.2.0.html

这里明确提到 "Non-Backward-Compatible Change to YAML Renderer" https://docs.saltstack.com/en/latest/topics/releases/2019.2.0.html#non-backward-compatible-change-to-yaml-renderer

如果您打算仅使用 salt 2019.2,则应将 stuff: {{ the_name}} 更改为 stuff: {{ the_name|tojson }},或者如果您还计划与旧版本兼容,则应将 stuff: {{ the_name|json }} 更改为 stuff: {{ the_name|tojson }}