Estou operando uma instalação mínima do CentOS8 (8.1.1911) para fins de execução de um servidor web.
Alguns serviços /etc/systemd/system/multi-user.target.wants/
como
httpd.service
mariadb.service
named.service
squid.service
sshd.service
postfix.service
tem apenas After=network.target
e não network-online.target
.
Isso é um problema porque na inicialização do sistema esses serviços são iniciados antes que a rede esteja pronta e não conseguem se conectar a nenhuma porta de escuta. Felizmente, alguns como sshd
eles continuam tentando se conectar e, quando a rede está online, eles conseguem. Você pode ver as /var/log/messages
tentativas de vinculação que falharam antes de finalmente ter sucesso. No entanto, nem todos os serviços tentarão novamente e após a primeira falha permanecerão mortos.
Eu sei que uma solução é adicionar parâmetros personalizados para Wants
/ After
em cada serviço usando systemctl
, ou seja, executar
systemctl edit httpd
e adicione
[Unit]
Wants=network-online.target
After=network-online.target
Isso funciona, os serviços agora aguardarão até que a rede esteja on-line e sejam vinculadas e iniciadas com êxito na reinicialização.
Agora, minha pergunta.
Não quero editar manualmente cada serviço a ser adicionado, network-online.target
pois isso cria uma dor de cabeça na manutenção e a possibilidade de esquecer esta etapa em novos serviços instalados no futuro. O que eu quero é uma maneira de definir uma política ou fazer uma mudança em todo o sistema, para que qualquer serviço com Wants
/ After
for network.target
se comporte como se estivesse esperando por network-online.target
.
- Isso criará um problema, pois
NetworkManager
também esperanetwork.target
? PoderiaNetworkManager
ser alterado para esperar por outra coisa? - Algum outro serviço que possa falhar se todos
network.target
esperaremnetwork-online.target
? - Alguma outra solução criativa?