我写了一个简单的模块,把文件放在<salt_file_roots>/_modules
下,内容大致如下:
# foomod.py
def foo(*args):
return {'name': 'foo', 'result': True}
我已经运行了salt minion saltutil.sync_all
,看到了我添加的模块的输出。我可以看到它在仆从日志中也是同步的。
minion:
- modules.foomod
1。我可以从仆从中使用它:
$ salt-call foomod.foo
local:
----------
name:
foo
result:
True
2。我可以使用module.run
将其包含在状态中并运行该状态,并且它也可以工作。
3。但是当我从master调用它时,会发生这样的情况:
$ salt minion foomod.foo
minion:
- 'foomod.foo' is not available.
当我从master
调用时,我也会在从属日志中看到调用2014-07-29 15:30:44,290 [salt.minion ][INFO ] User root Executing command foomod.foo with jid 20140729153044256654
2014-07-29 15:30:44,291 [salt.minion ][DEBUG ] Command details {'tgt_type': 'glob', 'jid': '20140729153044256654', 'tgt': 'minion', 'ret': '', 'user': 'root', 'arg': [], 'fun': 'foomod.foo'}
2014-07-29 15:30:44,308 [salt.minion ][INFO ] Returning information for job: 20140729153044256654
所以要么我跳过了让master直接运行的部分,要么我想象了一个不存在的特性。
回答自己的问题。盐主含pycrypto==2.6.1
,仆从含pycrypto==2.4.1
。在minion上更新解决了这个问题