Eu criei scripts de init para o SysVinit e systemd para distribuir com um de nossos pacotes de software (ele deve executar um daemon de segundo plano não interativo para um serviço de rede). O instalador pergunta ao usuário se ele deseja instalar o serviço; em caso afirmativo, o usuário e o diretório home dos daemons são criados e o script correto (dependendo do nome da imagem do processo 1) é copiado para o local correto.
Como alguns detalhes dependem da configuração específica do usuário ou da política da empresa (para onde instalar a ferramenta? Qual deve ser o usuário daemons? Onde deve ser seu diretório home?), usei placeholders como %%TOOL_USER%%
e my O script de configuração substitui os via sed. O material automático funciona bem para o CentOS e o Debian, então já estou bastante feliz.
Mas é claro que todo sistema é um pouco diferente, então o cliente pode optar por instalar manualmente o serviço (por exemplo, se ele não usa syslog, ou geralmente tem um alto nível de segurança, que é o caso de alguns de nossos clientes). Nesse caso, ele precisa adaptar o script de inicialização.
No caso do sysv init isto é fácil, já que este é basicamente um shell script e eu acabei de colocar três variáveis
user=%%TOOL_USER%%
executable=%%TOOL_EXEC%%
working_dir=%%TOOL_HOME%%
no topo, junto com algumas dicas de configuração.
Para o systemd, por outro lado, não encontrei a possibilidade de definir e referenciar variáveis personalizadas , então tudo que posso fazer é instruir o usuário a substituir todas as ocorrências de %%TOOL_*%%
com o valor apropriado.
Embora eu geralmente goste do modo como os novos scripts systemd funcionam, eu preferiria uma abordagem mais segura como o meu script de inicialização; agora o usuário pode perder uma ocorrência. Qualquer coisa que eu possa ter perdido?
Como referência, consultei os documentos systemd.service do freedesktop.org .