Ansible

Configuration management for native services on indri. The primary playbook is ansible/playbooks/indri.yml.

CLI Patterns

# Full provisioning
mise run provision-indri
 
# Specific role only
mise run provision-indri -- --tags caddy
 
# Dry run (preview changes)
mise run provision-indri -- --check --diff

Available Roles

RolePurposeService
alloyObservability collectoralloy
borgmaticBackup automationborgmatic
borgmatic_metricsBackup metrics exporterborgmatic
caddyReverse proxy & TLSrouting
forgejoGit forgeforgejo
jellyfinMedia serverjellyfin
jellyfin_metricsMedia metrics exporterjellyfin
minikubeKubernetes clustercluster
minikube_metricsCluster metricscluster
zotContainer registryzot
zot_metricsRegistry metricszot

Role Structure

Each role follows Ansible conventions:

ansible/roles/<role>/
├── defaults/main.yml    # Default variables
├── tasks/main.yml       # Task definitions
├── handlers/main.yml    # Handlers (restarts, etc.)
├── templates/           # Jinja2 templates
└── files/               # Static files

Secrets

Roles that need secrets use 1Password via the playbook’s pre_tasks. Secrets are gathered at playbook start and passed to roles as variables.