2016-03-31 4 views
1

Ich stelle eine Django-App für Produktions- und Staging-Umgebungen bereit (die sich zufällig auf demselben Server befinden). Um das zu tun, starte ich supervisord mit zwei verschiedenen Prozessen für beide Umgebungen.Ansible Supervisorctl, Unterschied zwischen Status 'neugestartet' und 'vorhanden'

Also in meinem ansible-playbook, ich Vorlage meine uwsgi config (entsprechend den Umgebungsvariablen) und kopieren Sie es in den Ordner /etc/supervisor/conf.d.

Angenommen, ich möchte das erste Mal in einer neuen Staging-Umgebung bereitstellen. Da es keine vorhandenen Konfigurationsdateien gibt, müsste ich supervisorctl reread und supervisorctl update.

Als ich aus dem docs lesen:

Wenn state = present, das Modul supervisorctl reread dann supervisorctl add nennen, wenn das Programm/Gruppe existiert nicht.

Wenn state = restarted, wird das Modul supervisorctl update rufen supervisorctl restart dann rufen.

Aber bedeutet es, dass ich beide aufrufen muss, wenn ich sowohl neue Staging-Instanzen als auch meine aktuellen Instanzen unterstützen möchte? Oder genügt es, einfach die state=restarted zu verwenden? Oder mache ich etwas falsch?

Wäre dieser Code in Ordnung? Oder dupliziert es Informationen?

- name: Add uwsgi app (reread + add) 
     become: yes 
     supervisorctl: name={{uwsgi_app}} state=present 

    - name: Start uwsgi app (update + restart) 
     become: yes 
     supervisorctl: name={{uwsgi_app}} state=restarted 

Antwort

2

Sie müssen entweder beide oder for the application to start automatically in Ihre Anwendungen Konfigurationsdateien (in /etc/supervisor/conf.d das Sie gesetzt) ​​indem Sie eine Zeile gesetzt rufen:

autostart: true 

Während es standardmäßig der Fall ist, ich lieber explizit sein.

Verwandte Themen