2016-03-07 16 views
7

Come possiamo strutturare l'albero di stato salt per essere in grado di eseguire highstate per un virtualenv di un numero elevato in esecuzione su un host?Salt: gestisci 100+ virtualenv su un host

Eseguiamo virtualenvs per lo sviluppo e la produzione, utilizzando il tessuto. Vogliamo passare dal tessuto al sale. Tutto funziona bene, ad eccezione del fatto che lo highstate impiega troppo tempo. Disponiamo di oltre 100 virtualenv su un host e il postingua highstate aggiornerebbe 100+ virtualenvs.

+0

si può dire quanto tempo ci vuole? – dahrens

+0

@dahrens mi dispiace, non ho numeri al momento. Ma la velocità è solo una preoccupazione. L'altro è: l'indirizzabilità. Voglio essere in grado di aggiornare una particolare virtualenv senza toccare gli altri virtualenvs. – guettli

risposta

6

salt '*' state.highstate

vale sempre tutti stati al vostro servitore. Dipende dai tuoi stati perché ci vuole un po 'di tempo prima che ritorni sugli Stati Uniti.

È possibile organizzare la distribuzione utilizzando stati separati per ogni venv. I singoli Stati possono essere applicati così:

salt '*' state.sls venv1

Un semplice albero di sale potrebbe essere simile a questo.

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

Se avete bisogno di cose da fare, come prerequisito per ogni venv nello stesso modo si potrebbe usare qualcosa di simile:

_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 

Preferisco essere in grado di calcare i miei servi senza pensarci, quindi cerco di evitare stati indirizzabili. Ma potrebbe adattarsi alle tue esigenze.

Si potrebbe anche voler dare un'occhiata al salt.states.virtualenv

+0

Suppongo che 'salt '*' state.sls venv1' invece di highstate dovrebbe funzionare. Se venv1 e venv2 condividono un insieme comune di requisiti, come scrivere questo (senza duplicazione del codice)? – guettli

+0

potresti creare un altro stato con i requisiti e includere quello stato in ogni venv come [spiegato in salt docs] (https://docs.saltstack.com/en/latest/ref/states/requisites.html#require-an- intero-sls-file) – dahrens

+0

tieni presente che vuoi essere in grado di dichiarare correttamente i tuoi servitori. quanto tempo impiega effettivamente per calcolarli? – dahrens