Complete infrastructure-as-code for local system management, replacing SaltStack with modern Ansible + Terraform.
-
Ansible manages configuration: packages, users, files, services, firewall, monitoring, networking — everything that runs on your host.
-
Terraform manages container provisioning: declarative lifecycle management of Podman containers with state tracking.
Designed for Fedora Silverblue (immutable OS) but works on any Fedora.
./scripts/bootstrap.sh # Install dependencies
vim ansible/inventory/group_vars/all.yml # Customise
just check # Dry run
just apply # ApplyHomoiconic
Configuration describes itself. group_vars/all.yml IS the system
specification.
Reflexive
The system inspects its own state. Run just self-check or
just report.
Dependable
All operations are idempotent. Run just check for safe dry runs.
Secure
Firewall-first, least-privilege, Ansible Vault for secrets, rootless
Podman.
Interoperable
Compatible with HAR for
IaC translation.
ansible/
inventory/group_vars/all.yml ← EDIT THIS: your desired system state
playbooks/site.yml ← Master playbook
roles/ ← 11 modular roles
terraform/
main.tf ← Container provisioning
terraform.tfvars.example ← Container definitions template
scripts/
bootstrap.sh ← First-time setup
self-check.sh ← State validation
docs/ ← Architecture, migration, quickstart
justfile ← Task runner recipes| Role | Purpose | Salt Equivalent |
|---|---|---|
|
Essential system packages |
|
|
User accounts and SSH keys |
|
|
Configuration files (MOTD, profile) |
|
|
Systemd service management |
|
|
Firewalld rules |
|
|
Sudo rules via drop-in files |
|
|
Monitoring tools and self-monitoring |
|
|
/etc/hosts, hostname, DNS |
|
|
Podman container management |
|
|
Immutable OS adaptations |
(new) |
|
Developer tools (asdf, runtimes) |
(new) |
just apply # Apply all configuration
just check # Dry run (show changes without applying)
just apply-tags security # Apply only firewall + sudo
just self-check # Validate current system state
just report # View last change report
just tf-plan # Preview container changes
just tf-apply # Provision containers
just bootstrap # First-time setup
just migrate # Salt migration helperMPL-2.0
Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>