<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Versions on Tiago Carrondo</title><link>https://carrondo.pt/en/tags/versions/</link><description>Recent content in Versions on Tiago Carrondo</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 05 Jun 2020 00:00:00 +0000</lastBuildDate><atom:link href="https://carrondo.pt/en/tags/versions/index.xml" rel="self" type="application/rss+xml"/><item><title>Moving Terraform resource from one remote state to another (with different versions)</title><link>https://carrondo.pt/en/posts/2020-06-05-moving-terraform-resource-from-one-remote-state-to-another/</link><pubDate>Fri, 05 Jun 2020 00:00:00 +0000</pubDate><guid>https://carrondo.pt/en/posts/2020-06-05-moving-terraform-resource-from-one-remote-state-to-another/</guid><description>&lt;hr&gt;
&lt;h2 id="the-task"&gt;
 The task
 &lt;a class="heading-link" href="#the-task"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I need to move Terraform resources from a v11 to a newer (up-to-date, v12) backend.&lt;/p&gt;
&lt;h3 id="limitations"&gt;
 Limitations
 &lt;a class="heading-link" href="#limitations"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;some resources couldn&amp;rsquo;t be recreated (destroyed);&lt;/li&gt;
&lt;li&gt;some resources couldn&amp;rsquo;t be imported.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="the-basic-concepts"&gt;
 The basic concepts
 &lt;a class="heading-link" href="#the-basic-concepts"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;When we move resources to a new backend we usually use this formula:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;NEW_BACKEND_FOLDER&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform state pull &amp;gt; moving_terraform.tfstate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;ACTUAL_BACKEND_FOLDER&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform state mv -state-out&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;NEW_BACKEND_FOLDER&amp;gt;/moving_terraform.tfstate module.some_name module.some_name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;NEW_BACKEND_FOLDER&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform state push moving_terraform.tfstate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="issues"&gt;
 Issues
 &lt;a class="heading-link" href="#issues"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;state mv from v11 backend to v12 isn&amp;rsquo;t supported:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Failed to load state: Terraform 0.11.8 does not support state version 4, please update.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;all docs I found only refer &lt;code&gt;state mv&lt;/code&gt; between backends using the same version.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-solution"&gt;
 The solution
 &lt;a class="heading-link" href="#the-solution"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;ACTUAL_BACKEND_FOLDER&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform state pull &amp;gt; moving_terraform_v11.tfstate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;NEW_BACKEND_FOLDER&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform state pull &amp;gt; moving_terraform_v12.tfstate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform state mv -state &amp;lt;ACTUAL_BACKEND_FOLDER&amp;gt;/moving_terraform_v11.tfstate -state-out&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;NEW_BACKEND_FOLDER&amp;gt;/moving_terraform_v12.tfstate module.some_name module.some_name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform state push moving_terraform_v12.tfstate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;ACTUAL_BACKEND_FOLDER&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ terraform state rm module.some_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Done!&lt;/p&gt;</description></item></channel></rss>