Estoy operando una instalación mínima de CentOS8 (8.1.1911) con el fin de ejecutar un servidor web.
Algunos servicios /etc/systemd/system/multi-user.target.wants/
como
httpd.service
mariadb.service
named.service
squid.service
sshd.service
postfix.service
tener solo After=network.target
y no network-online.target
.
Esto es un problema porque al iniciar el sistema, estos servicios se inician antes de que la red esté lista y no se conectan a ningún puerto de escucha. Afortunadamente, a una pareja le gusta sshd
seguir intentando vincularse y una vez que la red está en línea lo logran. Puede ver /var/log/messages
los intentos fallidos de vinculación antes de tener éxito. Sin embargo, no todos los servicios volverán a intentarlo y después del primer error permanecerán inactivos.
Sé que una solución es agregar parámetros personalizados para Wants
/ After
en cada servicio usando systemctl
, es decir, ejecutar
systemctl edit httpd
y añadir
[Unit]
Wants=network-online.target
After=network-online.target
Esto funciona, los servicios ahora esperarán a que la red esté en línea y se vincule y comience exitosamente al reiniciar.
Ahora mi pregunta.
No quiero editar manualmente cada servicio para agregar, network-online.target
ya que esto crea un dolor de cabeza de mantenimiento y la posibilidad de olvidar este paso en nuevos servicios instalados en el futuro. Lo que quiero es una forma de establecer una política o realizar un cambio en todo el sistema, de modo que cualquier servicio con un Wants
/ After
for network.target
se comporte como si estuviera esperando network-online.target
.
- ¿Esto creará un problema ya que
NetworkManager
también esperanetwork.target
? ¿Se podríaNetworkManager
cambiar para esperar a otra cosa? - ¿Algún otro servicio que podría fallar si todos
network.target
esperarannetwork-online.target
? - ¿Alguna otra solución creativa?