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 }}
。
我有一些简单的 (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 }}
。