在 saltstack 中使用 jinja 和 pillars.get() // 过滤器工作不如预期

Working with jinja and pillars.get() in saltstack // Filter works not as expected

我在 bash 命令行和 pillar.get() 的 SLS 文件中有不同的结果。

在命令行中我收到了预期的结果。

salt-master:/srv/pillar # salt salt-minion2 pillar.get mqobjdetails
salt-minion2:
    ----------
    QM200@QLOCAL@LQ2:
        ----------
        DEFPSIST:
            NO
        GET:
            ENABLED
        MAXDEPTH:
            5000
        MAXMSGL:
            4194304
        MONQ:
            QMGR
    QM200@QMGR@QM200:
        ----------
        DEADQ:
        MAXMSGL:
            4194304
        MONCHL:
            OFF
        MONQ:
            OFF

并带有过滤器

salt-master:/srv/pillar # salt salt-minion2 pillar.get mqobjdetails:QM200@QLOCAL@LQ2
salt-minion2:
    ----------
    DEFPSIST:
        NO
    GET:
        ENABLED
    MAXDEPTH:
        5000
    MAXMSGL:
        4194304
    MONQ:
        QMGR

当我使用以下 jinja 循环语句在状态文件中尝试同样的事情时

{% for objkey, parameters in pillar.get('mqobjdetails', { } ).items() %}

循环按预期工作。

当我尝试使用附加过滤器时

{% for name, value in pillar.get("mqobjdetails:QM200@QMGR@LQ2", { } ).items() %}

循环永远不会 运行 通过。所以在这种情况下我似乎得到了一个空集。

我做错了什么?有人可以帮帮我吗?

我刚刚在文档中找到了答案。

The pillar.get Function

有一个注释,比较了 pillar.get() 和 salt'pillar.get'.

好吧,当我使用类似

的东西时

{% for name, value in salt['pillar.get']('mqobjdetails:' ~ foo, { } ).items() %}

我得到了预期的结果。

我仍然不喜欢这个想法,即相同的函数具有不同的行为。