У меня есть служба systemd
для моего приложения загрузки весны, подключенного к серверу consul
, за haproxy
. consul
предоставляет consul-template
для автоматического обновления местоположения службы в файле конфигурации haproxy
с помощью команды consul-template
.Сделать команду ExecStartPost для запуска в фоновом режиме
consul-template
принимает файл шаблона и записывается в окончательный файл конфигурации haproxy, а затем перезагружает haproxy
.
Теперь процесс consul-template
должен выполняться в фоновом режиме всегда вместе с моим приложением, так что по мере появления приложения он может обнаруживать запуск нового приложения и обновлять его местоположение в файле конфигурации.
Вот мой служебный файл systemd
.
[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
Теперь, когда я начинаю systemctl start myservice
, мой запуск приложения и вызов consul-template
также работает, но consul-template
процесс не идет в фоновом режиме. Я должен нажать Ctl+C
, а затем возвращается systemctl
, и у меня есть как мое приложение, так и процесс консул-шаблона.
Есть ли способ запустить
consul-template
процесс в фоновом режиме, указанный вExecStartPost
?
Я пытался добавить &
в конце команды ExecStartPost
, но затем consul-template
жалуется, что это дополнительный недопустимый аргумент, и он выходит из строя.
Я также пытался сделать команду /bin/sh -c "consul-template command here..."
, но тогда это также не работает. Даже nohup
в этой команде не работал.
Любая помощь действительно оценена.
Вы можете иметь больше успеха с отделением 'процесса консула template' в свой systemd. – Amir