Работа с jinja и pillars.get () в salttack // Фильтр работает не так, как ожидалось - PullRequest
0 голосов
/ 16 января 2020

У меня разные результаты в командной строке bash и в файле SLS для pillar.get ().

В командной строке я получаю ожидаемые результаты.

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 l oop

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

, l oop работает как положено.

Когда я пробую его с дополнительным фильтром

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

, l oop никогда не запускается. Похоже, в этом случае я получаю пустой набор.

Что я не так делаю? Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 16 января 2020

Я только что нашел ответ в документации.

Функция pillar.get

Есть примечание, которое сравнивает pillar.get () vs salt'pillar.get '.

Хорошо, когда я использую что-то вроде

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

, я получаю ожидаемые результаты.

Тем не менее, мне не нравится идея, что одна и та же функция имеет разное поведение.

...