【问题标题】:Salt: manage 100+ virtualenvs on one hostSalt:在一台主机上管理 100 多个虚拟环境
【发布时间】:2016-03-11 01:58:32
【问题描述】:

我们如何构建盐状态树,以便能够为主机上运行的大量虚拟环境中的一个虚拟环境运行highstate

我们使用结构运行 virtualenvs 进行开发和生产。我们想从织物切换到盐。一切都很好,除了highstate 需要太长时间。我们在一台主机上有 100 多个 virtualenvs,调用 highstate 将更新 100+ 个 virtualenvs。

【问题讨论】:

  • 你能说出需要多长时间吗?
  • @dahrens 抱歉,我目前没有号码。但速度只是一个问题。另一个是:可寻址性。我希望能够在不触及其他虚拟环境的情况下更新一个特定的虚拟环境。

标签: python virtualenv salt-stack


【解决方案1】:

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

【讨论】:

  • 我猜 salt '*' state.sls venv1 而不是 highstate 应该可以工作。如果 venv1 和 venv2 有一套共同的需求,这个怎么写(不重复代码)?
  • 您可以根据要求创建另一个状态并将该状态包含在每个 venv 中,例如 explained in salt docs
  • 请记住,您希望能够正确地提高您的奴才。实际上需要多长时间才能使它们高亮?
猜你喜欢
  • 2018-05-26
  • 2015-08-31
  • 2011-09-22
  • 2017-08-15
  • 2011-03-22
  • 2018-04-05
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多