Salt:在一台主机上管理 100 多个 virtualenvs

Salt: manage 100+ virtualenvs on one host

我们如何构造 salt state 树才能 运行 highstate 一个主机上的大量虚拟环境 运行ning?

我们 运行 virtualenvs 用于开发和生产,使用 fabric。我们想从织物切换到盐。一切正常,除了 highstate 花费的时间太长。我们在一台主机上有 100 多个 virtualenvs,调用 highstate 会更新 100 多个 virtualenvs。

salt '*' state.highstate

总是对你的随从应用所有状态。这取决于您的状态,为什么要花很长时间才能达到高状态 returns.

可以通过为每个 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