如何使用Salt测试Jinja功能?

时间:2019-05-23 21:21:40

标签: command-line salt-stack

我正在寻找一种方法来测试盐是否可以按照我期望的方式呈现出一个Jinja模板。

如果我的文件template.sls包含:

{% for usr in ['moe','larry','curly'] %}
{{ usr }}:
  user.present
{% endfor %}

我可以运行一个salt命令来显示渲染的模板吗?

NB:我知道发生的事情是Jinja在进行渲染,我可以在python中对其进行模板化。但是我想确保我使用的是salt使用的Jinja版本。 AFAIK盐嵌入了Jinja引擎。

我正在寻找的示例是盐命令,其功能类似于以下ansible命令:

以下内容摘自接受的答案: How can I test jinja2 templates in ansible?

3_Ansible (使用--check)
创建测试剧本jinja2test.yml:

---
- hosts: 127.0.0.1
  tasks:
  - name: Test jinja2template
    template: src=test.j2 dest=test.conf

并运行它:

ansible-playbook jinja2test.yml --check --diff --connection=local

示例输出:

PLAY [127.0.0.1] **************************************************************

GATHERING FACTS ***************************************************************

ok: [127.0.0.1]

TASK: [Test jinja2template] ***************************************************
--- before: test.conf
+++ after: /Users/user/ansible/test.j2
@@ -0,0 +1,4 @@
+Mike
+Smith
+Klara
+Alex

changed: [127.0.0.1]

PLAY RECAP ********************************************************************
127.0.0.1                  : ok=2    changed=1    unreachable=0    failed=0

2 个答案:

答案 0 :(得分:0)

要显示生成的SLS,您可以使用slsutil.renderer

这很容易,应该做到这一点。 就我而言,我是这样使用它的:

salt 'test01' slsutil.renderer salt://blabla/test.sls 'jinja|yaml'

答案 1 :(得分:0)

最好,最简单的方法是使用state.show_sls,如here

请检查官方文档here

对于您的具体情况,可能是这样的:

salt "your_minion" state.show_sls template.sls