<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Terraform on Matt Ellis</title><link>https://matt-ellis.dev/tags/terraform/</link><description>Recent content in Terraform on Matt Ellis</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Sun, 12 Jul 2026 09:00:00 +0000</lastBuildDate><atom:link href="https://matt-ellis.dev/tags/terraform/atom.xml" rel="self" type="application/rss+xml"/><item><title>Why I moved my homelab off Docker Compose and into Terraform</title><link>https://matt-ellis.dev/posts/homelab-terraform/</link><pubDate>Sun, 12 Jul 2026 09:00:00 +0000</pubDate><guid>https://matt-ellis.dev/posts/homelab-terraform/</guid><description>&lt;p&gt;For about a year my homelab ran on a single docker-compose.yml file that kept growing until nobody, least of all me, wanted to touch it. Every new service meant another fifteen lines pasted from the last one, and every change meant hoping I remembered which container depended on which network.&lt;/p&gt;
&lt;p&gt;The breaking point was a Pi-hole restart that quietly took down the reverse proxy with it, because they shared a network alias I&amp;rsquo;d forgotten I&amp;rsquo;d set six months earlier. That&amp;rsquo;s the kind of bug that Terraform&amp;rsquo;s dependency graph is specifically built to catch before it happens, not after.&lt;/p&gt;</description></item></channel></rss>