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

gue*_*tli 7 python virtualenv salt-stack

我们如何构建salt状态树,以便能够highstate在主机上运行的大量运行中运行一个virtualenv?

我们使用面料为开发和生产运行virtualenvs.我们想从面料换成盐.一切都很好,除了highstate需要太长时间.我们在一个主机上有100多个virtualenvs,并且caling highstate将更新100+ virtualenvs.

dah*_*ens 6

salt '*' state.highstate

始终将所有状态应用于您的小兵.这取决于你的状态为什么它需要很长一段时间,直到高州回归.

可以通过为每个venv使用单独的状态来组织部署.个别州可以这样应用:

salt '*' state.sls venv1

一棵简单的盐树可能看起来像这样.

    .
    +-- salt
    |   +-- _prereq.sls
    |   +-- venv1.sls
    |   +-- venv2.sls
    |   +-- top.sls
Run Code Online (Sandbox Code Playgroud)

如果您需要以相同的方式完成每个venv的先决条件,您可能会使用类似的东西:

_prereq.sls

install_something:
  pkg.installed:
    pkgs: ['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)

venv1.sls

include:
  - _prereq

myvenv_state:
  virtualenv.managed:
    - system_site_packages: False
    - requirements: salt://requirements.txt
    - require:
      - sls: _prereq
Run Code Online (Sandbox Code Playgroud)

我更愿意能够在不考虑它的情况下高举我的仆从,所以我尽量避免可寻址的状态.但它可能符合您的需求.

您可能还想看看salt.states.virtualenv