我是 SaltStack 的初学者,但我已经设法在机器上设置一些状态并在 Minion 上运行它们。
我现在拥有的是一台带有 salt-master 的 Debian 机器设置以及另一个 Debian 设置为 salt-minion。
由于我也使用 salt-master 作为开发机器,所以我想知道是否可以以某种方式将这些状态应用到 master 本身上。如果是这样,怎么办?
我可以运行一个命令来在主机上应用状态吗? (目前还没找到)
我是否应该在同一台机器上安装 salt-minion 才能执行此操作,并简单地将同一台机器注册为本身的 minion?
谢谢!
由于我也使用 salt-master 作为开发机器,所以我想知道是否可以以某种方式将这些状态应用到 master 本身上。如果是这样,怎么办?
您可以按照以下步骤操作:
我可以运行一个命令来在主机上应用状态吗?
salt-master 并不真正运行状态文件,salt-minions 才运行。如果您按照上述步骤操作,那么您可以使用以下命令将 salt-master 定位为运行 highstate:
salt 'the_value_of_/etc/salt/minion_id' state.highstate
我是否应该在同一台机器上安装 salt-minion 才能执行此操作,并简单地将同一台机器注册为本身的 minion?
是的。我认为你知道自己需要做什么,只需要朝着正确的方向推动即可。
我称这样的节点为Master Minion。没有提供任何步骤 - 您已经根据问题知道了。
一些概念性信息:
有两种应用状态的方法:
salt
命令将“推送”状态发送到多个远程minion。
rpm -qf $(which salt)
salt-master-2015.5.3-4.fc22.noarch
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
特别为测试、隔离、故障排除提供优势:
它直接在本地终端中显示调试输出:
salt-call -l debug test.ping
最后一点,
salt-call
--local
也可以在无主设置中使用无网络。
现在已接近2015年年底了。让我们回顾一下盐大师自我控制的更多可能性:
这个问题已经和上面两个答案一样被广泛讨论了。
设置步骤:
第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 处理其他状态之前的一个步骤。
可以在没有本地minion的情况下在master上运行状态文件:
foo.sls:
/etc/foo.conf:
file.managed:
- source: salt://files/foo.conf
- mode: 0600
要应用它,请运行
salt-run state.orchestrate foo
。