Provisioned Azure infrastructure as code
Provisioned Azure infrastructure as code with Bicep — Container Apps, PostgreSQL Flexible Server, Front Door/WAF and networking — across the development, staging and production environments.
Work carried out: 2025

Photo: Bru-nO / Pixabay 
Photo: blickpixel / Pixabay
three Azure environments, written down as code
Situation. The platform lives on Azure, and Azure done by hand — clicking through the portal, tweaking a setting here and there — is a trap. It drifts, nobody remembers why something is the way it is, and rebuilding it after a bad day is slow and nerve‑wracking. With more than one environment to keep in step, that only gets worse.
Task. Put the whole thing in code, so an environment is something you can read, review and recreate rather than a pile of manual state.
Action. The estate is defined in Bicep. Each environment — testing, staging, product — comes out of the same templates: the api and www running as Azure Container Apps on a managed environment, a PostgreSQL Flexible Server, Redis for caching, Front Door with a WAF policy out in front, and the networking underneath it (VNet, NSG, private DNS), with Log Analytics wired in for diagnostics. Images are pulled from the project’s Azure Container Registry. Because it’s all parameterised, standing up a fresh environment or changing an existing one is a pull request, not a support ticket to yourself.
Result. The environments became reproducible and reviewable. Drift stopped being a mystery, because the source of truth is the code, and bringing infrastructure up or back is a matter of applying the templates rather than remembering what got clicked last time. It’s the difference between infrastructure you own and infrastructure that owns you.
Read next: Built GitHub Actions CI/CD pipelines. Or take a look at the full Portfolio.
One piece of a longer record — and it is all on this site.
Every entry is written the same way: the situation, the task, what we did and what changed.

