Sí, hay algunas maneras de lograr eso.
La más simple (que hace algo de lo que usted describe, pero no todo) es crear una unidad objetivo y agregar dependencias en sus unidades de servicio (por ejemplo, Requires=zookeeper.service kafka.service elassandra.service
y también establecerlas After=
en las mismas unidades). Una unidad objetivo es útil para comenzar todo estas unidades juntas, pero en realidad no ayuda a detenerlas todas juntas (usar systemctl stop
en la unidad objetivo no detendrá sus dependencias). Hay formas en que puede detener unidades, por ejemplo systemctl isolate multi-user.target
, detendrá todas las unidades que no son dependencias de esa unidad. objetivo, lo que significa que las unidades iniciadas manualmente se detendrán, pero esto es mucho más fuerte que detener un pequeño conjunto de unidades, por lo que probablemente no sea un gran ajuste ...
Quizás un mejor enfoque sea usar la PartOf=
directiva , que hace exactamente lo que usted describe. Puede crear una unidad de servicio "ficticia" para administrar todos los servicios juntos, o elegir uno de sus servicios y hacer que los demás sean PartOf
ese único servicio.
PartOf=
Debe configurar en todas las unidades que desea iniciar y detener juntos, en su caso, zookeeper.service, kafka.service y elassandra.service. Pero tenga en cuenta que no necesariamente necesita modificar los archivos de la unidad de servicio (por ejemplo, si se envían con el software en paquetes deb o rpm). Puede usar archivos de anulación (que puede crear usando systemctl edit
) para agregar un pequeño fragmento de configuración a una unidad existente, que debería facilitarle la definición de PartOf=
relaciones entre unidades, incluso si están definidas en archivos que preferiría no modificar.