У нас есть юнит-файл, который:
использует ExecStartPre
который генерирует файл конфигурации
ExecStart
использует файл конфигурации для запуска службы
ExecStartPost
который удаляет файл, созданный ExecStartPre
. (файл имеет жестко закодированные пароли, и мы не хотим хранить его на диске, поэтому он должен существовать только во время запуска или перезапуска службы.
Если служба запущена успешно, она должна удалить файл конфигурации, если служба не запускается, она также должна удалить файл.
это системный файл:
[Ед. изм]
Описание=Сервер Prometheus
Документация=https://prometheus.io/docs/introduction/overview/
After=network-online.target
[Оказание услуг]
Пользователь=проммгр
Группа=секапм
Перезапуск = при сбое
ExecStartPre=/usr/bin/python2 /prom/config/anon_yml.py
ExecStart=/bin/sh -c "/prom/appl/prometheus/prometheus --config.file=/prom/config/prometheus.yml --storage.tsdb.path=/prom/data --web.listen-address =127.0.0.1:9090 --storage.tsdb.retention.time=1825d &>>/prom/logs/prometheus.log"
ExecStartPost=/usr/bin/python2 anon_yml.py --удалить
[Установить]
WantedBy=многопользовательская.цель
рассматриваемый файл конфигурации prometheus.yml
сценарий anon_yml.py
создаст файл из шаблона jinja и заполнит его необходимыми паролями.
ExecStart
затем запустит службу
в теории ExecStartPost
затем удалит файл prometheus.yml с диска после завершения ExecStart, однако, когда служба перезапускается, у меня возникают ошибки, связанные с отсутствием файла конфигурации. это только означает, что ExecStartPost не ждал завершения ExecStart.
Как убедиться, что файл конфигурации удаляется только после того, как процесс уже был перезапущен?