【问题标题】:Convert a salt module into jinja将 salt 模块转换为 jinja
【发布时间】:2018-02-24 01:16:49
【问题描述】:

在 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 还很陌生,所以我没有想法,在文档中我无法找到适合这种情况的示例。

【问题讨论】:

    标签: jinja2 salt-stack


    【解决方案1】:

    您只需像这样将它作为两个参数传递:

    {%- 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' %}
    

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 2020-06-14
      • 2021-10-14
      • 1970-01-01
      • 2022-11-28
      • 2019-05-23
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      相关资源
      最近更新 更多