【问题标题】:restrict commands that salt-minion is able to publish限制 salt-minion 能够发布的命令
【发布时间】:2015-04-27 12:25:43
【问题描述】:

如下配置盐栈环境:

machine1 -> salt-master

machine2 -> 盐奴

machine3 -> 盐奴

此设置对我有用,我可以将命令“ls -l /tmp/”从 ma​​chine2 发布到 ma​​chine3 salt-call publish.publish 'machine3' cmd.run 'ls - /tmp/'

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

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

解决方案:

  1. ma​​chine1 上创建文件 /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. 将新模块分发给小兵运行:

    salt '*' saltutil.sync_modules

  2. ma​​chine2 上运行:

    salt-call publish.publish 'machine3' testModule.test

【问题讨论】:

    标签: salt-stack


    【解决方案1】:

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

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

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

    附:允许minions发布cmd.run命令一般来说不是一个好主意,这里举个例子吧。

    【讨论】:

    • 感谢您的提示!但是我在要执行的 minion 机器上有一个脚本。我希望它只允许执行这个脚本而不是其他任何东西。有什么想法吗?
    • @CDroescher 将您的脚本包装成一个 salt 自定义模块(实际上只需要一个 python 函数),然后只允许该自定义模块查看 docs.saltstack.com/en/latest/ref/modules/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多