Your infra abstractions are infecting your control plane
Infrastructure abstractions are sexy. It’s alluring to think that you can encode your opinions once and nobody else ever has to think about them.
When you invent an abstraction for infra, you are going to end up holding it somewhere. That somewhere is your control plane, and where you get to run it is decided by your abstraction.
Where does the abstraction live?
You can stick your opinions anywhere you like and at some point they have to get reconciled. Put them in a controller and your control plane needs a cluster to run it. Put them in a store and it becomes a query against that store.
chant invents no abstractions to begin with. A composite is assembly, a plain function returning spec-native resources. That’s configuration as data arrived at by compiling rather than by storing. The control plane above it can deploy anywhere.
Stores answer for ownership. Using a provider-native tag at create time means truth stays on the resource itself.
Nothing to stand up
The best control plane requires no special configuration with your resources. The read access you already have is all you should need to get started.
behold is the abstraction free control plane. Cloud drift on AWS sits directly beside supply-chain drift on GitHub Actions. It keeps no copy of your estate, and completed live results are not cached. What it does write down is derived. Nothing about it assumes a cluster.
behold is still in development but available for you to try. The graph and the drift overlay work today, the delegated actions are still in progress.
Anything can be a database
TypeScript queried through its syntax tree already answers questions about the estate. I measure what the abstractions cost on aws-bench: asked which security groups were attached to nothing, every toolchain that reads a stored copy scored 0 out of 3.
A model of your cloud that differs from native is always a release behind the thing it models. That’s where the other tools drift from the spec, and it’s the same invented layer reaching upward to tell your control plane where it may live.
Abstractions drift. Why do we keep infecting infrastructure with them?