将salt模块转换为jinja

时间:2018-02-22 18:21:24

标签: jinja2 salt-stack

我在使用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很新,所以我的想法用完了,在文档中我无法找到适合这种情况的例子。

1 个答案:

答案 0 :(得分:2)

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

- items = ['archive', 'foo', 'home']
nav
  for i in items 
    a.link(href='/' + i, class="" + path.includes(i) ? 'active' : '')

这将返回一个字典:

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

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

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

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

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