Como faço para recarregar um grupo de serviços systemd?

8

Eu quero recarregar (não reiniciar!) um grupo de serviços em um evento.

Por exemplo, se eu atualizar meus certificados SSL, quero que todos os serviços que os utilizem sejam recarregados ( nginx e postfix vêm à mente). Nem quero lembrar quais serviços em um determinado servidor usam certificados SSL. Deve ser suficiente agrupá-los quando eles estiverem configurados.

Por outro lado, gostaria de evitar a alteração dos arquivos .service fornecidos com os pacotes, pois isso exigirá intervenção manual durante as atualizações.

Como faço isso?

Há uma opção para interromper um grupo de serviços sob solicitação , mas isso tornaria eles inacessíveis por um segundo ou dois, ou pior - eles podem ficar para baixo até fixos. Eu não posso permitir isso.

    
por sanmai 03.01.2017 / 10:01

1 resposta

16

Crie /etc/systemd/system/ssl-reload.target com o seguinte conteúdo.

[Unit]
Description=Services which need reloaded with SSL certs are updated.
PropagatesReloadTo=nginx postfix

Em seguida, crie outro arquivo: /etc/systemd/system/ssl-reload.path

[Unit]
Description=Restart services which use SSL when the cert directory changes

[Path]
PathChanged=/path/to/your/ssl/certs/dir

[Install]
WantedBy=multi-user.target

Então:

systemctl enable ssl-reload.path
systemctl start ssl-reload.path

Com isso dito, depois de alterar algo em seu diretório SSL, os serviços desejados devem ser recarregados automaticamente.

se você não quiser o comportamento automático, não use o arquivo .path e apenas emita systemctl reload ssl-reload.target manualmente depois de alterar os arquivos SSL.

    
por 03.01.2017 / 22:12

Tags