Avem un fișier unitar care:
utilizări ExecStartPre
care generează un fișier de configurare
ExecStart
folosește fișierul de configurare pentru a porni un serviciu
ExecStartPost
care șterge fișierul creat de ExecStartPre
. (fișierul are parole codificate și nu dorim să-l păstrăm pe disc. deci trebuie să existe doar în timp ce serviciul este pornit sau repornit.
Dacă serviciul este pornit cu succes, ar trebui să șterge fișierul de configurare, dacă serviciul nu reușește să pornească, ar trebui să ștergă și fișierul.
acesta este fișierul systemd:
[Unitate]
Descriere=Prometheus Server
Documentație=https://prometheus.io/docs/introduction/overview/
După=network-online.target
[Serviciu]
Utilizator=prommgr
Grupa=secapm
Restart=la eșec
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 --delete
[Instalare]
WantedBy=multi-user.target
fișierul de configurare în cauză este prometheus.yml
scenariul anon_yml.py
va crea fișierul dintr-un șablon jinja și îl va popula cu parolele necesare.
ExecStart
va porni apoi serviciul
teoretic ExecStartPost
ar elimina apoi fișierul prometheus.yml de pe disc după ce ExecStart s-a terminat, cu toate acestea, când serviciul este repornit, am erori de fișier de configurare care lipsește. înseamnă doar că ExecStartPost nu a așteptat până la terminarea ExecStart.
Cum să vă asigurați că fișierul de configurare este șters numai după ce procesul a fost deja repornit?