Saltstack主节点找不到执行模块,提示不可用
我写了一个简单的模块,并把文件放在 <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. 但是当我从主控机调用它时,就出现了以下情况:
$ salt minion foomod.foo
minion:
- 'foomod.foo' is not available.
我在从属机的日志中也看到了从主控机发出的调用记录。
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
所以要么是我漏掉了某个步骤,没有让它可以直接从主控机运行,要么就是我想象了一个并不存在的功能。
任何帮助都非常感谢。
1 个回答
2
自己回答自己的问题。盐大师(Salt master)上安装的是 pycrypto==2.6.1
,而小兵(minion)上安装的是 pycrypto==2.4.1
。把小兵上的版本更新到最新解决了这个问题。