Aos poucos estou começando a gostar do systemd. Minha última descoberta foram os templates, os quais permitem usar um único arquivo de configuração para gerenciar vários sistemas semelhantes.
Eu administro vários bancos Oracle que possuem integração com outros bancos via um mecanismo muito precário chamado Heterogeneous Services. O FDW do Postgresql é muito melhor, mas não é importante para esta discussão.
Infelizmente, o Oracle desliga os listeners desses serviços sem qualquer motivo aparente. Então, resolvi experimentar criar um serviço do systemd para cada um. Eu não queria ter que criar um arquivo para cada serviço, então descobri os templates.
Criei um arquivo chamado hs-listener@.service. O arroba indica que é um template.
[Unit]
Description=Oracle HS Listener %I
After=network.target
[Service]
Type=forking
User=grid
Group=oinstall
Environment="ORACLE_HOME=/u02/app/23.0.0.0/gridhome_1/"
ExecStart=/u02/app/23.0.0.0/gridhome_1/bin/lsnrctl start listener_%i
ExecStop= /u02/app/23.0.0.0/gridhome_1/bin/lsnrctl stop listener_%i
Restart=always
[Install]
WantedBy=multi-user.target
Dentro do template, %I e %i serão substituídos pelos parâmetros usados a seguir. O %I não é formatado, mas o %i é.
systemctl enable hs-listener@db2
systemctl enable hs-listener@pgsql
systemctl enable hs-listener@mysql
systemctl enable hs-listener@sqlserver
Como se pode perceber, isso evita ter que criar vários arquivos semelhantes.
systemctl start hs-listener@db2
systemctl start hs-listener@pgsql
systemctl start hs-listener@mysql
systemctl start hs-listener@sqlserver
E isto evita ter que investigar o que houve com o listener uma vez por mês.

Nenhum comentário:
Postar um comentário