<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Config Report]]></title><description><![CDATA[Network engineer helping SMBs and IT pros simplify automation, security, and networking.]]></description><link>https://theconfigreport.com</link><image><url>https://substackcdn.com/image/fetch/$s_!P-1l!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9dca975-662b-4840-a6b8-c7e2d30746d9_626x626.png</url><title>The Config Report</title><link>https://theconfigreport.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 31 May 2026 16:15:44 GMT</lastBuildDate><atom:link href="https://theconfigreport.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[JJ from The Config Report]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jj@theconfigreport.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jj@theconfigreport.com]]></itunes:email><itunes:name><![CDATA[JJ – Chief Packet Pusher]]></itunes:name></itunes:owner><itunes:author><![CDATA[JJ – Chief Packet Pusher]]></itunes:author><googleplay:owner><![CDATA[jj@theconfigreport.com]]></googleplay:owner><googleplay:email><![CDATA[jj@theconfigreport.com]]></googleplay:email><googleplay:author><![CDATA[JJ – Chief Packet Pusher]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Infrastructure as Code: Stop Fixing Networks (Start Replacing Them)]]></title><description><![CDATA[Still fixing configs manually? Learn how Infrastructure as Code helps network engineers eliminate drift and automate consistent network deployments.]]></description><link>https://theconfigreport.com/p/iac-stop-fixing-networks</link><guid isPermaLink="false">https://theconfigreport.com/p/iac-stop-fixing-networks</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 11 May 2026 14:07:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/63779e25-b659-4ed6-8c3f-207f652d704b_1731x909.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>&#129504; The Old Way: &#8220;Just Fix the Network&#8221;</h2><p>Something breaks.</p><ul><li><p>VLAN isn&#8217;t passing traffic</p></li><li><p>Firewall rule isn&#8217;t hitting</p></li><li><p>BGP neighbor flaps</p></li><li><p>Random site can&#8217;t reach one specific app (of course)</p></li></ul><p>So what do we do?</p><p>We jump into the controller or device:</p><ul><li><p>Add a quick rule</p></li><li><p>Tweak a VLAN</p></li><li><p>Bounce an interface</p></li><li><p>Change a route</p></li><li><p>Maybe disable something &#8220;temporarily&#8221;</p></li></ul><p>And then&#8230;</p><p>&#128073; It works</p><p>And we move on with our lives like heroes.</p><div><hr></div><h2>&#128128; The Problem Nobody Talks About</h2><p>That &#8220;quick fix&#8221; you just made?</p><p>It probably:</p><ul><li><p>Exists only in the device/controller</p></li><li><p>Isn&#8217;t in Git</p></li><li><p>Isn&#8217;t documented</p></li><li><p>Isn&#8217;t consistent across sites</p></li><li><p>Won&#8217;t be there in DR</p></li><li><p>Won&#8217;t be there in the next deployment</p></li></ul><p>You didn&#8217;t fix the network.</p><p>&#128073; You <strong>forked reality</strong></p><div><hr></div><h2>&#10052;&#65039; Welcome to Snowflake Networking</h2><p>Now your environment looks like this:</p><ul><li><p>Site A &#8594; has the &#8220;fix&#8221;</p></li><li><p>Site B &#8594; doesn&#8217;t</p></li><li><p>Firewall &#8594; slightly different</p></li><li><p>Templates &#8594; &#8220;almost&#8221; correct</p></li><li><p>Controller &#8594; source of confusion, not truth</p></li></ul><p>And 3 months later:</p><blockquote><p>&#8220;Why does this only break at one location?&#8221;</p></blockquote><p>Because past-you was moving fast and feeling dangerous.</p><div><hr></div><h2>&#128293; The IaC Mindset Shift</h2><p>Here&#8217;s the uncomfortable truth for network engineers:</p><blockquote><p>&#10060; Devices are not the source of truth<br>&#10060; Controllers are not the source of truth<br>&#10060; Templates are not the source of truth</p></blockquote><p>Yeah&#8230; even that shiny dashboard you trust.</p><p>Instead:</p><blockquote><p>&#9989; Code is the source of truth<br>&#9989; The network is just a deployed result<br>&#9989; Changes happen in code first, not the network</p></blockquote><div><hr></div><h2>&#129512; The Rule That Changes Everything</h2><blockquote><p><strong>If the network breaks, you don&#8217;t &#8220;fix&#8221; it&#8230; you redeploy it.</strong></p></blockquote><p>I can already hear it:</p><blockquote><p>&#8220;JJ&#8230; I&#8217;m not redeploying a firewall in prod. Relax.&#8221;</p></blockquote><p>Fair.</p><p>But stay with me.</p><div><hr></div><h2>&#127959;&#65039; What This Looks Like in Networking</h2><p>Instead of this:</p><ul><li><p>Log into firewall</p></li><li><p>Add rule</p></li><li><p>Test</p></li><li><p>Leave it there forever</p></li><li><p>Forget to update templates</p></li></ul><p>You do this:</p><ul><li><p>Update rule in Git</p></li><li><p>Commit change</p></li><li><p>Pipeline runs</p></li><li><p>Push to device group / template / API</p></li><li><p>Network converges to desired state</p></li></ul><p>Same outcome.</p><p>Completely different control.</p><div><hr></div><h2>&#128556; &#8220;But That&#8217;s Slower&#8230;&#8221;</h2><p>Yeah&#8230; the first time.</p><p>Because now you have to:</p><ul><li><p>Define rules properly</p></li><li><p>Track changes</p></li><li><p>Trust automation</p></li></ul><p>But here&#8217;s the tradeoff:</p><p>&#128073; Manual fix = fast once<br>&#128073; Code-based deploy = fast <em>every time after that</em></p><div><hr></div><h2>&#129504; Why This Matters More for Network Engineers</h2><p>Sysadmins figured this out years ago.</p><p>Network teams?</p><p>We&#8217;ve been living in:</p><ul><li><p>Controllers</p></li><li><p>GUIs</p></li><li><p>&#8220;Just one quick change&#8221; culture</p></li></ul><p>Which means:</p><p>&#128073; We create drift <em>constantly</em><br>&#128073; And we don&#8217;t even notice it</p><div><hr></div><h2>&#128520; The Hidden Benefit</h2><p>When engineers know:</p><blockquote><p>&#8220;If it&#8217;s not in code, it won&#8217;t survive&#8221;</p></blockquote><p>They stop doing:</p><ul><li><p>&#8220;Let me just add this rule real quick&#8221;</p></li><li><p>&#8220;I&#8217;ll fix it in the firewall directly&#8221;</p></li><li><p>&#8220;We&#8217;ll update the template later&#8221;</p></li></ul><p>Because they know:</p><p>&#128073; The next deploy will wipe it out</p><p>And suddenly&#8230;</p><p>&#10024; Your configs actually stay consistent</p><div><hr></div><h2>&#129514; Quick Reality Check</h2><p>Ask yourself:</p><ul><li><p>If you rebuilt your firewall policies from Git right now&#8230; would they match prod?</p></li><li><p>If you pushed templates again&#8230; would anything break?</p></li><li><p>Do you trust your source of truth more than your controller?</p></li></ul><p>If any of those answers feel uncomfortable&#8230;</p><p>Good.</p><p>That&#8217;s the point.</p><div><hr></div><h1>&#128274; Paid Section &#8211; Where This Gets Real</h1><h2>&#129521; The &#8220;Redeploy, Don&#8217;t Patch&#8221; Pattern for Networks</h2><p>This is how you actually apply this without nuking production.</p><div><hr></div><h3></h3>
      <p>
          <a href="https://theconfigreport.com/p/iac-stop-fixing-networks">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Infrastructure as Code: Configuration Drift Is Killing Your Network]]></title><description><![CDATA[Configuration drift is one of the biggest hidden causes of network outages and inconsistent configs. Learn how to detect and fix drift using Infrastructure as Code, Ansible, and simple automation workflows.]]></description><link>https://theconfigreport.com/p/iac-config-drift</link><guid isPermaLink="false">https://theconfigreport.com/p/iac-config-drift</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 27 Apr 2026 14:46:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9f792ffa-1771-4289-8ac3-95ce43fd9252_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>&#129512; Everything Was Fine&#8230; Until It Wasn&#8217;t</h2><p>Everything was working yesterday.</p><p>No alerts.<br>No complaints.<br>No tickets titled <em>&#8220;URGENT: THE INTERNET IS BROKEN AGAIN.&#8221;</em></p><p>Then today?</p><ul><li><p>One site can&#8217;t reach another</p></li><li><p>A firewall rule &#8220;definitely exists&#8221; (but somehow doesn&#8217;t work)</p></li><li><p>That VLAN you <em>swear</em> was there&#8230; is gone</p></li><li><p>And nobody touched anything&#8230; apparently</p></li></ul><p>Yeah. Sure.</p><p>Welcome to <strong>configuration drift</strong> &#8212; the silent killer of stable networks.</p><div><hr></div><h2>&#129504; What Configuration Drift Actually Is</h2><p>Configuration drift is what happens when your <em>intended</em> configuration and your <em>actual</em> configuration slowly drift apart over time.</p><p>Not because of one big change&#8230;</p><p>&#8230;but because of <strong>hundreds of tiny ones</strong>:</p><ul><li><p>&#8220;Quick fix&#8221; CLI changes</p></li><li><p>Emergency firewall rules</p></li><li><p>Someone tweaking a port at 2AM</p></li><li><p>A &#8220;temporary&#8221; change that became permanent</p></li><li><p>That one engineer who &#8220;just logs into the box real quick&#8221;</p></li></ul><p>Multiply that across your environment and you get:</p><blockquote><p>&#8220;Mostly consistent&#8230; except for all the parts that aren&#8217;t.&#8221;</p></blockquote><div><hr></div><h2>&#129503; The Real Problem: Drift Feels Invisible</h2><p>Here&#8217;s why drift is dangerous:</p><p>It doesn&#8217;t break things immediately.</p><p>It builds slowly. Quietly.</p><p>Until one day something depends on a configuration that <em>used to be true</em>&#8230;</p><p>&#8230;and now it isn&#8217;t.</p><p>That&#8217;s when you get:</p><ul><li><p>&#8220;It works in one site but not another&#8221;</p></li><li><p>&#8220;It worked last week&#8221;</p></li><li><p>&#8220;QA works, prod doesn&#8217;t&#8221;</p></li><li><p>&#8220;Same config&#8230; I think?&#8221;</p></li></ul><p>Spoiler: it&#8217;s not the same config.</p><div><hr></div><h2>&#128293; Real-World Drift Examples</h2><p>Let&#8217;s be honest&#8230; you&#8217;ve seen at least one of these recently:</p><p><strong>Firewall drift</strong><br>That rule exists&#8230; just not on the device you need.</p><p><strong>Switch drift</strong><br>VLAN on the core? Yes.<br>On the access switch? Not even close.</p><p><strong>Cloud drift</strong><br>Terraform says one thing.<br>The cloud console says another.</p><p>Guess which one is actually running?</p><p><strong>&#8220;Temporary fix&#8221; drift</strong><br>&#8220;We&#8217;ll remove that later.&#8221;<br>We did not remove that later.</p><div><hr></div><h2>&#128128; Why Most Networks Are Drift Factories</h2><p>Most environments are set up in a way that guarantees drift:</p><ul><li><p>No true source of truth</p></li><li><p>Direct device changes</p></li><li><p>Multiple engineers doing their own thing</p></li><li><p>No enforced process</p></li><li><p>No validation after changes</p></li></ul><p>It&#8217;s basically:</p><blockquote><p>&#8220;Everyone just try your best and don&#8217;t break anything.&#8221;</p></blockquote><div><hr></div><h2>&#129513; How IaC Fixes Drift (If You Actually Use It)</h2><p>Infrastructure as Code doesn&#8217;t magically fix drift&#8230;</p><p>&#8230;but it gives you control over it:</p><ul><li><p>One source of truth (Git)</p></li><li><p>Repeatable deployments</p></li><li><p>Change visibility</p></li><li><p>The ability to compare intended vs actual</p></li></ul><p>But none of that matters if people ignore it.</p><div><hr></div><h2>&#9888;&#65039; The Part Nobody Likes Hearing</h2><p>You don&#8217;t have a tooling problem.</p><p>You have a <strong>behavior problem</strong>.</p><p>You can have:</p><ul><li><p>Ansible</p></li><li><p>Terraform</p></li><li><p>Pipelines</p></li><li><p>Clean repos</p></li></ul><p>&#8230;and still have drift everywhere if people are:</p><ul><li><p>Logging into devices</p></li><li><p>Making &#8220;just one quick change&#8221;</p></li><li><p>Skipping the process</p></li></ul><p>IaC only works when:</p><blockquote><p><strong>Code becomes the ONLY way changes happen.</strong></p></blockquote><p>Not optional. Not &#8220;preferred.&#8221;</p><p>Required.</p><div><hr></div><h2>&#129504; The Mindset Shift</h2><p>Stop thinking:</p><blockquote><p>&#8220;The device is the source of truth.&#8221;</p></blockquote><p>Start thinking:</p><blockquote><p>&#8220;The device is just a deployed artifact.&#8221;</p></blockquote><p>If it drifts?</p><p>You don&#8217;t fix it manually.</p><p>You <strong>reapply the correct config from code</strong>.</p><div><hr></div><h2>&#128736;&#65039; Quick Win You Can Do This Week</h2><p>Pick ONE thing you change often:</p><ul><li><p>Firewall rules</p></li><li><p>VLANs</p></li><li><p>Interface configs</p></li></ul><p>Then:</p><ol><li><p>Export it</p></li><li><p>Put it in Git</p></li><li><p>Treat it as the source of truth</p></li><li><p>Make changes there first</p></li></ol><p>Even if you still apply changes manually&#8230;</p><p>you&#8217;ve already reduced drift.</p><div><hr></div><h2>&#128274; Paid Section: How to Actually Kill Drift</h2><p>Up to this point, you&#8217;ve probably realized something uncomfortable:</p><blockquote><p>Your network isn&#8217;t broken&#8230; it&#8217;s just slowly drifting out of control.</p></blockquote><p>And the worst part?</p><p>Most teams don&#8217;t notice until it turns into:</p><ul><li><p>a production outage</p></li><li><p>a security gap</p></li><li><p>or a &#8220;this makes no sense&#8221; troubleshooting nightmare</p></li></ul><div><hr></div><h3>&#128161; Here&#8217;s What We&#8217;re About to Fix</h3><p>In the rest of this issue, I&#8217;m going to show you exactly how to start controlling drift <strong>using the tools you already have</strong>.</p><p>No enterprise platform required. No massive rebuild.</p><p>Just practical, real-world steps.</p><div><hr></div><h3>&#128275; What You&#8217;ll Learn in the Full Issue</h3><ul><li><p>How to <strong>detect configuration drift automatically</strong> using Ansible + APIs</p></li><li><p>A simple <strong>drift audit workflow</strong> you can run this week</p></li><li><p>How to enforce <strong>&#8220;no manual changes&#8221;</strong> without slowing your team down</p></li><li><p>A clean, realistic <strong>Git + pipeline structure</strong> for network configs</p></li><li><p>A real-world <strong>drift outage scenario</strong> (and how it should have been prevented)</p></li></ul><div><hr></div><p>If you&#8217;ve ever said:</p><blockquote><p>&#8220;That shouldn&#8217;t have changed&#8230;&#8221;</p></blockquote><p>This is where you fix that problem for good.</p><div><hr></div><p><em>(Unlock the rest below &#128071;)</em></p>
      <p>
          <a href="https://theconfigreport.com/p/iac-config-drift">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Infrastructure as Code: The State File Nobody Warned You About]]></title><description><![CDATA[Learn what the IaC state file is, how configuration drift happens, and why automation breaks. Practical tips for network engineers to prevent outages and manage Infrastructure as Code safely.]]></description><link>https://theconfigreport.com/p/iac-the-state-file</link><guid isPermaLink="false">https://theconfigreport.com/p/iac-the-state-file</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 13 Apr 2026 14:34:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3640e504-80bf-429b-a332-d93bb5474973_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>Everything was fine&#8230; until it wasn&#8217;t</strong></h2><p>Everything was working.</p><p>No alerts. No tickets. No angry Slack messages.</p><p>You ran your automation like you&#8217;ve done a hundred times before.</p><p>And then&#8230;</p><p>Something disappeared.<br>Something changed.<br>Something broke.</p><p>And the worst part?</p><p>Your automation said everything was successful.</p><p>Welcome to <strong>state</strong>.</p><div><hr></div><h2><strong>What &#8220;State&#8221; Actually Is (In Human Terms)</strong></h2><p>When people talk about Infrastructure as Code, they usually focus on:</p><ul><li><p>Version control</p></li><li><p>Repeatable deployments</p></li><li><p>Automation</p></li></ul><p>But behind all of that&#8230; there&#8217;s something quietly keeping score.</p><p><strong>State is what your IaC tool </strong><em><strong>believes</strong></em><strong> exists.</strong></p><p>Not what actually exists.<br>Not what was changed 10 minutes ago.<br>Not what someone &#8220;just quickly fixed&#8221; in the CLI.</p><p>Just&#8230; what it <em>thinks</em> is true.</p><p>Think of it like this:</p><blockquote><p>State is a network diagram that updates automatically&#8230;<br>but sometimes lies to you with full confidence.</p></blockquote><div><hr></div><h2><strong>Why State Exists (And Why You Actually Need It)</strong></h2><p>Before we start blaming state for everything&#8230;</p><p>It&#8217;s doing something important.</p><p>Your IaC tool needs to answer three questions:</p><ol><li><p>What exists right now?</p></li><li><p>What should exist?</p></li><li><p>What needs to change to get there?</p></li></ol><p>Without state:</p><ul><li><p>Every run would be a blind push</p></li><li><p>Or a full tear-down and rebuild</p></li><li><p>Or worse&#8230; unpredictable results every time</p></li></ul><p>State is what makes IaC <strong>efficient instead of chaotic</strong>.</p><div><hr></div><h2><strong>Here&#8217;s Where Things Get Dangerous</strong></h2><p>State works perfectly&#8230;</p><p>&#128073; <strong>As long as nothing changes outside of it.</strong></p><p>And if you&#8217;ve worked in networking for more than 5 minutes&#8230;</p><p>You already know that&#8217;s not reality.</p><div><hr></div><h2><strong>Problem #1: Drift (AKA &#8220;Who Touched My Config?&#8221;)</strong></h2><p>Drift happens when:</p><ul><li><p>Someone makes a manual change</p></li><li><p>A hotfix gets applied directly</p></li><li><p>A controller updates something behind the scenes</p></li></ul><p>Now your real environment &#8800; your state file.</p><p>So what happens next?</p><p>You run your automation again.</p><p>&#128073; And it &#8220;fixes&#8221; the difference.</p><p>Meaning:</p><blockquote><p>Congrats. Your firewall just undid a critical change from two hours ago.</p></blockquote><div><hr></div><h2><strong>Problem #2: Stale State (Yesterday&#8217;s Truth, Today&#8217;s Problem)</strong></h2><p>Sometimes nothing changed manually.</p><p>But your state is just&#8230; old.</p><p>Maybe:</p><ul><li><p>The last run failed halfway</p></li><li><p>The state file didn&#8217;t update correctly</p></li><li><p>Another process modified things</p></li></ul><p>Now your tool is operating on <strong>outdated assumptions</strong>.</p><blockquote><p>&#8220;I updated the VLAN.&#8221;<br>Cool&#8230; except that VLAN hasn&#8217;t existed since Tuesday.</p></blockquote><div><hr></div><h2><strong>Problem #3: Shared State (Team Chaos Mode)</strong></h2><p>Things get really fun when multiple people or pipelines are involved.</p><ul><li><p>Two engineers run automation at the same time</p></li><li><p>One pipeline overwrites another</p></li><li><p>State gets updated mid-run</p></li></ul><p>Now you&#8217;ve got:</p><ul><li><p>Race conditions</p></li><li><p>Conflicting changes</p></li><li><p>&#8220;It worked on my run&#8221; arguments</p></li></ul><div><hr></div><h2><strong>Problem #4: Losing State (The Oh No Scenario)</strong></h2><p>If your state file disappears or gets corrupted&#8230;</p><p>You don&#8217;t just lose data.</p><p>You lose <strong>awareness</strong>.</p><p>Your IaC tool now has no idea:</p><ul><li><p>What exists</p></li><li><p>What it created</p></li><li><p>What it should manage</p></li></ul><p>At that point, your options are:</p><ul><li><p>Rebuild everything</p></li><li><p>Or manually figure it out</p></li></ul><p>Neither one feels great.</p><div><hr></div><h2><strong>Why Network Engineers Feel This Pain More Than Anyone</strong></h2><p>In theory, IaC assumes:</p><blockquote><p>All changes go through code.</p></blockquote><p>In reality, networking looks more like:</p><ul><li><p>Emergency CLI fixes</p></li><li><p>Vendor GUIs making &#8220;helpful&#8221; changes</p></li><li><p>Multiple systems touching the same config</p></li><li><p>Partial automation</p></li></ul><p>Which means:</p><p>&#128073; Drift isn&#8217;t rare.<br>&#128073; It&#8217;s constant.</p><div><hr></div><h2><strong>The Real Problem</strong></h2><p>IaC doesn&#8217;t just manage your network.</p><p>It manages your <strong>understanding of your network</strong>.</p><p>And if that understanding is wrong&#8230;</p><p>Everything built on top of it will be wrong too.</p><div><hr></div><h2><strong>What You&#8217;ll Learn in the Rest of This Issue</strong></h2><p>In the full version, I&#8217;ll walk you through how to:</p><ul><li><p>Prevent config drift from silently breaking your environment</p></li><li><p>Safely manage state across multiple engineers and pipelines</p></li><li><p>Avoid the &#8220;automation just wiped my change&#8221; nightmare</p></li><li><p>Build a workflow that actually works in real-world networks</p></li></ul><p>Because state isn&#8217;t the problem.</p><p>Ignoring it is.</p><div><hr></div><h1>&#128274; <strong>Continue Reading (Extended Version)</strong></h1><div><hr></div><h2><strong>Let&#8217;s Fix This Before It Fixes You</strong></h2><p></p>
      <p>
          <a href="https://theconfigreport.com/p/iac-the-state-file">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Infrastructure as Code: Declarative vs Imperative (And Why Your Automation Still Breaks)]]></title><description><![CDATA[Learn the difference between declarative and imperative Infrastructure as Code, why most network automation breaks, and how to build safer, repeatable configs using real-world patterns.]]></description><link>https://theconfigreport.com/p/iac-declarative-vs-imperative</link><guid isPermaLink="false">https://theconfigreport.com/p/iac-declarative-vs-imperative</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 30 Mar 2026 14:03:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9727e5d9-940c-42ee-a44f-5022d63ad8e1_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The Moment Everything Gets Confusing</h2><p>You start automating your network.</p><p>At first, it feels great.</p><p>No more clicking around in GUIs.<br>No more late-night &#8220;what changed?&#8221; guessing games.</p><p>You write a script like this:</p><ul><li><p>Create VLAN 20</p></li><li><p>Assign ports</p></li><li><p>Enable trunk</p></li></ul><p>Boom. Automation.</p><p>You sit back, sip your coffee, and think:</p><blockquote><p>&#8220;Yeah&#8230; I&#8217;m basically DevOps now.&#8221;</p></blockquote><p>Then something weird happens.</p><p>You run the same script again&#8230;<br>And now things break.</p><div><hr></div><h2>The Problem You Didn&#8217;t Know You Had</h2><p>Your script isn&#8217;t wrong.</p><p>It&#8217;s just&#8230; <strong>bossy.</strong></p><p>This is what we call <strong>imperative automation</strong>.</p><p>You&#8217;re telling the network:</p><blockquote><p>&#8220;Do these exact steps. In this exact order. No questions.&#8221;</p></blockquote><p>And the network is like:</p><blockquote><p>&#8220;Cool&#8230; but I already did some of that.&#8221;</p></blockquote><p>Now you&#8217;ve got:</p><ul><li><p>Duplicate configs</p></li><li><p>Unexpected errors</p></li><li><p>Or worse&#8230; silent failures</p></li></ul><p>Your automation didn&#8217;t fail.</p><p>It did <em>exactly</em> what you told it to do.</p><p>That&#8217;s the problem.</p><div><hr></div><h2>Imperative vs Declarative (The Real Difference)</h2><p>Let&#8217;s make this painfully clear.</p><h3><strong>Imperative (What most network engineers start with):</strong></h3><pre><code>create vlan 20
