// infrastructure · cli

rostr

one hosts.yaml as the source of truth · ~17 Ansible playbooks · v1.0.0 · MIT

fig. 01hosts.yamlsource of truthssh configansible inventoryos audit

Problem

Server knowledge lives in three places at once: the SSH config, the Ansible inventory, and your head. Each copy rots at its own pace. Three servers in, none of them agree anymore — and “what actually runs where?” no longer has a reliable answer.

Approach

rostr inverts that: one hosts.yaml is the single source of truth, everything else is generated. SSH config, Ansible inventories, fuzzy host targeting (rostr ssh web finds the right machine), and parallel OS audits across every host. The repo also carries the playbooks that provision my own infrastructure — the full rebuild of the dedicated server in June 2026 ran out of exactly this repo.

Decisions

  • Every layer stays usable without rostr. The generated artifacts are standard files: the SSH config works without the tool, the inventories are plain Ansible. If rostr disappears, nothing breaks.
  • Fork over rewrite, labeled honestly. rostr is a heavily extended fork of an existing project — 71 of 89 commits are mine. Built on top of prior work, and credited as such.
  • Secrets never in plaintext. Encrypted secrets in the repo, keys in the agent — not in files.

Status & learnings

v1.0.0, MIT, in daily use as my private infrastructure control repo. The real learning: inventory drift is not a discipline problem, it’s an architecture problem. One source of truth you generate from beats every good intention of keeping three copies in sync.