# Built the company's own infrastructure as 19 Ansible playbooks and 34 roles across 12,065 lines of YAML, converging a live host to a declared state with every play idempotent.

2025

**Situation.** Engineer ApS runs its own estate — a web presence, a git forge, a database, backups, mail transport and DNS — and there was nobody to hand the operations to. A one‑person company has the same failure modes as a large one and none of the redundancy, which makes the usual answer, a person who remembers how the host was set up, the least available option there is.

**Task.** The whole estate had to be described in a repository rather than in a head, and described in a form that converges a real host rather than documenting one.

**Action.** What grew from that is 19 playbooks and 34 roles across 12,065 lines of YAML. The shape matters more than the size. Composition is data rather than flags: a host sits in a tier group whose variables declare which roles it runs, so provisioning with no arguments converges every host to its declared state. Idempotence is a contract rather than an aspiration — a converged host reports zero changes, and a play that cannot say that is not finished. Four command namespaces keep the promises apart: a gate that touches no host, reports that read one and never change it, provisioning that changes a host to match the repository, and verification that changes a host on purpose and returns a verdict.

**Result.** The estate is reproducible from the repository, and the parts of it that were only ever true because somebody remembered them are now assertions that fail a run. The cost is real: every change is slower to make than editing a file on the server would be, and a converge that half‑applies is worse than one that refuses, which is why a preflight play was later added in front of it. That trade was made deliberately and it has held.

---

- Role: Infrastructure Automation Engineer
- Categories: [Platform Architecture](https://engineer.company/categories/platform-architecture/), [DevOps](https://engineer.company/categories/devops/), [Infrastructure](https://engineer.company/categories/infrastructure/), [Automation & CI/CD](https://engineer.company/categories/automation/), [Reliability & Backups](https://engineer.company/categories/reliability/), [Linux & Servers](https://engineer.company/categories/linux/), [System Administration](https://engineer.company/categories/system-administration/), [Documentation](https://engineer.company/categories/documentation/)
- Services: [Cloud Infrastructure & Migration](https://engineer.company/services/cloud-infrastructure/), [Infrastructure as Code](https://engineer.company/services/infrastructure-as-code/), [DevOps & CI/CD Automation](https://engineer.company/services/devops-cicd/), [System Administration](https://engineer.company/services/system-administration/)

<https://engineer.company/portfolio/built-the-companys-infrastructure-as-code-108/>
