Skip to content

Continuous reconciliation for Linux

Linux hosts, reconciled against a Git repository.

Datum keeps Linux hosts matching the desired state held in a Git repository. Every pass reads the machine, compares it against the repository, and corrects what differs.

Alpha
fleet/roles/web/nginx.yaml
datum: v1alpha1
type: File

name: nginx-config

requires:
  - Package[nginx]

desired:
  path: /etc/nginx/nginx.conf
  owner: root
  group: root
  mode: "0640"
  source: files/nginx.conf
  validate: nginx

Git is the only input

Desired state comes from a repository at a known revision and nothing else feeds in.

Reading is separate from writing

observe, diff and plan stop before anything on the host changes.

The same document on Debian and Fedora

A resource describes package state rather than apt. Which provider realises it is read from the host.

Install

Build from source

There are no releases yet. Go 1.25 or newer is the only requirement, and the source tree includes an example fleet to run the read-only commands against.

shell
git clone https://github.com/dsgnr/datum.git
cd datum
make build

# Read the repository and the host, change nothing
./bin/datum plan --host web-001 --repo examples/fleet

# Reconcile, then report on the pass
./bin/datum reconcile --host web-001 --repo examples/fleet
./bin/datum status