Перейти к содержимому

core.service

← Каталог модулей

soul-sidesoulstack.servicesservicesroot требуется

Управление сервисами OS: активность и автозапуск.

core.service управляет двумя независимыми осями сервиса: активностью (running / stopped / restarted) и автозапуском при загрузке (enabled). Backend определяется по init-системе хоста. running и enabled идемпотентны; restarted намеренно неидемпотентен — рестарт выполняется всегда. Требует root.

Требования

  • Rootтребуется
  • Сторонаsoul-side
  • Коллекцияsoulstack.services
  • Категорияservices
Capabilitiesrun_as_rootexec_subprocess
Детект backend

Авто из фактов хоста (os.init_system); при отсутствии — рантайм-детект: systemd → openrc → sysv. Не определён — шаг падает.

Состояния

core.service.running — Сервис активен. Опциональный enabled одним шагом управляет автозапуском.

Меняется, когда

Сервис был неактивен и запущен, либо enabled задан и autostart пришлось изменить.

Не меняется, когда

Сервис уже активен и autostart в нужном состоянии.

Параметры

ПараметрТипОбяз. / дефолтОписание
namestringrequiredИмя сервиса/юнита.
enabledbooloptionaltrue → дополнительно enable, false → disable, опущено → autostart не трогать.
daemon_reloadstring
auto | always | never
optional · autosystemctl daemon-reload перед start (systemd): auto = при NeedDaemonReload, always = безусловно, never = opt-out. openrc/sysv — no-op (ADR-015).

Пример — running + enabled одним шагом

- name: Ensure node_exporter is running and enabled at boot
module: core.service.running
params:
name: node_exporter
enabled: true

Output

ПолеТипОписание
namestring
activetrue
enabledbool (если задан)

Справочник

Поддерживаемые init-системы

InitКак выбирается
systemdиз факта os.init_system, иначе рантайм-детект (первым)
openrcто же (вторым)
sysvто же (третьим)

daemon_reload — перечитывание unit-файлов

systemd держит unit-определения в памяти. После правки unit-файла на диске (например, drop-in отрендерил core.file) systemctl restart тихо рестартует сервис со старым определением, пока не сделан daemon-reload. core.service делает его сам.

ЗначениеПоведение (systemd)
auto (default)Reload только при реальном рассинхроне: модуль проверяет NeedDaemonReload и перечитывает unit-файлы, лишь если он yes.
alwaysdaemon-reload безусловно перед действием.
neverЯвный opt-out — reload не делается.

Заметки

  • restarted намеренно неидемпотентен: changed=true всегда, рестарт запрошен явно.
  • На non-systemd init (openrc / sysv) daemon_reload — no-op при любом значении; факт реального reload виден полем reloaded: true в output.
  • Требует root.

Безопасность и умолчания

  • stopped и restarted — реальный downtime: name должно приходить от автора Destiny, остановка не того юнита = отказ в обслуживании.
  • enabled закрепляет исполнение юнита при каждой загрузке — контролируйте источник unit-файла как исполняемый артефакт.
  • enabled ортогонален активности: enable не стартует сервис, disable не останавливает. Чтобы сервис гарантированно не работал — нужен stopped.

См. также