盐态渲染:我能看到 Jinja 阶段的输出吗?
Salt State Rendering: Can I See the Output of the Jinja Phase?
问题:
在尝试解析为 YAML 之前,有没有办法查看 Jinja 阶段的输出?
背景:
我正在尝试调试出现此错误的 Salt 问题:
local:
Data failed to compile:
----------
Rendering SLS ':test.sls' failed: mapping values are not allowed in this context
帮助不大:没有行号?什么是 'mapping value'?等等
问题归结为如下:
{%- for x in [1, 2] -%}
Test {{ x }}:
cmd.run:
- name: echo Test {{ x }}
{%- endfor -%}
经验丰富的 Salt 人员会认识到我弄乱了空格,因此 Jinja 产生了以下输出:
Test 1:
cmd.run:
- name: echo Test 1 Test 2:
cmd.run:
- name: echo Test 2
但是,在一组复杂的状态中发现没有关于问题发生位置的信息,甚至没有清楚地描述问题是什么,这令人沮丧。
在调试的过程中,我了解到可以使用 slsutil.renderer
获取 YAML 树,如下所示:
% salt-call --local slsutil.renderer `pwd`/test.sls 'jinja'
local:
----------
Test 1:
----------
cmd.run:
|_
----------
name:
echo Test 1
Test 2:
----------
cmd.run:
|_
----------
name:
echo Test 2
但这当然需要 YAML 有效。那么,在评估 Jinja 之后但在 Salt 尝试将其解析为 YAML 之前,如何让 Salt 输出模板,如我上面的第三个片段?
哇哦,当我重温这篇文章时,我学到了一些新东西。我相信答案是 cp.get_template
.
测试文件:
% cat test.sls
{%- for x in [1, 2] -%}
Test {{ x }}:
cmd.run:
- name: echo Test {{ x }}
{%- endfor -%}
现在 cp.get_template
呈现 Jinja 并显示原始输出:
% salt-call --local cp.get_template `pwd`/test.sls /dev/stdout
Test 1:
cmd.run:
- name: echo Test 1Test 2:
cmd.run:
- name: echo Test 2
local:
/dev/stdout
问题:
在尝试解析为 YAML 之前,有没有办法查看 Jinja 阶段的输出?
背景:
我正在尝试调试出现此错误的 Salt 问题:
local:
Data failed to compile:
----------
Rendering SLS ':test.sls' failed: mapping values are not allowed in this context
帮助不大:没有行号?什么是 'mapping value'?等等
问题归结为如下:
{%- for x in [1, 2] -%}
Test {{ x }}:
cmd.run:
- name: echo Test {{ x }}
{%- endfor -%}
经验丰富的 Salt 人员会认识到我弄乱了空格,因此 Jinja 产生了以下输出:
Test 1:
cmd.run:
- name: echo Test 1 Test 2:
cmd.run:
- name: echo Test 2
但是,在一组复杂的状态中发现没有关于问题发生位置的信息,甚至没有清楚地描述问题是什么,这令人沮丧。
在调试的过程中,我了解到可以使用 slsutil.renderer
获取 YAML 树,如下所示:
% salt-call --local slsutil.renderer `pwd`/test.sls 'jinja'
local:
----------
Test 1:
----------
cmd.run:
|_
----------
name:
echo Test 1
Test 2:
----------
cmd.run:
|_
----------
name:
echo Test 2
但这当然需要 YAML 有效。那么,在评估 Jinja 之后但在 Salt 尝试将其解析为 YAML 之前,如何让 Salt 输出模板,如我上面的第三个片段?
哇哦,当我重温这篇文章时,我学到了一些新东西。我相信答案是 cp.get_template
.
测试文件:
% cat test.sls
{%- for x in [1, 2] -%}
Test {{ x }}:
cmd.run:
- name: echo Test {{ x }}
{%- endfor -%}
现在 cp.get_template
呈现 Jinja 并显示原始输出:
% salt-call --local cp.get_template `pwd`/test.sls /dev/stdout
Test 1:
cmd.run:
- name: echo Test 1Test 2:
cmd.run:
- name: echo Test 2
local:
/dev/stdout