<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Terraform on Practical Nerdery</title>
    <link>https://zmoog.dev/tags/terraform/</link>
    <description>Recent content in Terraform on Practical Nerdery</description>
    <generator>Hugo -- 0.144.0</generator>
    <language>en</language>
    <lastBuildDate>Thu, 07 Aug 2025 17:44:00 +0000</lastBuildDate>
    <atom:link href="https://zmoog.dev/tags/terraform/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Remove a resource from the Terraform state</title>
      <link>https://zmoog.dev/tils/terraform/remove-a-resource-from-the-state/</link>
      <pubDate>Thu, 07 Aug 2025 17:44:00 +0000</pubDate>
      <guid>https://zmoog.dev/tils/terraform/remove-a-resource-from-the-state/</guid>
      <description>&lt;p&gt;Sometimes you&amp;rsquo;re working on a codebase new to you and &lt;code&gt;terraform destroy&lt;/code&gt; fails with a weird error like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;╷
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│ Error: Get &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost/api/v1/namespaces/kube-public/configmaps/local-registry-hosting&amp;#34;&lt;/span&gt;: dial tcp &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;::1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;:80: connect: connection refused
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   with kubernetes_config_map.registry,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   on main.tf line 97, in resource &lt;span class=&#34;s2&#34;&gt;&amp;#34;kubernetes_config_map&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;registry&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   97: resource &lt;span class=&#34;s2&#34;&gt;&amp;#34;kubernetes_config_map&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;registry&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;╵
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This is probably an edge case in the &lt;code&gt;kubernetes_config_map&lt;/code&gt; combined with EKS.&lt;/p&gt;
&lt;p&gt;You should fix the root cause, but if it&amp;rsquo;s late and all you want is tear down the test EKS cluster, you can remove the offending configmap from the state:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Sometimes you&rsquo;re working on a codebase new to you and <code>terraform destroy</code> fails with a weird error like:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">╷
</span></span><span class="line"><span class="cl">│ Error: Get <span class="s2">&#34;http://localhost/api/v1/namespaces/kube-public/configmaps/local-registry-hosting&#34;</span>: dial tcp <span class="o">[</span>::1<span class="o">]</span>:80: connect: connection refused
</span></span><span class="line"><span class="cl">│
</span></span><span class="line"><span class="cl">│   with kubernetes_config_map.registry,
</span></span><span class="line"><span class="cl">│   on main.tf line 97, in resource <span class="s2">&#34;kubernetes_config_map&#34;</span> <span class="s2">&#34;registry&#34;</span>:
</span></span><span class="line"><span class="cl">│   97: resource <span class="s2">&#34;kubernetes_config_map&#34;</span> <span class="s2">&#34;registry&#34;</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">│
</span></span><span class="line"><span class="cl">╵
</span></span></code></pre></td></tr></table>
</div>
</div><p>This is probably an edge case in the <code>kubernetes_config_map</code> combined with EKS.</p>
<p>You should fix the root cause, but if it&rsquo;s late and all you want is tear down the test EKS cluster, you can remove the offending configmap from the state:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="c1"># search for the offending resource in the state</span>
</span></span><span class="line"><span class="cl">$ terraform state list <span class="p">|</span> grep config
</span></span><span class="line"><span class="cl">kubernetes_config_map.registry
</span></span><span class="line"><span class="cl">module.eks.terraform_data.kubeconfig
</span></span></code></pre></td></tr></table>
</div>
</div><p>Remove the configmap from the state:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">$ terraform state rm kubernetes_config_map.registry
</span></span><span class="line"><span class="cl">Removed kubernetes_config_map.registry
</span></span><span class="line"><span class="cl">Successfully removed <span class="m">1</span> resource instance<span class="o">(</span>s<span class="o">)</span>.
</span></span></code></pre></td></tr></table>
</div>
</div><p>And continue destroying the EKS cluster, and start troubleshooting the root cause tomorrow morning with a fresh mind.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
