Files
ansible-role-seriatim/README.md

50 lines
1.6 KiB
Markdown

# Ansible Role: Seriatim
Installs [Seriatim](https://gitea.maximumdirect.net/eric/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
```yaml
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
```yaml
- hosts: seriatim_hosts
become: true
roles:
- role: ansible-role-seriatim
```
## Validation
The integration driver installs pinned collection dependencies, runs syntax
checking and ansible-lint, converges and verifies the default release, then
requires an immediate repeat with `changed=0` and `failed=0`:
```sh
tests/integration
```