Skip to content

Commit 8eeae17

Browse files
docs(readme): convert README.adoc -> Markdown (renders on Glama/profile/community-health) (#23)
README was AsciiDoc → renders as raw markup in Markdown consumers (Glama MCP directory, GitHub community-health, GitHub profile). pandoc asciidoc→GFM (badges → clickable), SPDX header kept, duplicate `.adoc` removed. Part of the estate README-format fix. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent a94a853 commit 8eeae17

2 files changed

Lines changed: 102 additions & 96 deletions

File tree

README.adoc

Lines changed: 0 additions & 96 deletions
This file was deleted.

README.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<!--
2+
SPDX-License-Identifier: CC-BY-SA-4.0
3+
SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
5+
6+
# What This Is
7+
8+
Complete infrastructure-as-code for local system management, replacing
9+
SaltStack with modern Ansible + Terraform.
10+
11+
- **Ansible** manages configuration: packages, users, files, services,
12+
firewall, monitoring, networking — everything that runs *on* your
13+
host.
14+
15+
- **Terraform** manages container provisioning: declarative lifecycle
16+
management of Podman containers with state tracking.
17+
18+
Designed for Fedora Silverblue (immutable OS) but works on any Fedora.
19+
20+
# Quick Start
21+
22+
```bash
23+
./scripts/bootstrap.sh # Install dependencies
24+
vim ansible/inventory/group_vars/all.yml # Customise
25+
just check # Dry run
26+
just apply # Apply
27+
```
28+
29+
# Design Principles
30+
31+
Homoiconic
32+
Configuration describes itself. `group_vars/all.yml` IS the system
33+
specification.
34+
35+
Reflexive
36+
The system inspects its own state. Run `just` `self-check` or `just`
37+
`report`.
38+
39+
Dependable
40+
All operations are idempotent. Run `just` `check` for safe dry runs.
41+
42+
Secure
43+
Firewall-first, least-privilege, Ansible Vault for secrets, rootless
44+
Podman.
45+
46+
Interoperable
47+
Compatible with [HAR](../ambientops/hybrid-automation-router/) for IaC
48+
translation.
49+
50+
# Repository Structure
51+
52+
```text
53+
ansible/
54+
inventory/group_vars/all.yml ← EDIT THIS: your desired system state
55+
playbooks/site.yml ← Master playbook
56+
roles/ ← 11 modular roles
57+
terraform/
58+
main.tf ← Container provisioning
59+
terraform.tfvars.example ← Container definitions template
60+
scripts/
61+
bootstrap.sh ← First-time setup
62+
self-check.sh ← State validation
63+
docs/ ← Architecture, migration, quickstart
64+
justfile ← Task runner recipes
65+
```
66+
67+
# Ansible Roles
68+
69+
| Role | Purpose | Salt Equivalent |
70+
|----|----|----|
71+
| `base_packages` | Essential system packages | `packages.sls` |
72+
| `users` | User accounts and SSH keys | `users.sls` |
73+
| `files_managed` | Configuration files (MOTD, profile) | `files.sls` |
74+
| `services` | Systemd service management | `services.sls` |
75+
| `firewall` | Firewalld rules | `firewall.sls` |
76+
| `sudo_config` | Sudo rules via drop-in files | `sudo.sls` |
77+
| `monitoring` | Monitoring tools and self-monitoring | `monitoring/init.sls` |
78+
| `networking` | /etc/hosts, hostname, DNS | `networking/init.sls` |
79+
| `podman_containers` | Podman container management | `containers/init.sls` |
80+
| `silverblue` | Immutable OS adaptations | *(new)* |
81+
| `development` | Developer tools (asdf, runtimes) | *(new)* |
82+
83+
# Common Commands
84+
85+
```bash
86+
just apply # Apply all configuration
87+
just check # Dry run (show changes without applying)
88+
just apply-tags security # Apply only firewall + sudo
89+
just self-check # Validate current system state
90+
just report # View last change report
91+
just tf-plan # Preview container changes
92+
just tf-apply # Provision containers
93+
just bootstrap # First-time setup
94+
just migrate # Salt migration helper
95+
```
96+
97+
# License
98+
99+
MPL-2.0
100+
101+
Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)
102+
\<[j.d.a.jewell@open.ac](j.d.a.jewell@open.ac).uk\>

0 commit comments

Comments
 (0)