2016-03-07 8 views
7

Wie können wir die Struktur des Salzstatus strukturieren, um highstate für ein virtualenv aus einer großen Anzahl von auf einem Host laufen zu können?Salt: 100+ virtualenvs auf einem Host verwalten

Wir betreiben virtualenvs für die Entwicklung und in der Produktion, mit Stoff. Wir wollen von Stoff zu Salz wechseln. Alles funktioniert gut, nur dass highstate zu lange dauert. Wir haben 100+ virtualenvs auf einem Host, und caling highstate würde mehr als 100 virtualenvs aktualisieren.

+0

können Sie sagen haben wollen, wie lange es dauert? – dahrens

+0

@dahrens Sorry, ich habe im Moment keine Nummern. Aber Geschwindigkeit ist nur ein Anliegen. Der andere ist: Adressierbarkeit. Ich möchte in der Lage sein, ein bestimmtes virtualenv zu aktualisieren, ohne die anderen virtualenv zu berühren. – guettli

Antwort

6

salt '*' state.highstate

gilt immer alle Staaten zu Ihrem Günstling. Es hängt von Ihren Zuständen ab, warum es eine Weile dauert, bis die höchsten Renditen erreicht sind.

Es ist möglich, die Bereitstellung zu organisieren, indem für jedes venv separate Status verwendet werden.

salt '*' state.sls venv1

Ein einfaches Salz Baum könnte wie folgt aussehen: Einzelne Staaten können so angewandt werden.

. 
    +-- salt 
    | +-- _prereq.sls 
    | +-- venv1.sls 
    | +-- venv2.sls 
    | +-- top.sls 

Wenn Sie Material benötigen für jede Venv in der gleichen Weise wie Voraussetzung werden Sie so etwas nutzen könnten:

install_something: 
    pkg.installed: 
    pkgs: ['foo', 'bar'] 

venv1.sls

_prereq.sls

include: 
    - _prereq 

myvenv_state: 
    virtualenv.managed: 
    - system_site_packages: False 
    - requirements: salt://requirements.txt 
    - require: 
     - sls: _prereq 

Ich bevorzuge es, meine Untergebenen zu unterstützen, ohne darüber nachzudenken, also versuche ich, adressierbare Zustände zu vermeiden. Aber es könnte Ihren Bedürfnissen entsprechen.

Sie könnten auch einen Blick auf salt.states.virtualenv

+0

Ich denke, "Salz" * 'State.slsvens1' statt Highstate sollte funktionieren. Wenn venv1 und venv2 einen gemeinsamen Satz von Anforderungen teilen, wie schreibe ich dies (ohne Code-Duplizierung)? – guettli

+0

Sie könnten einen anderen Staat mit den Anforderungen erstellen und diesen Status in jedes vent einbinden, wie [in salt docs erklärt] (https://docs.saltstack.com/en/latest/ref/states/requisites.html#require-an- gesamte-sls-Datei) – dahrens

+0

bedenken Sie, dass Sie in der Lage sein, Ihre Untergebenen richtig zu bewerten. Wie lange dauert es wirklich, um sie zu bewerten? – dahrens