Ich weiß, dass systemd einen hervorragenden Mechanismus zum Überschreiben einer vom Paket bereitgestellten Einheitendatei bietet, um die Dienstkonfiguration / das Dienstverhalten zu beeinflussen. Dies erfolgt normalerweise mit dem folgenden Befehl
sudo systemctl edit <unitfile>
um eine überschreibende conf-Datei unter zu erstellen
/etc/systemd/system/<unitfile.d>/
Systemd bietet auch einen separaten Mechanismus zum Definieren einer Vorlageneinheitendatei und zum Instanziieren, um zur Laufzeit instanzspezifische Einheiten zu erstellen. Dies erfordert die Benennung der Vorlagendatei als
<servicename>@.service
und dann instanziieren als
systemctl start <servicename>@<instancename>
Jetzt habe ich eine Situation, in der ich einen vom Paket bereitgestellten Dienst als Instanzen mit mehreren Einheiten ausführen möchte. Ich möchte vermeiden, eine eigene Vorlageneinheitendatei zu erstellen. Daher versuche ich zu prüfen, ob die vom Paket bereitgestellte Einheitendatei überschrieben werden kann, um die Vorlageneinheitendatei zu erstellen.
Da die Vorlageneinheitendatei meines Wissens eine andere Namenskonvention aufweist als die reguläre Einheitendatei, kann ich die vom Paket bereitgestellte Einheitendatei meiner Meinung nach nicht durch eine Vorlagendatei überschreiben, indem ich sie in / etc / systemd / system platziere.
Gibt es einen definierten Weg, um das zu erreichen, was ich versuche?
Spezifisches Szenario: Das grafana-Paket installiert eine Einheitendatei grafana-server.service. Ich möchte zwei Instanzen von Grafana auf meinem Computer ausführen - jeweils eine für DEV und STG. Ich konnte dies tun:
- Ändern Sie die Datei grafana-server.service (verwenden Sie% I, um Ordnerpositionen und Dateipfade festzulegen).
- Benennen Sie den geänderten grafana-server.service in grafana-server @ .service um
Starten Sie Instanzen von Grafana mit:
sudo systemctl start grafana-server@dev
und
sudo systemctl start grafana-server@stg
Dadurch wird jedoch die Verknüpfung mit der von grafana bereitgestellten Service Unit-Datei unterbrochen. Wenn die Service-Datei beim Upgrade erweitert wird, muss diese Aktivität erneut ausgeführt werden. Mein Ziel ist es, diese direkte Abhängigkeit zu vermeiden und sie stattdessen in eine Überschreibungsabhängigkeit umzuwandeln.
Irgendwelche Gedanken?