将盐模块转换为Jinja



我遇到了一些麻烦,可以在Jinja模板中运行一个简单的Saltstack模块。

# salt-ssh -i 'myhost' lowpkg.info postfix attr=version->工作正常

我认为它可以这样工作:

{%- set postfixversion = salt['lowpkg.info']('postfix,attr=version') %}
path to version = /folder/{{ postfixversion }}/subfolder`

经过一些变化('postfix),(attr=version')之后 或('postfix)(attr=version')...我总是会出现错误:

Comment: Traceback (most recent call last):
    File "/var/tmp/.root_98377f_salt/py2/salt/utils/templates.py", line 167, in render_tmpl
    File "/var/tmp/.root_98377f_salt/py2/salt/utils/templates.py", line 445, in render_jinja_tmpl
    File "/var/tmp/.root_98377f_salt/py2/salt/utils/templates.py", line 244, in _get_jinja_error
    File "/var/tmp/.root_98377f_salt/py2/salt/utils/templates.py", line 227, in _get_jinja_error_line
TypeError: 'NoneType' object has no attribute '__getitem__'

我是Saltstack,Jinja和Python的新手,所以我用完了想法,在文档中,我无法设法找到适合这种情况的示例。

您只需将其作为两个参数传递:

{%- set postfixversion = salt['lowpkg.info']('postfix',attr='version') %}

这将返回词典:

{'postfix': {'version': '3.0.5'}}

为了直接获取版本,您需要过滤输出

{%- set postfixversion = salt['lowpkg.info']('postfix',attr='version')['postfix']['version'] %}

然后创建一个将包含路径作为值的新变量:

{% set path_to_version = '/folder/' + postfixversion + '/subfolder' %}

最新更新