2016-03-07 9 views
7

ホスト上で実行されている多数のうち1つのvirtualenvに対してhighstateを実行できるようにsalt状態のツリーを構成するにはどうすればよいですか?塩類:1つのホストで100+ virtualenvsを管理する

ファブリックを使用して、開発および生産のためにvirtualenvを実行します。我々は、布から塩に切り替えるしたいと思います。 highstateが長すぎることを除いて、すべてがうまくいきます。 1つのホストに100以上のvirtualenvがあり、highstateをカレンダーすると100+ virtualenvsが更新されます。

+0

を見てすることがありますが、あなたはそれにかかる時間わかりますか? – dahrens

+0

@dahrens申し訳ありませんが、現在のところ番号はありません。しかしスピードは一つの懸念だけです。もう1つはアドレス可能性です。私は他のvirtualenvsに触れることなく、特定のvirtualenvを更新できるようにしたい。 – 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 '* high stateの代わりに' state.sls venv1'が動作するはずです。 venv1とvenv2が共通の要件を共有している場合、これをどのように書くか(コードの重複なし) – guettli

+0

あなたは要件を持つ別の状態を作成し、その状態を各venvに[salt docsで説明されています](https://docs.saltstack.com/en/latest/ref/states/requisites.html#require-an-全体のslsファイル) – dahrens

+0

あなたは、あなたの頭溝を適切に強調することができることを念頭に置いてください。実際にそれらをハイステート化するのにどれくらい時間がかかりますか? – dahrens

関連する問題