Ansible Role: Seriatim
Installs Seriatim from source
on Ubuntu 26.04 (x86_64 or aarch64). The role requires gathered facts and
privilege escalation for its default paths and dependency installation.
Variables
seriatim_version: v1.5.0
seriatim_repository_url: https://gitea.maximumdirect.net/eric/seriatim.git
seriatim_source_dir: /usr/local/src/seriatim
seriatim_binary_path: /usr/local/bin/seriatim
seriatim_manage_build_dependencies: true
seriatim_go_snap_channel: 1.26/stable
When seriatim_manage_build_dependencies is false, Git and /snap/bin/go
must already be available. Otherwise, the role installs Git with APT and the
classic Go Snap from seriatim_go_snap_channel.
The checkout is authoritative: local source changes are discarded while
selecting seriatim_version. The role builds ./cmd/seriatim directly to
seriatim_binary_path using /snap/bin/go, CGO_ENABLED=0, GOWORK=off,
GOTOOLCHAIN=local, -trimpath, and release linker metadata. It rebuilds when
the checkout changes, the binary is absent, or seriatim --version does not
exactly match the selected version.
The source tree is recursively owned by root:root. The installed binary is a
regular file owned by root:root with mode 0755.
Example
- hosts: seriatim_hosts
become: true
roles:
- role: ansible-role-seriatim
Validation
The integration driver installs pinned collection dependencies, runs syntax
checking and ansible-lint, and verifies the default release and idempotence. It
also covers missing and wrong-version binaries, metadata drift without a
rebuild, selection of the previous release, restoration of the default
release, and platform failures before application state is created. The suite
mutates only /usr/local/src/seriatim, /usr/local/bin/seriatim, and paths
inside its private temporary directory, and leaves the default release
installed:
tests/integration