限制 salt-minion 能够发布的命令
restrict commands that salt-minion is able to publish
配置盐栈环境如下:
machine1 -> salt-master
machine2 -> salt-minion
machine3 -> salt-minion
这个设置对我有用,我可以发布命令“ls -l /tmp/”从 machine2 到 machine3和
salt-call publish.publish 'machine3' cmd.run 'ls - /tmp/'
如何限制可以发布的命令?
在当前设置中,可以在 machine3 上执行每条命令,而且我们会非常冒险。我正在查看 salt-stack 文档,但不幸的是,我没有找到任何如何相应配置它的示例。
解决方案:
- 在 machine1 上创建文件 /srv/salt/_modules/testModule.py
- 插入一些代码,例如:
#!/usr/bin/python
import subprocess
def test():
return __salt__['cmd.run']('ls -l /tmp/')
if __name__ == "__main__":
test()
将新模块分发给小兵运行:
盐 '*' saltutil.sync_modules
在 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
命令通常不是一个好主意,只是把它放在这里作为例子。
配置盐栈环境如下:
machine1 -> salt-master
machine2 -> salt-minion
machine3 -> salt-minion
这个设置对我有用,我可以发布命令“ls -l /tmp/”从 machine2 到 machine3和
salt-call publish.publish 'machine3' cmd.run 'ls - /tmp/'
如何限制可以发布的命令?
在当前设置中,可以在 machine3 上执行每条命令,而且我们会非常冒险。我正在查看 salt-stack 文档,但不幸的是,我没有找到任何如何相应配置它的示例。
解决方案:
- 在 machine1 上创建文件 /srv/salt/_modules/testModule.py
- 插入一些代码,例如:
#!/usr/bin/python
import subprocess
def test():
return __salt__['cmd.run']('ls -l /tmp/')
if __name__ == "__main__":
test()
将新模块分发给小兵运行:
盐 '*' saltutil.sync_modules
在 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
命令通常不是一个好主意,只是把它放在这里作为例子。