__pillar___ пусто в пользовательском модуле - PullRequest
2 голосов
/ 11 апреля 2019

Я пишу простой пользовательский модуль и хотел бы получить доступ к данным опоры.

Я проверяю это так (файл salt/_modules/foo.py):

def bar():
    assert 0, __pillar__

файл sls salt/tmp/test_pillar_in_custom_module.sls:

{{ salt['foo.bar']() }}

И я выполняю это так:

salt-ssh --log-leve=all foohost state.sls tmp.test_pillar_in_custom_module pillar='{systems: [foosys]}' 2> tmp/o

Соответствующая часть tmp/o:

Traceback (most recent call last):
  File "/var/tmp/.root_dcdf8c_salt/salt-call", line 27, in <module>
    salt_call()
  File "/var/tmp/.root_dcdf8c_salt/pyall/salt/scripts.py", line 431, in salt_call
    client.run()
  File "/var/tmp/.root_dcdf8c_salt/pyall/salt/cli/call.py", line 57, in run
    caller.run()
  File "/var/tmp/.root_dcdf8c_salt/pyall/salt/cli/caller.py", line 138, in run
    ret = self.call()
  File "/var/tmp/.root_dcdf8c_salt/pyall/salt/cli/caller.py", line 237, in call
    ret['return'] = self.minion.executors[fname](self.opts, data, func, args, kwargs)
  File "/var/tmp/.root_dcdf8c_salt/pyall/salt/executors/direct_call.py", line 12, in execute
    return func(*args, **kwargs)
  File "/var/tmp/.root_dcdf8c_salt/running_data/var/cache/salt/minion/extmods/modules/foo.py", line 2, in bar
    assert 0, __pillar__
AssertionError: {}

Но диктат __pillar__ пуст.

Я читаю документы: https://docs.saltstack.com/en/latest/topics/development/modules/developing.html#pillar

Словарь __pillar__ содержит столбец для соответствующего миньон.

Хотя __pillar__ определено для каждого модуля, оно заполняется только для некоторые из них.

В моем пользовательском модуле он пуст.

Есть ли способ доступа к стойке в пользовательском модуле?

...