限制 salt-minion 能够发布的命令

restrict commands that salt-minion is able to publish

配置盐栈环境如下:

machine1 -> salt-master

machine2 -> salt-minion

machine3 -> salt-minion

这个设置对我有用,我可以发布命令“ls -l /tmp/”从 machine2machine3salt-call publish.publish 'machine3' cmd.run 'ls - /tmp/'

如何限制可以发布的命令?

在当前设置中,可以在 machine3 上执行每条命令,而且我们会非常冒险。我正在查看 salt-stack 文档,但不幸的是,我没有找到任何如何相应配置它的示例。

解决方案:

  1. machine1 上创建文件 /srv/salt/_modules/testModule.py
  2. 插入一些代码,例如:

#!/usr/bin/python

import subprocess

def test():
     return __salt__['cmd.run']('ls -l /tmp/')

if __name__ == "__main__":
     test()
  1. 将新模块分发给小兵运行:

    盐 '*' saltutil.sync_modules

  2. machine2 运行:

    盐调用 publish.publish 'machine3' testModule.test

salt master 配置中的 peer configuration 可以限制某些 minion 可以发布的命令,例如

peer:
  machine2:
    machine1:      
      - test.*
      - cmd.run
    machine3:      
      - test.*
      - disk.usage
      - network.interfaces

这将允许 minion machine2 发布 test.*cmd.run 命令。

P.S。允许 minions 发布 cmd.run 命令通常不是一个好主意,只是把它放在这里作为例子。