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 Modulsupervisorctl reread
dannsupervisorctl add
nennen, wenn das Programm/Gruppe existiert nicht.Wenn
state = restarted
, wird das Modulsupervisorctl update
rufensupervisorctl 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