SaltStack:是否可以在 master 上应用状态,如果可以,如何实现?

问题描述 投票:0回答:4

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

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

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

我可以运行一个命令来在主机上应用状态吗? (目前还没找到)

我是否应该在同一台机器上安装 salt-minion 才能执行此操作,并简单地将同一台机器注册为本身的 minion?

谢谢!

salt-stack
4个回答
22
投票

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

您可以按照以下步骤操作:

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

我可以运行一个命令来在主机上应用状态吗?

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

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

我是否应该在同一台机器上安装 salt-minion 才能执行此操作,并简单地将同一台机器注册为本身的 minion?

是的。我认为你知道自己需要做什么,只需要朝着正确的方向推动即可。


8
投票

在单个节点上安装 Minion 和 Master

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

一些概念性信息:

  • 简而言之,Master从不应用状态。相反,它会触发 Minions(在本例中为本地 Master Minion)。
  • Salt Minion 和 Master 是两个独立的服务,具有独立的运行时和配置
  • 虽然实例使用通用软件,但运行时通过网络通话(与位置无关)。
  • 如果您可以在远程 Minion 上应用状态,相同的机制也将用于本地 Minion。

附加信息

有两种应用状态的方法:

  • 主端

    salt
    命令将“推送”状态发送到多个远程minion。

    rpm -qf $(which salt)
    salt-master-2015.5.3-4.fc22.noarch
    
  • Minion 端

    salt-call
    命令可在单个本地 Minion 上进行 “拉” 状态。

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

在涉及多个小兵之前,最好使用

salt-call
达到相同的效果:

salt-call state.highstate

Minion 端

salt-call
特别为测试、隔离、故障排除提供优势:

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

    salt-call -l debug test.ping
    

最后一点,

salt-call
--local
也可以在无主设置中使用无网络


3
投票

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

  1. 在同一个盒子上安装一个 minion 和 salt master

这个问题已经和上面两个答案一样被广泛讨论了。

  1. 使用 salt-ssh + salt-run state.orchestrate

设置步骤:

第1步:安装salt-ssh

第2步:修改名册文件(例如CentOS 6中的/etc/salt/roster)。默认安装已经为您提供了一些示例。由于您可能通过 ssh 进入 salt master,因此用户名/密码/私钥设置对您来说当然不成问题。例如要控制 salt master vagrant box,这个示例应该这样做:

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

现在,从官方教程中窃取一点点:

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

并运行它:

salt-run state.orchestrate orch.cleanfoo

检查您的 salt master vagrant box /tmp 目录是否存在 test.txt 文件。

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


0
投票

可以在没有本地minion的情况下在master上运行状态文件:

foo.sls:

/etc/foo.conf:
  file.managed:
    - source: salt://files/foo.conf
    - mode: 0600

要应用它,请运行

salt-run state.orchestrate foo

参见 https://docs.saltproject.io/en/latest/topics/orchestrate/orchestrate_runner.html#running-states-on-the-master-without-a-minion

© www.soinside.com 2019 - 2024. All rights reserved.