template da unidade systemd para instâncias em execução a partir de diretórios separados

2

Estou tentando criar um novo arquivo de modelo de unidade systemd que será usado para iniciar várias instâncias de um programa do servidor, cada uma executando um diretório diferente. ou seja, eu preciso que o parâmetro ExecStart seja diferente dependendo da instância.

Eu tentei fazer com que o caminho para a instância fosse o nome da instância, como o seguinte. Eu tenho o seguinte arquivo de unidade /etc/systemd/system/[email protected] :

[Unit]
Description=server instance '%I'
Requires=...
Wants=...

[Service]
Type=simple
ExecStart=%I/bin/server.sh
PIDFile=%I/server.pid

[Install]
WantedBy=multi-user.target

Eu faço um daemon-reload:

$ sudo systemctl daemon-reload

E eu tento iniciar uma instância com:

$ sudo systemctl start myserver@/path/to/instance1.service

Eu recebo um erro desse ditado. Veja o status para detalhes. Então, eu faço:

$ sudo systemctl status myserver@/path/to/instance1.service

Eu vejo um erro que o caminho ExecStart não é absoluto:

May 17 16:04:46 myhost systemd[1]: [/etc/systemd/system/[email protected]:9] \
  Executable path is not absolute, ignoring: %I/bin/server.sh
May 17 16:04:46 myhost systemd[1]: [email protected] lacks \
  both ExecStart= and ExecStop= setting. Refusing.

Existe uma maneira de parametrizar o caminho para o binário ExecStart (e PIDFile)? Estou preso fazendo um arquivo de unidade separado para cada instância?

    
por John L 17.05.2016 / 23:10

0 respostas

Tags