2016-11-25 5 views
0

Ich habe einen systemd Service für meine Spring Boot-Anwendung, die an consul Server angeschlossen ist, hinter haproxy. consul bietet consul-template an, um den Servicestandort in der Konfigurationsdatei haproxy über den Befehl consul-template automatisch zu aktualisieren.Lassen Sie den ExecStartPost-Befehl im Hintergrund laufen

consul-template nimmt eine Vorlagendatei und schreibt in die endgültige Haproxy-Konfigurationsdatei und lädt dann die haproxy neu.

Jetzt, consul-template Prozess muss im Hintergrund immer zusammen mit meiner Anwendung ausgeführt werden, so dass, wenn die Anwendung kommt, kann neue Anwendungsstart erkennen und aktualisieren Sie ihren Speicherort in der Konfigurationsdatei.

Hier ist meine systemd Servicedatei dafür.

[Unit] 
Description=myservice 
Requires=network-online.target 
After=network-online.target 

[Service] 
Type=forking 
PIDFile=/home/dragon/myservice/run/myservice.pid 
ExecStart=/home/dragon/myservice/bin/myservice-script start 
ExecReload=/home/dragon/myservice/bin/myservice-script reload 
ExecStop=/home/dragon/myservice/bin/myservice-script stop 
ExecStartPost=consul-template -template '/etc/haproxy/haproxy.cfg.template:/etc/haproxy/haproxy.cfg:sudo systemctl reload haproxy' 
User=dragon 

[Install] 
WantedBy=multi-user.target 

Nun, wenn ich systemctl start myservice, meine Anwendung gestartet wird und der Anruf an consul-template funktioniert auch starten, aber consul-template Prozess nicht im Hintergrund geht. Ich muss Ctl+C drücken und dann systemctl kommt zurück und ich habe sowohl meine Anwendung und Consul-Template-Prozess ausgeführt.

Gibt es Möglichkeit, den consul-template Prozess im Hintergrund in ExecStartPost angegeben laufen?

ich versuche & am Ende des ExecStartPost Befehls hinzufügen, aber dann klagt consul-template, dass es ein zusätzliches Argument ungültig ist und es funktioniert nicht.

Ich habe auch versucht, den Befehl als /bin/sh -c "consul-template command here..." zu machen, aber das funktioniert auch nicht. Sogar nohup in diesem Befehl funktionierte nicht.

Jede Hilfe wird wirklich geschätzt.

+0

magisch arbeiten Sie mehr Erfolg mit Trennung des 'Consul template' Prozess in seine eigene haben, Systemeinheit. – Amir

Antwort

1

Eine Abhilfe wäre eine Bash-Datei als Einstiegspunkt zu haben, die alle hinzufügen, die Sie dort benötigen, dann wird es alle

+0

Ich habe am Ende erstellt einen separaten Service für Consul-Vorlage und haben eine Vorlage Vorlage selbst Datei mit dem Schlüssel-Wert-Paar des Konsuls. – divinedragon

+0

Konsul ist fantastisch! :) Bewerten Sie, wenn Sie denken, dass ich tatsächlich in irgendeiner Weise geholfen habe :) –

+0

Ich werde meine als Antwort einreichen. Es wird für viele Leute nützlich sein. – divinedragon

Verwandte Themen