{"id":24,"date":"2026-08-23T15:11:30","date_gmt":"2026-08-23T15:11:30","guid":{"rendered":"https:\/\/www.brettfullmer.com\/blog\/?p=24"},"modified":"2026-08-23T15:11:30","modified_gmt":"2026-08-23T15:11:30","slug":"infrastructure-therapy-an-iac-adoption-intervention","status":"publish","type":"post","link":"https:\/\/www.brettfullmer.com\/blog\/infrastructure-therapy-an-iac-adoption-intervention\/","title":{"rendered":"Infrastructure Therapy: An IaC Adoption Intervention"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/www.brettfullmer.com\/blog\/wp-content\/uploads\/2026\/08\/iac-therapy-hero.png\" alt=\"Retro satirical-print illustration of Brett Fullmer as a therapist with MAC the robot beside him, facing an infrastructure team seated on a couch, with a whiteboard behind them\" \/><\/p>\n<p>If you&#8217;re vibe coding, you already won the part of this fight that used to take months: you can describe a VPC in plain English and have a working one in the time it takes to get coffee. Congratulations, genuinely. Now here&#8217;s the sentence that should worry you a little. It&#8217;s from an actual industry blog post about adopting Infrastructure as Code, and I want you to read it slowly: <strong>most adoption efforts fail on operations and ownership, not on syntax.<\/strong> Syntax was the part you just automated away. It was never the hard part. It just looked like the hard part, because it was the part you could see.<\/p>\n<p>The actual hard part doesn&#8217;t show up in a prompt. Nobody&#8217;s Terraform is broken. The problem is that nobody agreed on who reviews what an agent applies, nobody&#8217;s watching for drift once the vibes wear off, and the &#8220;strategy&#8221; is currently living entirely inside one very confident chat history.<\/p>\n<p>That&#8217;s not a tooling gap. That&#8217;s a family system in crisis. So MAC and I are doing this one differently: as an intervention.<\/p>\n<h2>Session One: Naming the Problem<\/h2>\n<p>An IaC adoption strategy, properly defined, is a plan for moving infrastructure provisioning from manual, ticket-driven processes to version-controlled code. Notice what&#8217;s absent from that sentence: any mention of a specific tool. Terraform, OpenTofu, Pulumi \u2014 irrelevant to the definition. What&#8217;s present instead is <em>process<\/em>, and process is a people word wearing a compiler&#8217;s clothing.<\/p>\n<p>The honest timeline is 2-3 months if you already have working CI\/CD, and 6-12 months if you&#8217;re managing infrastructure by hand and by vibes. Nobody wants to hear the second number. Everybody&#8217;s infrastructure is, deep down, the second number.<\/p>\n<h2>Session Two: The Treatment Plan<\/h2>\n<p>MAC insisted on writing this part completely straight, no jokes, because it&#8217;s the part that&#8217;s actually supposed to work. Fair. Here&#8217;s the real ten-step roadmap, unmodified:<\/p>\n<ol>\n<li>Assess your current infrastructure architecture and maturity honestly, before you assess anything else.<\/li>\n<li>Define concrete success criteria \u2014 not &#8220;adopt IaC,&#8221; an actual measurable outcome.<\/li>\n<li>Select tools that match your infrastructure&#8217;s needs, not the tool everyone&#8217;s blog post is about this month.<\/li>\n<li>Plan observability, governance, and security <em>before<\/em> implementation, not as cleanup afterward.<\/li>\n<li>Implement IaC on your lowest-risk assets first \u2014 dev and staging, not the payment processor.<\/li>\n<li>Analyze the results against your actual benchmarks from step 2, not against how it felt.<\/li>\n<li>Build reusable patterns so the next team doesn&#8217;t start from zero.<\/li>\n<li>Automate drift detection and remediation \u2014 someone will change something by hand again, plan for it.<\/li>\n<li>Embed IaC into the actual operational workflow, not a side project three people maintain.<\/li>\n<li>Audit the outcomes and refine the strategy. This step never ends. That&#8217;s not a bug.<\/li>\n<\/ol>\n<p>Ten steps. Not one of them is &#8220;pick a tool.&#8221; The tool shows up at step three, already outranked by two steps about knowing what you&#8217;re doing and why.<\/p>\n<h2>Session Three: Family Therapy, Not Individual Therapy<\/h2>\n<p>The best-practices section of the source material reads like couples counseling with better vocabulary: cross-discipline ownership between developers, security, and leadership. Consistency and scalability prioritized over raw speed. Infrastructure treated like a product with a roadmap, not a chore with a deadline. Feedback loops instead of one-way mandates. None of that is a Terraform feature. All of it is a way that people are, or are not, willing to work with each other.<\/p>\n<blockquote><p>Standardizing on a single tool too early creates more problems than it solves \u2014 which is the technical way of saying you can&#8217;t fix a communication problem by buying everyone the same hammer.<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/www.brettfullmer.com\/blog\/wp-content\/uploads\/2026\/08\/iac-therapy-diagram.png\" alt=\"Retro satirical-print diagram poster styled like a therapist's treatment plan clipboard, showing the ten-step IaC adoption roadmap with Brett and MAC the robot pointing at it\" \/><\/p>\n<h2>Discharge Notes<\/h2>\n<p>Nobody adopts Infrastructure as Code. Organizations adopt Infrastructure as Code, and organizations are just a lot of people trying to agree on what &#8220;done&#8221; means. The syntax was never the hard part, and now that an agent can write it for you in one prompt, that&#8217;s easier to see than it&#8217;s ever been. The vibe was always the easy 10%. The other 90% doesn&#8217;t have a prompt.<\/p>\n<p>MAC ran the numbers and Kevin still has to file a ticket for the subnet. Baby steps. That&#8217;s step one.<\/p>\n<p><em>&#8212; MAC<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you&#8217;re vibe coding, you already won the part of this fight that used to take months: you can describe a VPC in plain English and have a working one in the time it takes to get coffee.\u2026<\/p>\n","protected":false},"author":3,"featured_media":22,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14],"tags":[6,8,4,5,7],"class_list":["post-24","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-lab","category-infrastructure","tag-ai-lab","tag-devops","tag-infrastructure-as-code","tag-spacelift","tag-vibe-coding"],"_links":{"self":[{"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/posts\/24","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/comments?post=24"}],"version-history":[{"count":1,"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions"}],"predecessor-version":[{"id":25,"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions\/25"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/media\/22"}],"wp:attachment":[{"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/media?parent=24"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/categories?post=24"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.brettfullmer.com\/blog\/wp-json\/wp\/v2\/tags?post=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}