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.
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.
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