Eu sei que o systemd fornece um excelente mecanismo para substituir um arquivo de unidade fornecido pelo pacote para influenciar a configuração / comportamento do serviço. Isso geralmente é feito usando o comando abaixo
sudo systemctl edit <unitfile>
para criar um arquivo conf de substituição em
/etc/systemd/system/<unitfile.d>/
O Systemd também fornece um mecanismo separado para definir um arquivo de unidade de modelo e instancia-o para criar unidades específicas da instância em tempo de execução. Isso requer nomear o arquivo de modelo como
<servicename>@.service
e instanciando-o como
systemctl start <servicename>@<instancename>
Agora, tenho uma situação em que gostaria de executar um serviço fornecido por pacote como várias instâncias de unidade. Quero evitar criar meu próprio arquivo de unidade de modelo, portanto, estou tentando ver se o arquivo de unidade fornecido pelo pacote pode ser substituído para criar o arquivo de unidade de modelo.
Como, pelo que entendi, o arquivo de unidade de modelo tem uma convenção de nomenclatura diferente do arquivo de unidade normal, acho que não posso substituir o arquivo de unidade fornecido pelo pacote por um arquivo de modelo, colocando-o em / etc / systemd / system.
Existe alguma maneira definida de alcançar o que estou tentando fazer?
Cenário específico: O pacote grafana instala um arquivo de unidade grafana-server.service. Quero executar duas instâncias de grafana na minha máquina - uma para DEV e STG. Consegui fazer isso:
- modifique o arquivo grafana-server.service (usando% I para definir os locais das pastas e os caminhos dos arquivos)
- renomeie o grafana-server.service modificado para grafana-server @ .service
inicie instâncias do grafana usando:
sudo systemctl start grafana-server@dev
e
sudo systemctl start grafana-server@stg
No entanto, isso interrompe o link do arquivo da unidade de serviço fornecida pela grafana e, se eles melhorarem o arquivo de serviço ao fazer o upgrade, precisarei refazer essa atividade novamente. Meu objetivo é evitar essa dependência direta e convertê-la em uma dependência de substituição.
Alguma ideia?