assign ports
enable trunk</code></pre><p>You are controlling <strong>how</strong> the network gets there.</p><p>Step by step. Like a checklist.</p><div><hr></div><h3><strong>Declarative (What IaC actually wants):</strong></h3><pre><code>vlans:
  - id: 20
    name: users</code></pre><p>You are describing <strong>what the network should look like</strong>.</p><p>Not how to build it.</p><div><hr></div><p>Here&#8217;s the simplest way to think about it:</p><ul><li><p><strong>Imperative:</strong> &#8220;Do these steps.&#8221;<br></p></li><li><p><strong>Declarative:</strong> &#8220;This is the outcome &#8212; figure it out.&#8221;<br></p></li></ul><div><hr></div><h2>Why Your Scripts Break (Even When They&#8217;re &#8220;Correct&#8221;)</h2><p>Imperative automation assumes one dangerous thing:</p><blockquote><p>The starting state is always what you expect.</p></blockquote><p>It&#8217;s almost never true.</p><p>Real networks have:</p><ul><li><p>Old configs nobody remembers<br></p></li><li><p>Manual changes at 2AM<br></p></li><li><p>&#8220;Temporary&#8221; fixes from 6 months ago<br></p></li><li><p>That one engineer who &#8220;just tweaked something real quick&#8221;<br></p></li></ul><p>So when your script runs:</p><ul><li><p>Maybe VLAN 20 already exists<br></p></li><li><p>Maybe ports are already assigned<br></p></li><li><p>Maybe the trunk is already enabled<br></p></li></ul><p>Now your script either:</p><ul><li><p>Errors out<br></p></li><li><p>Overwrites something it shouldn&#8217;t<br></p></li><li><p>Or quietly does nothing useful<br></p></li></ul><div><hr></div><h2>Declarative Thinking Changes Everything</h2><p>Declarative systems don&#8217;t care how things got messed up.</p><p>They only care about one thing:</p><blockquote><p>&#8220;Does the current state match the desired state?&#8221;</p></blockquote><p>If not&#8230; fix it.</p><p>If yes&#8230; do nothing.</p><p>That&#8217;s why declarative automation is:</p><ul><li><p><strong>Idempotent</strong> (safe to run over and over)<br></p></li><li><p><strong>Predictable</strong><br></p></li><li><p><strong>Much harder to break at scale</strong><br></p></li></ul><div><hr></div><h2>Controllers, Templates&#8230; and the IaC Confusion</h2><p>This is where things get a little awkward.</p><p>Because a lot of network engineers think:</p><blockquote><p>&#8220;We already have templates. We&#8217;re basically doing Infrastructure as Code.&#8221;</p></blockquote><p>And to be fair&#8230; you&#8217;re not wrong.</p><p>Tools like:</p><ul><li><p>Panorama device groups<br></p></li><li><p>Aruba Central group configs<br></p></li><li><p>Meraki network templates<br></p></li></ul><p><strong>Absolutely make your life better.</strong></p><p>They give you:</p><ul><li><p>Consistency<br></p></li><li><p>Centralized management<br></p></li><li><p>Less copy/paste chaos<br></p></li></ul><p>Compared to pure CLI chaos, that&#8217;s a huge step forward.</p><div><hr></div><h2>But Here&#8217;s the Problem</h2><p>They&#8217;re not <em>actually</em> Infrastructure as Code.</p><p>They&#8217;re <strong>centralized configuration</strong>.</p><p>And that&#8217;s not the same thing.</p><p>Because in most environments:</p><blockquote><p>The <strong>source of truth is still the controller UI.</strong></p></blockquote><p>Which means&#8230;</p><ul><li><p>Someone logs into the controller<br></p></li><li><p>Makes a quick change<br></p></li><li><p>Clicks commit<br></p></li><li><p>Moves on with their day<br></p></li></ul><p>And just like that:</p><ul><li><p>The network changed<br></p></li><li><p>Nobody reviewed it<br></p></li><li><p>Nothing was versioned<br></p></li><li><p>No one knows <em>why</em> it changed next week<br></p></li></ul><div><hr></div><h2>This Is Still Imperative Thinking (Just With a GUI)</h2><p>Even with templates, you&#8217;re still doing this:</p><blockquote><p>&#8220;Go into the controller and make this change.&#8221;</p></blockquote><p>That&#8217;s imperative.</p><p>You&#8217;re still telling the system <strong>how to change</strong>, not defining <strong>what it should be</strong>.</p><div><hr></div><h2>What IaC Actually Changes</h2><p>Infrastructure as Code flips the model.</p><p>Instead of this:</p><blockquote><p>&#8220;Log into the controller and update the template&#8221;</p></blockquote><p>You do this:</p><ul><li><p>Define config in a repo<br></p></li><li><p>Submit a change<br></p></li><li><p>Review it<br></p></li><li><p>Merge it<br></p></li><li><p>Let automation push it<br></p></li></ul><p>Now the flow becomes:</p><blockquote><p>Code &#8594; Automation &#8594; Controller &#8594; Devices</p></blockquote><p>Not:</p><blockquote><p>Engineer &#8594; Controller &#8594; Hope nothing breaks</p></blockquote><div><hr></div><h2>The Controller&#8217;s New Job</h2><p>In IaC, the controller doesn&#8217;t disappear.</p><p>It just gets demoted a little &#128516;</p><p>It becomes:</p><blockquote><p><strong>A deployment platform &#8212; not the source of truth</strong></p></blockquote><div><hr></div><h2>Why This Matters More Than People Realize</h2><p>Because without this shift, you still have:</p><ul><li><p>No real version control<br></p></li><li><p>No safe rollback<br></p></li><li><p>No audit trail that actually helps<br></p></li><li><p>No guarantee your &#8220;template&#8221; matches reality<br></p></li></ul><p>You&#8217;ve improved <em>consistency</em>&#8230;</p><p>But you haven&#8217;t solved <em>control</em>.</p><div><hr></div><h2>&#9888;&#65039; Where This Starts Getting Interesting</h2><p>Because once you stop telling the network <em>how</em> to change&#8230;</p><p>And start defining <em>what it should be</em>&#8230;</p><p>You run into a new problem:</p><blockquote><p><strong>How do you actually enforce that state safely?</strong></p></blockquote><div><hr></div><h2>&#128275; What Paid Subscribers Get in This Issue</h2><p>If your automation only works when you babysit it&#8230;<br>this is the part you don&#8217;t want to miss.</p><p>In the rest of this issue, I break down:</p><ul><li><p>How to make <strong>imperative tools (like Ansible)</strong> behave like declarative systems</p></li><li><p>The <strong>3 rules</strong> that turn fragile scripts into safe, repeatable automation</p></li><li><p>Real-world patterns for checking state <em>before</em> making changes</p></li><li><p>How to stop writing &#8220;run once and pray&#8221; automation</p></li><li><p>Why most network automation fails silently&#8212;and how to fix it</p></li></ul><p>This is the difference between:</p><blockquote><p>&#8220;I have scripts&#8221;</p></blockquote><p>and</p><blockquote><p>&#8220;I have automation I actually trust in production&#8221;</p></blockquote>
      <p>
          <a href="https://theconfigreport.com/p/iac-declarative-vs-imperative">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Infrastructure as Code: Why Most Networks Are Still Built Like It's 2005 – Extended Version]]></title><description><![CDATA[A deeper look at Infrastructure as Code, snowflake infrastructure, and how Git, automation, and CI/CD make networks reproducible and easier to manage.]]></description><link>https://theconfigreport.com/p/iac-why-networks-are-built-like-2005-extended</link><guid isPermaLink="false">https://theconfigreport.com/p/iac-why-networks-are-built-like-2005-extended</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 16 Mar 2026 20:40:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2a2a8d39-84f9-4fd8-a29d-dbeaee30b572_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the free version of this issue, we talked about how traditional infrastructure tends to evolve into <strong>snowflake systems</strong>.</p><p>Every device becomes slightly different.</p><p>Configs drift.<br>Documentation gets outdated.<br>And the only reliable record of the infrastructure becomes the running configuration on the device.</p><p>Infrastructure as Code attempts to solve that problem.</p><p>But understanding IaC requires thinking about infrastructure in a completely different way.</p><p>Instead of asking:</p><p>&#8220;How do we configure this device?&#8221;</p><p>IaC asks a different question:</p><p>&#8220;How do we <strong>recreate this infrastructure from scratch</strong>?&#8221;</p><p>That shift in thinking is where most teams struggle.</p><div><hr></div><h2>The Real Test of Infrastructure</h2><p>A good way to understand Infrastructure as Code is to imagine a simple scenario.</p><p>A core switch fails.</p><p>Completely dead.</p><p>No configuration backup available.</p><p></p>
      <p>
          <a href="https://theconfigreport.com/p/iac-why-networks-are-built-like-2005-extended">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Infrastructure as Code: Why Most Networks Are Still Built Like It's 2005]]></title><description><![CDATA[What Infrastructure as Code really means for network engineers, why most networks still rely on manual configs, and how IaC changes infrastructure management.]]></description><link>https://theconfigreport.com/p/iac-why-networks-are-built-like-2005</link><guid isPermaLink="false">https://theconfigreport.com/p/iac-why-networks-are-built-like-2005</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 16 Mar 2026 20:29:54 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/541280da-56ee-4c1d-acf8-ae074bff41af_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You inherit a network.</p><p>The documentation is outdated.<br>Half the switches have configs that don&#8217;t match each other.<br>There&#8217;s a firewall rule nobody understands but everyone is afraid to delete.</p><p>Someone tells you:</p><p>&#8220;Don&#8217;t touch that. It&#8217;s been like that for years.&#8221;</p><p>So you do the only thing network engineers have done for decades.</p><pre><code>show run</code></pre><p>You scroll.<br><br>You search.<br><br>You try to reverse-engineer the history of the network from the running configuration.</p><p>Welcome to traditional infrastructure management.</p><p>And whether we like it or not, <strong>this is still how most networks operate today.</strong></p><div><hr></div><h2>The Snowflake Infrastructure Problem</h2><p>For a long time, infrastructure was built the same way most home labs are built.</p><p>One device at a time.</p><p>An engineer logs in, configures something, saves the config, and moves on.</p><p>Over time, every device becomes slightly different.</p><p>Different VLAN names.<br><br>Different ACL structures.<br><br>Different routing policies.</p><p>No two devices are exactly the same.</p><p>Every server, switch, and firewall becomes a <strong>special little snowflake</strong>.</p><p>Unique.<br><br>Fragile.<br><br>And terrifying to rebuild.</p><div><hr></div><h2>The &#8220;Just SSH In Real Quick&#8221; Culture</h2><p>Most infrastructure teams developed a habit that still exists today.</p><p>Something breaks.</p><p>An engineer logs into the device.</p><p>They make a change directly on the CLI.</p><p>Problem solved.</p><p>Until six months later when someone else asks:</p><p>&#8220;Why is this configured like this?&#8221;</p><p>And the only documentation available is:</p><pre><code>show running-config</code></pre><p>This approach worked for a long time because networks were smaller, simpler, and changed less frequently.</p><p>But modern infrastructure moves faster than manual configuration can keep up.</p><div><hr></div><h2>Software Engineers Solved This Problem Years Ago</h2><p>Here&#8217;s where things start to look strange from the infrastructure side.</p><p>Software engineers can rebuild an entire application from a Git repository.</p><p>Every dependency.<br><br>Every configuration.<br><br>Every version.</p><p>If their production server disappears, they don&#8217;t panic.</p><p>They redeploy it.</p><p>Infrastructure teams, on the other hand, often can&#8217;t rebuild a single switch configuration without digging through backups, documentation, and tribal knowledge.</p><p>That difference is exactly what <strong>Infrastructure as Code</strong> was created to solve.</p><div><hr></div><h2>What Infrastructure as Code Actually Means</h2><p>Despite the buzzwords, Infrastructure as Code is a simple idea.</p><p>Infrastructure should be <strong>defined in code and reproducible from source control</strong>.</p><p>Instead of logging into devices and configuring them manually, the configuration lives in a repository.</p><p>Changes are tracked.<br><br>Versions are recorded.<br><br>Deployments are automated.</p><p>The infrastructure becomes something you can <strong>rebuild instead of repair</strong>.</p><p>In other words:</p><p>Your network stops being a collection of mystery configurations and starts behaving more like software.</p><div><hr></div><h2>Why Network Engineers Struggle With IaC</h2><p>Infrastructure as Code sounds simple, but for many network engineers it feels unnatural at first.</p><p>Networking has historically been built around direct device access.</p><p>CLI commands.<br><br>Vendor GUIs.<br><br>Manual configuration.</p><p>Automation tools came later.</p><p>And even today, the instinct when something breaks is still:</p><p>&#8220;Let me SSH in real quick.&#8221;</p><p>Infrastructure as Code flips that model.</p><p>Instead of fixing things manually, changes happen through <strong>code and automation</strong>.</p><p>Which means the CLI stops being the primary tool for managing infrastructure.</p><p>For many engineers, that&#8217;s a major shift in how operations work.</p><div><hr></div><h2>What Infrastructure as Code Is NOT</h2><p>A lot of teams believe they&#8217;re doing Infrastructure as Code when they really aren&#8217;t.</p><p>IaC is not:</p><p>&#8226; Running scripts occasionally<br><br>&#8226; Copy-pasting configs through automation<br><br>&#8226; Using Ansible once in a while<br><br>&#8226; Storing backups in Git</p><p>Infrastructure as Code is about <strong>desired state and reproducibility</strong>.</p><p>If a device disappears, you should be able to recreate it from the code.</p><p>No guessing.</p><p>No archaeology.</p><p>No asking the engineer who configured it three years ago.</p><p>Just code.</p><div><hr></div><h2>The Real Goal of IaC</h2><p>The goal of Infrastructure as Code is simple.</p><p>If a switch, firewall, or server disappears tomorrow&#8230;</p><p>You should be able to rebuild it from Git.</p><p>Not rebuild it <em>approximately</em>.<br><br>Not rebuild it <em>close enough</em>.</p><p>Rebuild it <strong>exactly</strong>.</p><p>That&#8217;s when infrastructure stops being fragile and starts being reliable.</p><div><hr></div><h2>What Comes Next</h2><p>Once infrastructure is defined in code, a new set of concepts appears that can be confusing at first.</p><p>Terms like:</p><p>Declarative<br><br>Imperative<br><br>Idempotent<br><br>State</p><p>These ideas are at the core of how modern infrastructure automation works.</p><p>And understanding them is what separates simple automation from true Infrastructure as Code.</p><p>In the next issue, we&#8217;ll break down one of the most misunderstood concepts in automation:</p><p><strong>Declarative vs Imperative infrastructure.</strong></p><p>Because understanding that difference is where Infrastructure as Code really starts to make sense.</p><div><hr></div><h2>Want the deeper dive?</h2><p>Most teams trying Infrastructure as Code fail for the same reason.</p><p>They try to automate infrastructure <strong>without changing how the team operates</strong>.</p><p>The result is predictable.</p><p>The code says one thing.<br>The infrastructure slowly becomes something else.</p><p>Eventually nobody trusts the automation anymore.</p><p>In the <strong>Extended Version</strong>, we break down:</p><p>&#8226; The real test that proves whether your infrastructure is reproducible<br>&#8226; The biggest mistake teams make when adopting IaC<br>&#8226; How Git becomes the control plane for infrastructure<br>&#8226; Why automation fails when manual changes are still allowed</p><p>If you&#8217;ve ever inherited a network where nobody knows why half the configs exist, the extended version will feel painfully familiar.</p><div><hr></div><p>&#8212; JJ &#8211; Chief Packet Pusher.</p>]]></content:encoded></item><item><title><![CDATA[Why Your CI/CD Pipeline Is a Liar – Extended Version]]></title><description><![CDATA[Build infrastructure pipelines that protect production. Includes drift detection, blast radius checks, rollback strategy, and a CI/CD maturity checklist.]]></description><link>https://theconfigreport.com/p/cicd-pipeline-is-a-liar-extended</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-pipeline-is-a-liar-extended</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 02 Mar 2026 15:30:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/992d16ed-2f6b-4930-9527-005985a3c8ae_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Your pipeline is green.</p><p>Prod is down.</p><p>Someone says, &#8220;But the build passed.&#8221;</p><p>And now you&#8217;re staring at a dashboard like it personally betrayed you.</p><p>This is the finale of the CI/CD series.</p><p>We&#8217;ve covered what CI actually means.<br>We&#8217;ve separated Delivery from Deployment.<br>We&#8217;ve talked about pipelines for infrastructure &#8212; not just app dev.</p><p>Now we&#8217;re going to fix the r&#8230;</p>
      <p>
          <a href="https://theconfigreport.com/p/cicd-pipeline-is-a-liar-extended">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Why Your CI/CD Pipeline Is a Liar]]></title><description><![CDATA[Green builds don&#8217;t guarantee safe deploys. Learn why CI/CD pipelines fail infrastructure teams&#8212;and how to stop trusting fake success signals.]]></description><link>https://theconfigreport.com/p/cicd-pipeline-is-a-liar</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-pipeline-is-a-liar</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 02 Mar 2026 15:04:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d2ad9c31-a528-48b1-bba1-f744883783c2_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Your pipeline was green.</p><p>All checks passed.<br>Linting? Clean.<br>Validation? Successful.<br>Approval? Clicked.</p><p>And then production immediately fell over like a folding chair at a backyard BBQ.</p><p>If the pipeline was green&#8230; how did prod still catch on fire?</p><p>Welcome to the finale of the CI/CD series.</p><p>Today we&#8217;re talking about the uncomfortable truth:</p><p>Your pipeline might be lying to you.</p><div><hr></div><h2>Lie #1 &#8212; &#8220;All Tests Passed&#8221;</h2><p>This one feels comforting.</p><p>&#8220;All tests passed&#8221; sounds like:</p><ul><li><p>We&#8217;re safe.</p></li><li><p>We&#8217;re mature.</p></li><li><p>We&#8217;re DevOps now.</p></li></ul><p>But what did those tests actually test?</p><p>For infrastructure teams, most pipelines check structure &#8212; not intent.</p><p>Examples you&#8217;ve probably lived through:</p><ul><li><p>Ansible syntax check passes&#8230; but you referenced the wrong variable group.</p></li><li><p>Terraform validates&#8230; but your plan destroys the wrong resource.</p></li><li><p>Firewall rules commit cleanly&#8230; but you just shadowed a critical ACL.</p></li><li><p>YAML lints perfectly&#8230; and still points production traffic to the wrong subnet.</p></li></ul><p>Passing lint is not the same thing as validating logic.</p><p>A syntax check will happily confirm that your disaster is formatted correctly.</p><p>Most infrastructure pipelines prove that the config is legal.</p><p>They do not prove that it is smart.</p><div><hr></div><h2>Lie #2 &#8212; &#8220;It Worked in QA&#8221;</h2><p>Ah yes. QA.</p><p>Where everything works.</p><p>Because QA:</p><ul><li><p>Has fewer devices.</p></li><li><p>Has less traffic.</p></li><li><p>Has no mystery static routes from 2011.</p></li><li><p>Doesn&#8217;t have that one undocumented NAT rule nobody wants to touch.</p></li></ul><p>Production is messy.</p><p>It has history.<br>It has hotfixes.<br>It has &#8220;temporary&#8221; changes from five years ago.</p><p>And if your environments drift &#8212; which they absolutely do &#8212; then &#8220;it worked in QA&#8221; just means:</p><p>&#8220;It worked in a cleaner universe.&#8221;</p><p>Environment drift is one of the biggest lies pipelines hide.</p><p>Your CI/CD process assumes parity.</p><p>Your network does not.</p><div><hr></div><h2>Lie #3 &#8212; &#8220;We Have a Pipeline, So We&#8217;re Mature&#8221;</h2><p>This one hurts.</p><p>Some pipelines exist for one reason:</p><p>To push changes faster.</p><p>That&#8217;s it.</p><p>No diff validation.<br>No policy enforcement.<br>No blast radius awareness.<br>No rollback plan.<br>No drift detection.</p><p>Just:</p><p>Push button &#8594; Deploy everywhere &#8594; Hope.</p><p>If your pipeline&#8217;s only job is to move changes faster, it&#8217;s not CI/CD.</p><p>It&#8217;s a cannon.</p><p>Speed without guardrails is not maturity.</p><p>It&#8217;s automation with confidence issues.</p><div><hr></div><h2>Lie #4 &#8212; &#8220;Green Means Safe&#8221;</h2><p>Dashboards are addictive.</p><p>Big green checkmarks.<br>Happy pipeline stages.<br>Pretty graphs.</p><p>But green only means:</p><p>&#8220;The steps we defined completed successfully.&#8221;</p><p>If the steps are shallow&#8230;<br>The green is meaningless.</p><p>You can have:</p><ul><li><p>Zero validation of route impact.</p></li><li><p>Zero awareness of overlapping firewall rules.</p></li><li><p>Zero health checks after deployment.</p></li></ul><p>And still get a big green check.</p><p>Your pipeline doesn&#8217;t know your business impact.</p><p>It only knows the commands it ran.</p><div><hr></div><h2>So What Makes a Pipeline Honest?</h2><p>An honest pipeline does more than execute.</p><p>It questions the change.</p><p>At a high level, honest infrastructure pipelines include things like:</p><ul><li><p>Pre-change diffs reviewed before apply.</p></li><li><p>Policy checks (not just syntax checks).</p></li><li><p>Approval gates with context.</p></li><li><p>Rollback strategies that are real &#8212; not &#8220;revert manually.&#8221;</p></li><li><p>Drift detection that catches CLI hotfixes.</p></li><li><p>Post-deploy validation (connectivity, routing, service health).</p></li></ul><p>Honest pipelines try to break your change before production does.</p><p>They are guardrails &#8212; not speedrun buttons.</p><div><hr></div><h2>The Real Goal of CI/CD (For Infrastructure)</h2><p>CI/CD is not about deploying faster.</p><p>It&#8217;s about feedback.</p><p>It&#8217;s about safety.</p><p>It&#8217;s about visibility.</p><p>It&#8217;s about being able to answer:</p><ul><li><p>Who approved this?</p></li><li><p>What changed?</p></li><li><p>Why did it change?</p></li><li><p>Can we roll it back?</p></li><li><p>Does production actually match Git?</p></li></ul><p>Automation doesn&#8217;t remove responsibility.</p><p>It removes excuses.</p><div><hr></div><h2>Want to Build a Pipeline That Doesn&#8217;t Lie?</h2><p>In the <strong>Extended Version</strong>, I break down:</p><ul><li><p>The four levels of infrastructure pipeline maturity</p></li><li><p>What real CI looks like for Ansible, Terraform, and firewall changes</p></li><li><p>Drift detection patterns most teams ignore</p></li><li><p>Blast radius awareness before deployment</p></li><li><p>Rollback strategies that don&#8217;t require panic</p></li><li><p>A practical CI/CD self-assessment checklist you can use immediately</p></li></ul><p>If your pipeline is green but prod still makes you nervous&#8230;<br>that version is for you.</p><div><hr></div><p>That&#8217;s the finale of the CI/CD series.</p><p>You don&#8217;t need trendier tools.</p><p>You need stricter feedback loops.</p><p>And maybe fewer green checkmarks you don&#8217;t trust.</p><p>&#8212; JJ &#8211; Chief Packet Pusher</p>]]></content:encoded></item><item><title><![CDATA[CI/CD for Infra, Not Just App Dev – Extended Version]]></title><description><![CDATA[Deep dive into safe CI/CD pipelines for Ansible, Terraform, and firewall changes. Includes diff gating, approval design, and GitOps strategy.]]></description><link>https://theconfigreport.com/p/cicd-for-infrastructure-extended</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-for-infrastructure-extended</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 16 Feb 2026 15:31:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/04065cb6-b942-48c7-a44c-d53a09e823d5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve made it this far in the series, you already know:</p><p>CI/CD is not Jenkins.<br>It&#8217;s not GitHub Actions.<br>It&#8217;s not a green checkmark.</p><p>And it&#8217;s definitely not &#8220;auto-deploy everything and hope for the best.&#8221;</p><p>Now let&#8217;s talk about what CI/CD actually looks like when the thing you&#8217;re deploying can take down an entire region.</p>
      <p>
          <a href="https://theconfigreport.com/p/cicd-for-infrastructure-extended">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[CI/CD for Infra, Not Just App Dev]]></title><description><![CDATA[Learn how CI/CD applies to infrastructure automation. A practical guide for Ansible, Terraform, firewall rules, and network engineering teams.]]></description><link>https://theconfigreport.com/p/cicd-for-infrastructure</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-for-infrastructure</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 16 Feb 2026 15:11:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/51e4ae0c-d1a5-412c-a6a5-eeb27ef45df2_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You ever notice how every CI/CD example online involves:</p><ul><li><p>A microservice</p></li><li><p>A Docker build</p></li><li><p>47 unit tests</p></li><li><p>And someone in a hoodie saying &#8220;we deploy 200 times a day.&#8221;</p></li></ul><p>Cool.</p><p>Now try doing that with a firewall.</p><div><hr></div><h2>&#8220;CI/CD&#8221; Hits Different in Infrastructure</h2><p>In app dev land, if something breaks, you roll forward, patch it, redeploy.</p><p>In infrastructure land, if something breaks:</p><ul><li><p>The network is down</p></li><li><p>The VPN is down</p></li><li><p>DNS is down</p></li><li><p>Or worse&#8230; everything is <em>kind of</em> up but nothing works</p></li></ul><p>There&#8217;s no blue/green deployment for a core switch.</p><p>There&#8217;s just you&#8230;<br>And a change window&#8230;<br>And the sound of your heartbeat in your ears.</p><div><hr></div><h2>The Lie We&#8217;ve Been Sold</h2><p>Most CI/CD content assumes:</p><ul><li><p>Stateless workloads</p></li><li><p>Rapid iteration</p></li><li><p>Disposable environments</p></li></ul><p>Infrastructure is none of those things.</p><p>Your firewall rules aren&#8217;t disposable.<br>Your BGP config isn&#8217;t a feature flag.<br>Your core switch is not &#8220;just another container.&#8221;</p><p>Yet we keep trying to copy/paste app-dev CI/CD patterns into infrastructure teams and wondering why networking and security people panic.</p><div><hr></div><h2>So What <em>Is</em> CI/CD for Infrastructure?</h2><p>Let&#8217;s translate this into sysadmin language.</p><h3>CI for Infra = Validation Before Damage</h3><p>Continuous Integration for infrastructure is not about deployments.</p><p>It&#8217;s about feedback.</p><p>Before anything touches prod, your pipeline should:</p><ul><li><p>Lint your Ansible playbooks</p></li><li><p>Validate Terraform syntax</p></li><li><p>Check required variables</p></li><li><p>Catch obvious config mistakes</p></li><li><p>Show you the diff</p></li></ul><p>CI for infrastructure means catching broken configs <strong>before you reload prod</strong>.</p><p>If your &#8220;CI&#8221; step only checks YAML formatting&#8230;<br>That&#8217;s not protection.<br>That&#8217;s spell check.</p><div><hr></div><h3>CD for Infra = Ready, Not Reckless</h3><p>Continuous Delivery does <strong>not</strong> mean &#8220;auto-push-to-prod.&#8221;</p><p>It means:</p><ul><li><p>The change is validated</p></li><li><p>The diff is visible</p></li><li><p>The blast radius is understood</p></li><li><p>The rollout is controlled</p></li></ul><p>CD in infrastructure is about being <strong>ready to deploy safely</strong>, not racing to deploy automatically.</p><p>If your pipeline auto-applies firewall rules with no approval gate&#8230;</p><p>That&#8217;s not maturity.</p><p>That&#8217;s optimism.</p><div><hr></div><h2>Pipelines Are Guardrails, Not Speedrun Buttons</h2><p>Some teams treat pipelines like this:</p><blockquote><p>&#8220;The faster we can push changes, the more DevOps we are.&#8221;</p></blockquote><p>Infrastructure doesn&#8217;t reward speed without control.</p><p>A good infra pipeline should:</p><ul><li><p>Block risky diffs</p></li><li><p>Highlight rule explosions</p></li><li><p>Catch missing variables</p></li><li><p>Detect config drift</p></li><li><p>Force visibility before impact</p></li></ul><p>It should slow down disasters.</p><p>Not accelerate them.</p><p>If your pipeline is just a dashboard that turns green&#8230;<br>But no one actually reads the output&#8230;</p><p>It&#8217;s decoration.</p><div><hr></div><h2>Why GitOps Makes Auditors Weirdly Happy</h2><p>Here&#8217;s the part no one tells you:</p><p>Auditors don&#8217;t care about your YAML elegance.</p><p>They care about:</p><ul><li><p>Who changed this</p></li><li><p>When they changed it</p></li><li><p>Who approved it</p></li><li><p>And how you can roll it back</p></li></ul><p>When your infrastructure lives in Git:</p><ul><li><p>Every change has history</p></li><li><p>Every diff is reviewable</p></li><li><p>Every approval is traceable</p></li><li><p>Every rollback is possible</p></li></ul><p>GitOps isn&#8217;t about buzzwords.</p><p>It&#8217;s about making auditors slightly less suspicious of you.</p><p>Which, frankly, is a win.</p><div><hr></div><h2>The Infrastructure Reality Check</h2><p>CI/CD for infra is:</p><ul><li><p>Slower than app dev</p></li><li><p>Higher stakes than app dev</p></li><li><p>Less flashy</p></li><li><p>Way more stressful</p></li></ul><p>But done correctly?</p><p>It gives you:</p><ul><li><p>Predictability</p></li><li><p>Traceability</p></li><li><p>Confidence</p></li><li><p>And fewer 2AM &#8220;why is the core down?&#8221; calls</p></li></ul><p>And that&#8217;s the kind of automation we actually want.</p><div><hr></div><h2>&#128064; In the Extended Version</h2><p>In the paid version, we go deeper and more practical:</p><ul><li><p>A real-world CI pipeline example for Ansible</p></li><li><p>What Terraform validation should <em>actually</em> check</p></li><li><p>How to gate risky diffs (not just syntax errors)</p></li><li><p>Firewall rule testing strategies that don&#8217;t cause outages</p></li><li><p>How to design approval gates that protect prod without slowing engineers to a crawl</p></li><li><p>The infra CI/CD maturity model (and how to know where you really are)</p></li><li><p>What you absolutely should <strong>not</strong> automate</p></li></ul><p>If you&#8217;ve ever stared at a &#8220;green&#8221; pipeline and still felt nervous&#8230;</p><p>The extended version is for you.</p><div><hr></div><p>Automation isn&#8217;t about moving fast.</p><p>It&#8217;s about moving safely, repeatedly, and without drama.</p><p>And in infrastructure&#8230;</p><p>Drama travels at line rate.</p><p>&#8212; JJ &#8211; Chief Packet Pusher.</p>]]></content:encoded></item><item><title><![CDATA[Continuous Delivery vs Deployment – Extended Version]]></title><description><![CDATA[A practical deep dive into Continuous Delivery vs Deployment for infrastructure teams, covering approval gates, change windows, rollback, and risk.]]></description><link>https://theconfigreport.com/p/cicd-continuous-delivery-extended</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-continuous-delivery-extended</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 02 Feb 2026 15:33:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d4d060ba-5bf1-4ec5-abfe-ea924989d9d6_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If the free version was about clearing up confusion, this one is about <strong>reality</strong>.</p><p>Because once you move past definitions, CI/CD immediately collides with:</p><ul><li><p>Change windows</p></li><li><p>Approval boards</p></li><li><p>Compliance</p></li><li><p>Blast radius</p></li><li><p>And people who have PagerDuty scars</p></li></ul><p>This is where most &#8220;DevOps blog posts&#8221; quietly stop being useful.</p>
      <p>
          <a href="https://theconfigreport.com/p/cicd-continuous-delivery-extended">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Continuous Delivery vs Deployment]]></title><description><![CDATA[Learn the real difference between Continuous Delivery and Deployment, and why CI/CD for infrastructure still needs approvals, gates, and humans.]]></description><link>https://theconfigreport.com/p/cicd-continuous-delivery</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-continuous-delivery</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 02 Feb 2026 15:06:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/297214af-37e1-475b-9518-cda4f8875342_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s clear up one of the most cursed misunderstandings in modern tech.</p><p><strong>Continuous Delivery does </strong><em><strong>not</strong></em><strong> mean &#8220;YOLO deploy to prod on every commit.&#8221;</strong></p><p>If that were true, most networking and security teams would have already burned the data center down for warmth.</p><p>Yet somehow, every CI/CD conversation eventually turns into:</p><blockquote><p>&#8220;Wait&#8230; are you saying prod deploys automatically now?&#8221;</p></blockquote><p>No.<br>Absolutely not.<br>Put the pitchfork down.</p><div><hr></div><h2>Continuous Delivery &#8800; Continuous Deployment</h2><p>These two get lumped together like they&#8217;re the same thing.</p><p>They are not.</p><p><strong>Continuous Delivery</strong> means:</p><ul><li><p>Every change is <em>ready</em> to be deployed</p></li><li><p>The system <em>could</em> deploy it safely</p></li><li><p>Humans still decide <strong>when</strong> it actually happens</p></li></ul><p><strong>Continuous Deployment</strong> means:</p><ul><li><p>Every approved change goes straight to prod</p></li><li><p>No pause</p></li><li><p>No human gate</p></li><li><p>Maximum stress</p></li></ul><p>Most infrastructure, networking, and security teams want <strong>Delivery</strong>, not <strong>Deployment</strong>.</p><p>And honestly? That&#8217;s the sane choice.</p><div><hr></div><h2>What Continuous Delivery Actually Looks Like</h2><p>In the real world &#8212; not startup demo land &#8212; CD usually means:</p><ul><li><p>Code merges cleanly</p></li><li><p>Tests and validation pass</p></li><li><p>Config checks don&#8217;t scream</p></li><li><p>Artifacts are built and ready</p></li><li><p><strong>Then it stops</strong></p></li></ul><p>And waits.</p><p>For:</p><ul><li><p>A change window</p></li><li><p>An approval</p></li><li><p>A human with coffee and context</p></li></ul><p><strong>CD is about readiness, not recklessness.</strong></p><p>You&#8217;re shortening the distance between <em>&#8220;this is ready&#8221;</em> and <em>&#8220;we approve this.&#8221;</em><br>Not deleting the approval entirely.</p><div><hr></div><h2>Why Networking &amp; Security Teams Panic Here</h2><p>Because they&#8217;ve seen things.</p><p>They&#8217;ve lived through:</p><ul><li><p>&#8220;Just one quick firewall change&#8221;</p></li><li><p>&#8220;It worked in the lab&#8221;</p></li><li><p>&#8220;Nothing else should be affected&#8221;</p></li><li><p>Famous last words, every time</p></li></ul><p>Infrastructure isn&#8217;t a stateless web app.</p><p>It has:</p><ul><li><p>Blast radius</p></li><li><p>Compliance rules</p></li><li><p>Rollback nightmares</p></li><li><p>Change tickets that will be audited six months later</p></li></ul><p>CD doesn&#8217;t remove those realities.<br>It just gives you <strong>guardrails</strong> instead of vibes.</p><div><hr></div><h2>Approval Gates Are Not a Failure</h2><p>Somewhere along the way, approval gates got labeled as &#8220;anti-DevOps.&#8221;</p><p>That&#8217;s nonsense.</p><p>Approval gates mean:</p><ul><li><p>Risk is acknowledged</p></li><li><p>Changes are reviewed</p></li><li><p>Humans stay accountable</p></li></ul><p>That&#8217;s not slowing things down.<br>That&#8217;s <strong>not being reckless</strong>.</p><p>A fast pipeline that pauses before prod is still a fast pipeline.</p><div><hr></div><h2>Rollback Is Still a Human Problem</h2><p>No matter how clean your pipeline is:</p><ul><li><p>Rollbacks still need decisions</p></li><li><p>Someone still has to say &#8220;undo that&#8221;</p></li><li><p>Context still matters</p></li></ul><p>CD doesn&#8217;t magically fix bad changes.<br>It just makes it easier to <strong>not deploy them in the first place</strong>.</p><p>Which is&#8230; kind of the point.</p><div><hr></div><h2>The Real Truth No One Puts on the Slides</h2><p>Here it is:</p><blockquote><p><strong>Continuous Delivery doesn&#8217;t remove humans.</strong><br><strong>It just makes them faster at approving things.</strong></p></blockquote><p>And that&#8217;s a win.</p><p>Because the goal was never &#8220;no humans.&#8221;<br>The goal was <strong>fewer bad surprises</strong>.</p><div><hr></div><h3>Want the Real-World Version of This?</h3><p>The free version explains <em>why</em> Continuous Delivery isn&#8217;t the same thing as auto-deploying to prod.</p><p>The <strong>Extended (paid) version</strong> gets into the messy, practical stuff most blog posts skip:</p><ul><li><p>Where teams intentionally stop automation &#8212; and why that&#8217;s smart</p></li><li><p>What approval gates actually look like in real CI/CD pipelines</p></li><li><p>How networking and security teams balance speed with blast radius</p></li><li><p>Why &#8220;deploy everything automatically&#8221; is a terrible default for infrastructure</p></li></ul><p>If you&#8217;re responsible for uptime <em>and</em> approvals, the paid version is where this topic actually becomes useful.</p><div><hr></div><p>&#8212; <strong>JJ &#8211; Chief Packet Pusher</strong></p>]]></content:encoded></item><item><title><![CDATA[CI/CD - Continuous Integration – Extended Version]]></title><description><![CDATA[Most teams misunderstand Continuous Integration. Learn how CI catches broken configs early and prevents outages in infrastructure and automation workflows.]]></description><link>https://theconfigreport.com/p/cicd-continuous-integration-extended</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-continuous-integration-extended</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 19 Jan 2026 22:34:06 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5f897c0d-32b9-4bff-a4a6-a72253a4aab5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re reading this, you&#8217;re past the theory.</p><p>The free version explains <strong>what</strong> CI is and <strong>why</strong> people get it wrong.<br>This version is about <strong>how it actually works in the real world</strong> &#8212; with guardrails, tradeoffs, and mistakes you only make once.</p><p>In this issue, we&#8217;re getting into:</p><ul><li><p>What <em>real</em> CI checks look like for infrastructure teams</p></li><li><p>Where most pipelines lie to you</p></li><li><p>&#8230;</p></li></ul>
      <p>
          <a href="https://theconfigreport.com/p/cicd-continuous-integration-extended">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[CI/CD - Continuous Integration]]></title><description><![CDATA[Most teams misunderstand Continuous Integration. Learn how CI catches broken configs early and prevents outages in infrastructure and automation workflows.]]></description><link>https://theconfigreport.com/p/cicd-continuous-integration</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-continuous-integration</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 19 Jan 2026 22:33:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2db2d12d-1057-422f-80f2-5497ab955859_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Everyone loves to talk about &#8220;CI/CD.&#8221;</p><p>Very few people can explain <strong>CI</strong> without immediately pointing at a tool and saying,</p><blockquote><p>&#8220;It&#8217;s basically Jenkins.&#8221;</p></blockquote><p>No.<br>That&#8217;s like saying <strong>seatbelts are a car model</strong>.</p><p>Let&#8217;s fix that.</p><div><hr></div><h2>What Continuous Integration <em>Actually</em> Is</h2><p>Continuous Integration is <strong>about feedback</strong>, not deployments.</p><p>CI answers one simple question:</p><blockquote><p><em>&#8220;If I merged this change right now&#8230; would something obviously break?&#8221;</em></p></blockquote><p>That&#8217;s it.<br>That&#8217;s the whole job.</p><p>CI is the boring but critical step where automation taps you on the shoulder and says:</p><ul><li><p>&#8220;Hey, this YAML is invalid.&#8221;</p></li><li><p>&#8220;That variable doesn&#8217;t exist.&#8221;</p></li><li><p>&#8220;This config will absolutely brick prod.&#8221;</p></li><li><p>&#8220;Are you <em>sure</em> you meant to do that?&#8221;</p></li></ul><p>If CI does its job well, <strong>nothing exciting happens</strong>.</p><p>Which is exactly why people ignore it.</p><div><hr></div><h2>CI Is Not About Shipping Code</h2><p>Let&#8217;s be clear:</p><ul><li><p>&#10060; CI is <strong>not</strong> deploying anything</p></li><li><p>&#10060; CI is <strong>not</strong> restarting services</p></li><li><p>&#10060; CI is <strong>not</strong> touching prod</p></li></ul><p>CI is just running checks <strong>early</strong> so humans don&#8217;t have to learn lessons <strong>late</strong>.</p><p>The goal is <strong>fast, cheap failure</strong>.</p><p>Because fixing a typo in a pull request is:</p><ul><li><p>free</p></li><li><p>quiet</p></li><li><p>doesn&#8217;t involve incident bridges</p></li></ul><p>Fixing it after a reload?</p><ul><li><p>expensive</p></li><li><p>loud</p></li><li><p>now you&#8217;re explaining it to leadership</p></li></ul><div><hr></div><h2>What CI <em>Should</em> Be Doing</h2><p>A sane CI pipeline checks things like:</p><ul><li><p>Syntax validation</p></li><li><p>Linting</p></li><li><p>Unit tests</p></li><li><p>Schema checks</p></li><li><p>Config sanity validation</p></li></ul><p>For infrastructure folks, this looks like:</p><ul><li><p>Does the playbook parse?</p></li><li><p>Does the Terraform plan explode?</p></li><li><p>Does the firewall rule reference an object that doesn&#8217;t exist?</p></li><li><p>Did someone just remove the default route because &#8220;it looked unused&#8221;?</p></li></ul><p>CI doesn&#8217;t need to be smart.<br>It just needs to be <strong>early</strong>.</p><div><hr></div><h2>Why Most Orgs Skip CI and Go Straight to Chaos</h2><p>Because CI is unsexy.</p><p>It doesn&#8217;t:</p><ul><li><p>ship features</p></li><li><p>make dashboards green in exciting ways</p></li><li><p>impress executives</p></li></ul><p>So what happens?</p><ul><li><p>CI becomes optional</p></li><li><p>tests are skipped &#8220;just this once&#8221;</p></li><li><p>pipelines turn into deploy buttons</p></li></ul><p>And now your &#8220;CI/CD pipeline&#8221; is just:</p><blockquote><p><em>manual testing + vibes</em></p></blockquote><p>Which works great until it doesn&#8217;t.</p><div><hr></div><h2>CI for Infrastructure (This Is the Important Part)</h2><p>If you manage servers, networks, or security:</p><p><strong>CI is your last line of defense before muscle memory takes over.</strong></p><p>CI for infrastructure means:</p><ul><li><p>catching broken configs <strong>before</strong> reloads</p></li><li><p>validating changes <strong>before</strong> they touch devices</p></li><li><p>stopping &#8220;just one quick fix&#8221; from becoming an outage</p></li></ul><p>Or, put another way:</p><blockquote><p>CI is how you avoid finding syntax errors via monitoring alerts.</p></blockquote><div><hr></div><h2>The Dirty Secret of CI</h2><p>If your CI pipeline fails all the time, people stop trusting it.</p><p>If it never fails, it&#8217;s probably doing nothing.</p><p>Good CI fails <strong>just often enough</strong> to be annoying<br>and <strong>early enough</strong> to be useful.</p><p>That&#8217;s the balance.</p><div><hr></div><h2>Want the Practical Version? (Paid Subscribers &#128064;)</h2><p>The free version explains <strong>why CI matters</strong>.</p><p>The <strong>paid version</strong> gets into the stuff you actually want to steal:</p><ul><li><p>What <em>real</em> CI checks look like for <strong>Ansible, Terraform, and network configs</strong></p></li><li><p>Examples of <strong>cheap, fast CI validations</strong> that catch breakage without slowing teams down</p></li><li><p>How to design CI so it <strong>fails early without becoming background noise</strong></p></li><li><p>Common &#8220;looks fine in CI&#8221; traps that still blow up prod &#8212; and how to avoid them</p></li></ul><p>Basically:<br><strong>Less philosophy. More guardrails. Fewer outages.</strong></p><p>If you&#8217;re tired of finding broken configs <em>after</em> reloads, the paid version is where the real value lives.</p><p>&#128073; <strong>Upgrade to get the full breakdown.</strong></p><div><hr></div><h2>Coming Up Next</h2><p>In <strong>Issue 3</strong>, we&#8217;re tackling the argument that never dies:</p><p><strong>Continuous Delivery vs Continuous Deployment</strong></p><p>Yes, they&#8217;re different.<br>No, auto-deploying to prod is not required.<br>And yes, this is where networking and security teams start sweating.</p><p>&#8212; JJ &#8211; Chief Packet Pusher</p>]]></content:encoded></item><item><title><![CDATA[CI/CD Without the Cult Language – Extended Version]]></title><description><![CDATA[A practical, infra-focused guide to CI/CD pipelines&#8212;what works, what fails, and how sysadmins can use CI/CD without breaking production.]]></description><link>https://theconfigreport.com/p/cicd-without-the-cult-language-extended</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-without-the-cult-language-extended</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 05 Jan 2026 17:27:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1e31921f-7705-4d2d-8069-0d03467f2247_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If the Free version was the intervention, this is the whiteboard session afterward.</p><p>No buzzwords. No &#8220;DevOps journey.&#8221;<br>Just what CI/CD actually looks like when it&#8217;s not lying to you.</p>
      <p>
          <a href="https://theconfigreport.com/p/cicd-without-the-cult-language-extended">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[CI/CD Without the Cult Language]]></title><description><![CDATA[Confused by CI/CD? This plain-English breakdown explains what CI and CD really mean for sysadmins, infra teams, and IT pros&#8212;no vendor fluff.]]></description><link>https://theconfigreport.com/p/cicd-without-the-cult-language</link><guid isPermaLink="false">https://theconfigreport.com/p/cicd-without-the-cult-language</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 05 Jan 2026 17:20:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6aa3f7d5-4506-4e4d-a09c-619c9aa31a91_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Somewhere in every IT org is a meeting where someone confidently says:</p><blockquote><p>&#8220;Yeah, we do CI/CD.&#8221;</p></blockquote><p>No one asks follow-up questions.<br>No one wants to know <em>how</em>.<br>And everyone quietly hopes the pipeline doesn&#8217;t break before lunch.</p><p>CI/CD has become one of those acronyms&#8212;like &#8220;cloud-native&#8221; or &#8220;zero trust&#8221;&#8212;that people claim because <em>not</em> claiming it feels career-limiting.</p><p>The problem?<br>Most people don&#8217;t actually know what it means.<br>They just know the tools they were handed and the scars they earned.</p><p>Let&#8217;s fix that.</p><div><hr></div><h2>The One-Sentence Definitions (That No One Uses)</h2><p>Here&#8217;s CI/CD without the buzzwords:</p><p><strong>Continuous Integration (CI)</strong><br>Automatically checking that your changes don&#8217;t suck <em>before</em> they get merged.</p><p><strong>Continuous Delivery (CD)</strong><br>Automatically preparing changes so they&#8217;re always deployable&#8212;<em>even if you choose not to deploy them yet.</em></p><p>That&#8217;s it.<br>No unicorns. No DevOps priesthood. No &#8220;digital transformation journey.&#8221;</p><p>CI finds problems early.<br>CD removes panic from release day.</p><p>Neither one magically makes you &#8220;move fast.&#8221;</p><div><hr></div><h2>What CI/CD Is <em>Not</em></h2><p>Let&#8217;s clear the fog:</p><ul><li><p>It&#8217;s <strong>not a tool</strong></p></li><li><p>It&#8217;s <strong>not Jenkins</strong></p></li><li><p>It&#8217;s <strong>not GitHub Actions</strong></p></li><li><p>It&#8217;s <strong>not auto-deploying to prod</strong></p></li><li><p>It&#8217;s <strong>not something you buy from a vendor</strong></p></li></ul><p>If you can&#8217;t describe your CI/CD process without naming a product, you don&#8217;t have CI/CD&#8212;you have software.</p><p>And software without a process is just an outage waiting to happen.</p><div><hr></div><h2>Why CI/CD Feels Fake in Most Organizations</h2><p>CI/CD has a reputation problem because this is how it usually goes:</p><ul><li><p>The pipeline worked in the demo</p></li><li><p>Tests check syntax, not reality</p></li><li><p>Everything is green&#8230; right up until prod explodes</p></li><li><p>Infra gets involved <em>after</em> the failure</p></li></ul><p>So the pipeline becomes:</p><ul><li><p>A checkbox for leadership</p></li><li><p>A dashboard that lies</p></li><li><p>A thing you bypass &#8220;just this once&#8221;</p></li></ul><p>At that point, it&#8217;s not automation&#8212;it&#8217;s theater.</p><div><hr></div><h2>The Sysadmin Reframe (This Is the Important Part)</h2><p>If CI/CD sounds like a dev-only thing, that&#8217;s because it&#8217;s usually explained badly.</p><p>Here&#8217;s the infrastructure translation:</p><p><strong>CI for infra means:</strong></p><ul><li><p>Linting configs</p></li><li><p>Validating syntax</p></li><li><p>Catching bad changes <em>before</em> they touch real devices</p></li></ul><p><strong>CD for infra means:</strong></p><ul><li><p>Controlled, repeatable releases</p></li><li><p>Predictable rollbacks</p></li><li><p>Fewer late-night SSH heroics</p></li></ul><p>Or said another way:</p><blockquote><p>CI/CD is just change management that doesn&#8217;t hate you back.</p></blockquote><p>It doesn&#8217;t remove humans.<br>It removes <em>surprises</em>.</p><div><hr></div><h2>Why This Matters (Even If You&#8217;re Not &#8220;Doing DevOps&#8221;)</h2><p>You don&#8217;t need microservices.<br>You don&#8217;t need containers.<br>You don&#8217;t need a startup hoodie.</p><p>If you manage:</p><ul><li><p>Firewalls</p></li><li><p>Switches</p></li><li><p>Servers</p></li><li><p>Cloud configs</p></li><li><p>Infrastructure-as-code</p></li></ul><p>&#8230;you&#8217;re already living in CI/CD territory&#8212;whether you call it that or not.</p><p>The difference is whether your process catches mistakes early or lets them reach production at full speed.</p><div><hr></div><h2>What&#8217;s Coming Next</h2><p>This is the kickoff. Not the deep dive.</p><p>In the next issue, we&#8217;ll zoom in on the most misunderstood part of the whole thing:</p><blockquote><p><strong>Continuous Integration &#8212; why everyone skips it, and why that makes deployments feel cursed.</strong></p></blockquote><p>Paid readers will get real-world examples and practical breakdowns.<br>Free readers will still get the clarity (and the sarcasm).</p><p>Either way, no cult robes required.</p><div><hr></div><p><strong>&#8212; JJ &#8211; Chief Packet Pusher</strong></p>]]></content:encoded></item><item><title><![CDATA[So… Should You Actually Move to the Cloud? - Extended Version]]></title><description><![CDATA[A Survival Guide for On-Prem Brains in a Pay-As-You-Panic World]]></description><link>https://theconfigreport.com/p/should-you-move-to-the-cloud-extended</link><guid isPermaLink="false">https://theconfigreport.com/p/should-you-move-to-the-cloud-extended</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 22 Dec 2025 15:56:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!P-1l!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9dca975-662b-4840-a6b8-c7e2d30746d9_626x626.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you made it this far in the series, congrats &#8212; you now understand the cloud better than half the people selling it.</p><p>This version answers the question executives ask and engineers fear:</p><blockquote><p>&#8220;So&#8230; should we move everything to the cloud?&#8221;</p></blockquote><h3>&#9989; A Real Cloud Decision Checklist</h3><p>Move to the cloud <strong>only if most of these are true</strong>:</p><ul><li><p>Workloads scale unpredictably</p></li><li><p>You deploy of&#8230;</p></li></ul>
      <p>
          <a href="https://theconfigreport.com/p/should-you-move-to-the-cloud-extended">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[So… Should You Actually Move to the Cloud?]]></title><description><![CDATA[A Survival Guide for On-Prem Brains in a Pay-As-You-Panic World]]></description><link>https://theconfigreport.com/p/should-you-move-to-the-cloud</link><guid isPermaLink="false">https://theconfigreport.com/p/should-you-move-to-the-cloud</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 22 Dec 2025 15:47:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!P-1l!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9dca975-662b-4840-a6b8-c7e2d30746d9_626x626.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s be honest.</p><p>By now, you&#8217;ve learned that the cloud is:</p><ul><li><p>Not magic</p></li><li><p>Not cheaper by default</p></li><li><p>Not simpler</p></li><li><p>And definitely not &#8220;set it and forget it&#8221;</p></li></ul><p>It&#8217;s just someone else&#8217;s data center&#8230;<br>with better marketing&#8230;<br>and a bill that updates in real time to shame you.</p><p>So the real question isn&#8217;t <em>&#8220;What is the cloud?&#8221;</em><br>It&#8217;s <strong>&#8220;Should </strong><em><strong>we</strong></em><strong> actually be using it?&#8221;</strong></p><h3>&#129300; When the Cloud Actually Makes Sense</h3><p>The cloud is great when you need:</p><ul><li><p><strong>Elastic workloads</strong> (spikes, seasonal traffic, unpredictable usage)</p></li><li><p><strong>Rapid deployments</strong> without waiting on hardware</p></li><li><p><strong>Global reach</strong> without building your own mini-internets</p></li><li><p><strong>Managed services</strong> because you&#8217;re tired and understaffed</p></li></ul><p>If your environment looks like:</p><blockquote><p>&#8220;Sometimes 10 users, sometimes 10,000, nobody knows why&#8221;</p></blockquote><p>Congrats &#8212; the cloud might save your sanity.</p><h3>&#129521; When On-Prem Is Still King</h3><p>On-prem still wins when:</p><ul><li><p>Workloads are <strong>predictable</strong></p></li><li><p>Latency actually matters</p></li><li><p>Compliance teams breathe down your neck</p></li><li><p>You already own the hardware</p></li><li><p>You don&#8217;t want your CFO asking why a test VM costs $800/month</p></li></ul><p>If your setup has:</p><blockquote><p>&#8220;The same apps, same users, same traffic&#8230; for the last 7 years&#8221;</p></blockquote><p>You&#8217;re not <em>behind</em>.<br>You&#8217;re just&#8230; <strong>stable</strong>.</p><h3>&#129504; The Big Lie Nobody Tells You</h3><p>The cloud didn&#8217;t remove complexity.</p><p>It <strong>relocated it</strong>.</p><p>Instead of:</p><ul><li><p>VLANs</p></li><li><p>Switchports</p></li><li><p>Firewalls</p></li></ul><p>You now manage:</p><ul><li><p>IAM policies</p></li><li><p>Service limits</p></li><li><p>Inter-service permissions</p></li><li><p>Billing alerts</p></li><li><p>And permissions that break things silently</p></li></ul><p>Same stress.<br>New UI.<br>Higher invoice.</p><h3>&#129534; The Hybrid Reality</h3><p>Most real environments end up here:</p><ul><li><p>Some workloads on-prem</p></li><li><p>Some in <strong>Amazon Web Services</strong></p></li><li><p>Some in <strong>Microsoft Azure</strong></p></li><li><p>One forgotten project in <strong>Google Cloud Platform</strong></p></li><li><p>And a VPN held together by hope</p></li></ul><p>Hybrid isn&#8217;t a failure.<br>It&#8217;s adulthood.</p><h3>&#129504; Final Translation</h3><p>If this series taught you anything, it&#8217;s this:</p><blockquote><p>The cloud didn&#8217;t change IT fundamentals.<br>It changed <strong>who you yell at when things break</strong>.</p></blockquote><p>The skills still matter.<br>The concepts still apply.<br>The buzzwords just got louder.</p><div><hr></div><p>&#128161; <strong>Paid subscribers get the extended version</strong>, including:</p><ul><li><p>A real decision checklist (cloud vs on-prem vs hybrid)</p></li><li><p>Cost-control rules that actually work</p></li><li><p>IAM survival strategies</p></li><li><p>Migration myths to ignore</p></li><li><p>And what <em>not</em> to lift-and-shift unless you enjoy pain</p></li></ul><p>&#8212;<br><strong>JJ &#8211; Chief Packet Pusher</strong></p>]]></content:encoded></item><item><title><![CDATA[The Cloud Control Panel: Where Sanity Goes to Die - Extended Version]]></title><description><![CDATA[IAM, Billing Dashboards, and Other Dark Arts]]></description><link>https://theconfigreport.com/p/the-cloud-control-panel-where-sanity-extended</link><guid isPermaLink="false">https://theconfigreport.com/p/the-cloud-control-panel-where-sanity-extended</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 08 Dec 2025 16:08:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3aa4af2d-0a54-4858-bb37-976a3824c242_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the extended cut &#8212; the version where we get into <strong>actual examples, commands, diagrams-in-text</strong>, and the &#8220;stuff you wish cloud training actually explained.&#8221;</p><p>Let&#8217;s dive deeper.</p>
      <p>
          <a href="https://theconfigreport.com/p/the-cloud-control-panel-where-sanity-extended">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Cloud Control Panel: Where Sanity Goes to Die]]></title><description><![CDATA[IAM, Billing Dashboards, and Other Dark Arts]]></description><link>https://theconfigreport.com/p/the-cloud-control-panel-where-sanity</link><guid isPermaLink="false">https://theconfigreport.com/p/the-cloud-control-panel-where-sanity</guid><dc:creator><![CDATA[JJ – Chief Packet Pusher]]></dc:creator><pubDate>Mon, 08 Dec 2025 16:03:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3c9444b9-9d8c-43fb-a670-8e95ac48fce2_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to <em>The Cloud Decoder</em>, the sysadmin translation guide for when the cloud interface lies, the bill cries, and IAM denies.</p><p>This is the <strong>final chapter of the beginner series</strong>, and oh boy&#8230; we saved the worst for last:<br><strong>Cloud Control Panels</strong> &#8212; the place where dreams go to 403.</p><p>Today we&#8217;re decoding three of the cloud&#8217;s most chaotic realms:</p><ol><li><p><strong>IAM (Identity &amp; Access Management)</strong></p></li><li><p><strong>Billing Dashboards &amp; Cost Visibility</strong></p></li><li><p><strong>Automation &amp; IaC</strong></p></li><li><p><em>And yes, a final cheat sheet to survive future cloud meetings.</em></p></li></ol><p>Let&#8217;s go.</p><div><hr></div><h2>&#128272; IAM: The Final Boss of the Cloud</h2><p>IAM is the part of the cloud designed to teach humility.</p><p>On-prem, access is simple:</p><ul><li><p>Add the user to the right AD group.</p></li><li><p>Log them out.</p></li><li><p>Log them in.</p></li><li><p>Boom. Done.</p></li></ul><p>Cloud IAM:<br>&#8220;No.&#8221;<br>&#8220;No, but with JSON.&#8221;<br>&#8220;No, but you <em>almost</em> had it.&#8221;<br>&#8220;No, but now the whole environment is broken.&#8221;</p><p>Every provider has their own special flavor:</p><ul><li><p><strong>AWS IAM:</strong> A choose-your-own-adventure book where every wrong choice returns a 403.</p></li><li><p><strong>Azure RBAC:</strong> Permission inheritance logic crafted in a labyrinth by Microsoft Minotaurs.</p></li><li><p><strong>GCP IAM:</strong> <em>Actually</em> the easiest&#8230; but still somehow confusing because Google names roles like Pok&#233;mon evolutions.</p></li></ul><p><em>On-prem equivalent:</em><br>It&#8217;s AD, but every OU is a grenade.</p><div><hr></div><h2>&#128184; Billing Dashboards: Where Happiness Is a Line Graph</h2><p>Cloud sales pitch: &#8220;Pay for what you use!&#8221;<br>Reality: &#8220;Pay for what you used, what you might use, what someone clicked once, and also for that egress you didn&#8217;t notice.&#8221;</p><p>Billing dashboards aren&#8217;t dashboards &#8212; they&#8217;re <strong>escape rooms</strong>.<br>You must solve puzzles like:</p><ul><li><p>&#8220;Why did my bill triple overnight?&#8221;</p></li><li><p>&#8220;Who spun up a 128-CPU instance for five minutes?&#8221;</p></li><li><p>&#8220;Why is data leaving my bucket&#8230; where is it going&#8230; WHO IS PAYING FOR THIS?!&#8221;</p></li></ul><p>Welcome to <strong>FinOps Lite&#8482;</strong>, the free trial nobody asked for.</p><p><em>On-prem equivalent:</em><br>Your CFO yelling about the power bill every July.</p><div><hr></div><h2>&#129302; Automation &amp; IaC: How Adults Use the Cloud</h2><p>Eventually you will get tired of clicking around the control panel like it&#8217;s Minesweeper.<br>Enter:</p><ul><li><p><strong>Terraform</strong> &#8212; &#8220;What if config files could ruin prod globally?&#8221;</p></li><li><p><strong>CloudFormation</strong> &#8212; For people who think YAML isn&#8217;t painful enough yet.</p></li><li><p><strong>Ansible</strong> &#8212; The good friend who buys you coffee and says, &#8220;Let&#8217;s automate that disaster before it happens again.&#8221;</p></li></ul><p>IaC exists for one main reason:<br><strong>Cloud GUIs were designed by gremlins.</strong></p><div><hr></div><h2>&#129517; The Cheat Sheet: What to Google When Lost</h2><p>Because you <em>will</em> get lost. The cloud control panel likes to rearrange things when you aren&#8217;t looking.</p><p>Cheat sheet of survival queries:</p><ul><li><p>&#8220;AWS IAM which policy do I need for X&#8221;</p></li><li><p>&#8220;Azure cost explorer why is everything pink&#8221;</p></li><li><p>&#8220;GCP roles viewer vs editor vs why does this exist&#8221;</p></li><li><p>&#8220;Terraform destroy accidentally help panic&#8221;</p></li><li><p>&#8220;Why is my cloud bill so high&#8221; (every month)</p></li></ul><p>Congratulations:<br>If you&#8217;ve followed Issues 1&#8211;5, you now speak Cloudish, understand the madness, and can hold your own in cloud meetings without sweating through your shirt.</p><p>Next step?<br>Stick around &#8212; the <strong>Advanced Cloud Decoder</strong> series is coming.</p><p>&#8212; JJ &#8211; Chief Packet Pusher</p>]]></content:encoded></item></channel></rss>