Manifests

Besides putting files on target hosts, Deptool can manage some daemon and runtime state, like enabling and starting systemd units. This is specified through a manifest, stored in manifest.json.

Format

{
  "systemd": {
    "units_enabled": ["a.service", "b.timer"]
  },
  "symlinks": {
    "/etc/frobnicator.conf": "frobnicator.conf"
  }
}

All sections are optional and default to empty.

systemd.units_enabled

Lists which units from the app's systemd/ directory should be enabled. All units in systemd/ are symlinked into the unit directory, but only those listed here receive systemctl enable --now.

Maps absolute paths on the target host to relative paths inside the app's checkout. Deptool creates symlinks at the specified paths, pointing through <app>/current/ so they always resolve to the active version.

To prevent interference with systemd units and sysusers managed by Deptool, symlink targets in /etc/systemd/system and /etc/sysusers.d are not allowed. Use the designated directories for those instead.

Incremental adoption

Deptool is designed for incremental adoption. When a symlink target already exists as a regular file on the host, Deptool compares its contents against the source file. If they are identical, the file is replaced with a symlink. If they differ, the deploy fails with an actionable error message, so the operator can resolve the conflict manually.