我们如何构建salt状态树,以便能够在主机上运行的大量虚拟机中运行highstate
?
我们使用面料为开发和生产运行virtualenvs。我们想从面料换成盐。一切都很好,除了highstate
花费的时间太长。我们在一台主机上有100多个virtualenvs,并且highstate
将更新100 + virtualenvs。
答案 0 :(得分:6)
salt '*' state.highstate
始终将所有状态应用于您的小兵。这取决于你的状态为什么它需要很长一段时间才能返回高阶段。
可以通过为每个venv使用单独的状态来组织部署。个别州可以这样应用:
salt '*' state.sls venv1
简单的盐树可能看起来像这样。
.
+-- salt
| +-- _prereq.sls
| +-- venv1.sls
| +-- venv2.sls
| +-- top.sls
如果你需要把东西作为每个venv的先决条件,你可以用同样的方式:
<强> _prereq.sls 强>
install_something:
pkg.installed:
pkgs: ['foo', 'bar']
<强> venv1.sls 强>
include:
- _prereq
myvenv_state:
virtualenv.managed:
- system_site_packages: False
- requirements: salt://requirements.txt
- require:
- sls: _prereq
我更愿意在不考虑它的情况下高举我的仆从,所以我尽量避免可寻址的状态。但它可能符合您的需求。
您可能还想查看salt.states.virtualenv