总结
我已开始使用 Saltstack 控制所有虚拟机。我已设置两个独立的环境init
和base
,分别用于在新部署的 VM 上安装 minion 和进行持续配置管理。成功部署 minion 后,它会遵循两个环境的状态!我不想这样。它应该只根据环境进行管理base
。
init
为什么它会使用这两种环境,以及在初始部署之后,如何强制它不再关心环境?
部署新虚拟机后,我使用它salt-ssh
来设置存储库、安装 salt minion 并启动它。之后,我用它salt
来管理我的虚拟机。因此,对于每个新虚拟机,我都会执行(一次)
salt-ssh -i 'anewhost' state.apply
然后我做/cron做
salt '*' state.apply
我的文件根目录的配置是我主配置文件的唯一内容:
file_roots:
base:
- /srv/salt/base
init:
- /srv/salt/init
为了使 VM 成为 minion,我使用了一个名册文件。/etc/salt/roster
其中每个块如下所示:
anewhost:
host: anewhost.mydomain.tld
user: root
passwd: rootpw
minion_opts:
environment: init
这个想法是
- 当我
state.apply
使用时salt-ssh
,状态是从开始构建的/srv/salt/init/top.sls
- 当我
state.apply
使用时salt
,状态是从开始构建的/srv/salt/base/top.sls
所发生的情况是,其salt-ssh
行为与预期完全一致,但salt
创建了一些实际上包含两种状态的统一的憎恶,由init
和描述base
。
显然,无论我做什么,它salt
都会记住init
环境并将其引入。我该如何让它忘记环境init
?
编辑:快速修复
我通过增加我的init
状态来environment: base
解决这个问题/etc/salt/minion
。这实际上使 minion 忽略了init
环境。但它为什么一开始就尊重它呢?环境背后的想法不是让 salt 做不同的事情吗?
答案1
这可能并没有真正回答你的问题,无论如何,在我的设置中,我只使用基础环境,并使用 salt bootstrap盐化init
. 这样你就根本不需要环境了