# sys-systemctl Utility role to reset/clean up **systemd** units for a given software stack. It can install a unit-file remover tool, delete units that match a configured suffix, and reload the systemd daemon. The role is designed to run **once per play** and is commonly included by other roles (e.g., timer/service roles) to ensure a clean state before (re)deployment. ## Overview When `MODE_RESET` is enabled, the role will: 1. Install the configured remover tool/package (via `pkgmgr-install`). 2. Remove all unit files that match the configured suffix for the current software. 3. Reload the systemd daemon to apply changes. A run-once guard (`run_once_sys_systemctl`) prevents repeated execution within the same play run. ## Features - **Idempotent cleanup** of systemd unit files based on a suffix. - **Pluggable remover tool** via `UNIT_SUFFIX_REMOVER_PACKAGE`. - **Daemon reload** to immediately apply changes. - **Run-once safety** across the play to avoid redundant work. ## Variables | Variable | Type | Default | Description | |-----------------------------|---------|-------------|---------------------------------------------------------------------------------------------| | `MODE_RESET` | bool | `false` | If `true`, executes the reset/cleanup tasks. | | `SYS_SERVICE_SUFFIX` | string | *required* | Suffix used to identify unit files belonging to the software stack (e.g., `.infinito.nexus`). | | `SOFTWARE_NAME` | string | *required* | Logical software identifier passed to the remover tool. | | `UNIT_SUFFIX_REMOVER_PACKAGE` | string| `"unsure"` | Package/command used to remove the unit files. Must provide a CLI compatible with `-s`. | > **Note:** The role expects the remover tool to support a command pattern like: > ``` > -s '' > ``` > Replace `UNIT_SUFFIX_REMOVER_PACKAGE` with your actual utility (or wrapper script) that removes all matching unit files. ## Tasks Flow - `tasks/main.yml` - Includes `tasks/01_reset.yml` **only when** `MODE_RESET` is `true`. - Loads `utils/run_once.yml` once to set `run_once_sys_systemctl`. - `tasks/01_reset.yml` - Installs `UNIT_SUFFIX_REMOVER_PACKAGE` via `pkgmgr-install`. - Executes the remover command to purge unit files for `SOFTWARE_NAME` / `SYS_SERVICE_SUFFIX`. - Runs `systemctl daemon-reload`. ## Dependencies - `pkgmgr-install` (role): used to install `UNIT_SUFFIX_REMOVER_PACKAGE`.