SaltStack:是否可以在主服务器上应用状态,如果可以,如何应用?

时间:2014-05-21 19:18:39

标签: salt-stack

我是SaltStack的初学者,但我已经设法在一台机器上设置一些状态并在一个小兵上运行它们。

我现在拥有的是使用salt-master的Debian机器设置以及另一个作为salt-minion的Debian设置。

由于我也使用salt-master作为开发机器,我想知道我是否可以某种方式在master本身上应用状态。如果是这样,怎么样?

我是否可以运行命令来应用主服务器上的状态? (到目前为止我无法找到它)

我是否应该在同一台机器上安装salt-minion以便能够做到这一点,并且只需将同一台机器注册为minion本身?

谢谢!

3 个答案:

答案 0 :(得分:21)

  

由于我也使用salt-master作为开发机器,我想知道我是否可以某种方式在master本身上应用状态。如果是这样,怎么样?

您可以按照以下步骤执行此操作:

  1. 在开发机器上安装salt-minion
  2. 编辑/ etc / salt / minion指向你的主人(vi / etc / salt / minion并更改以下内容:master:salt - > master:127.0.0.1)
    • (可选)将/ etc / salt / minion_id编辑为对您有意义的内容
  3. 启动你的盐奴隶
  4. 使用salt-key接受你的小兵的钥匙
  5. 使用你的盐主人来控制你的仆从,好像它是任何其他的盐奴才
  6.   

    我是否可以运行命令在主设备上应用状态?

    salt-master并没有真正运行状态文件,salt-minions就是这样。如果您按照上述步骤操作,那么您可以使用以下命令将salt-master定位为运行highstate:

    salt 'the_value_of_/etc/salt/minion_id' state.highstate
    
      

    我是否应该在同一台机器上安装salt-minion以便能够做到这一点,并且只需将同一台机器注册为minion本身?

    烨。我想你已经知道你需要做什么,只需要朝着正确的方向努力。

答案 1 :(得分:5)

在单个节点上安装Minion和Master

我称这样的节点 Master Minion 。没有提供任何步骤 - 您已根据问题了解它。

一些概念信息:

  • 简而言之,师父从不适用国家。相反,它会触发Minions(在这种情况下是本地Master Minion)。
  • Salt Minion和Master是两个独立的服务,独立运行时&构造即可。
  • 虽然实例使用通用软件,但运行时通过网络进行通话(与位置无关)。
  • 如果您可以在远程Minion上应用状态,同样的机制也将用于本地Minion。

其他信息

有两种方法可以应用状态:

  • “推送”状态的主方salt命令指向多个远程小兵。

    rpm -qf $(which salt)
    salt-master-2015.5.3-4.fc22.noarch
    
  • 对单个当地小兵的“拉”状态的小兵方salt-call命令。

    rpm -qf $(which salt-call)
    salt-minion-2015.5.3-4.fc22.noarch
    

直到涉及多个小兵,最好使用salt-call来达到同样的效果:

salt-call state.highstate

Minion-side salt-call为测试,隔离和故障排除提供了优势:

  • 它使网络问题(如果有的话)更加明显。
  • 它仅在单个本地小兵上安全地应用状态(无法指定多个)。
  • 它直接在本地终端显示调试输出:

    salt-call -l debug test.ping
    

最后一点,salt-call --local也可以使用无网络masterless setup中使用。

答案 2 :(得分:3)

现在已接近2015年。让我们回顾一下盐主控自我控制的更多可能性:

  1. 在同一个盒子上安装一个带有盐主人的小兵
  2. 这个问题已被广泛讨论为以上两个答案。

    1. 使用salt-ssh + salt-run state.orchestrate
    2. 设置步骤:

      第1步:安装salt-ssh

      步骤2:修改名册文件(例如CentOS 6中的/ etc / salt / roster)。默认安装已经为您提供了一些示例。既然你可能ssh into salt master,当然用户名/密码/私钥设置对你来说应该不是问题。例如,为了控制盐主流氓箱,这个样本应该做:

      localhost:
        host: 127.0.0.1
        user: vagrant
        passwd: vagrant
        sudo: True
      

      现在,从official tutorial偷走一点点:

      # /srv/salt/orch/cleanfoo.sls
      cmd.run:
        salt.function:
          - tgt: 'localhost'
          - ssh: 'true'
          - arg:
            - touch /tmp/test.txt
      

      运行它:

      salt-run state.orchestrate orch.cleanfoo
      

      如果有test.txt文件,请检查salt master vagrant box / tmp目录。

      这种方法也适用于国家。无论哪种方式,你需要安装一些东西。我更喜欢第二种方式,因为一般来说,调用salt master自我控制(提供一些工作)只是我实际上调用minion处理其他状态之前的一步。