2016-03-07 33 views
7

我们如何构建盐状态树,以便能够在主机上运行的大量代码中运行一个virtualenv的highstate盐:在一台主机上管理100多个virtualenvs

我们运行virtualenvs进行开发和生产,使用结构。我们想从布料切换到盐。一切都很好,除了highstate需要很长的时间。我们在一台主机上有100多个virtualenvs,并且正在调试highstate会更新100多个virtualenvs。

+0

你能告诉它需要多长时间吗? – dahrens

+0

@dahrens抱歉,我目前没有号码。但速度只是一个问题。另一个是:可寻址性。我希望能够更新一个特定的virtualenv而不触及其他的virtualenvs。 – guettli

回答

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

+0

我猜'salt'*'state.sls venv1'而不是高级应该可以工作。如果venv1和venv2共享一组共同的要求,如何写这个(没有代码重复)? – guettli

+0

你可以创建另一个具有需求的状态,并在每个venv中包含该状态,如[salt docs]中所述(https://docs.saltstack.com/en/latest/ref/states/requisites.html#require-an- whole-sls-file) – dahrens

+0

请记住,你希望能够适当地提高你的奴才。实际需要多长时间才能达到高标准? – dahrens

相关问题