<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CloudStorage on LIFELOG</title>
    <link>/tags/cloudstorage/</link>
    <description>Recent content in CloudStorage on LIFELOG</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <copyright>© 2026 0222-nnn</copyright>
    <lastBuildDate>Tue, 11 Aug 2026 00:00:00 +0900</lastBuildDate><atom:link href="/tags/cloudstorage/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Terraform StateをCloud Storage Remote Backendへ移行してみた</title>
      <link>/blog/20260811_terraform_gcp_advanced_gcs_remote_backend/</link>
      <pubDate>Tue, 11 Aug 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/20260811_terraform_gcp_advanced_gcs_remote_backend/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;概要 
    &lt;div id=&#34;概要&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a6%82%e8%a6%81&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;Local Stateのままでは、PCを変えると続きを操作できません。複数人で同じ構成を触ることもできません。&lt;/p&gt;
&lt;p&gt;では State Bucket 自体をTerraformで作ればよいのか。今度は、そのStateをどこに置くのかという循環にぶつかります。&lt;/p&gt;
&lt;p&gt;解き方は、Bucketを作る構成と、それを使う構成を分けることです。Bootstrap構成はLocal Stateで作ります。&lt;code&gt;demo/&lt;/code&gt;側は、そのBucketをRemote Stateとして参照する形にしました。&lt;/p&gt;
&lt;p&gt;Terraformの基本操作は前提としています。Local Stateしか使ったことがない方向けです。&lt;/p&gt;
&lt;p&gt;State Locking、Workspaceによる環境分離、CI/CDからのBackend利用は扱いません。削除順序を誤るとStateだけが残るため、後片付けの手順も確認します。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;検証すること 
    &lt;div id=&#34;検証すること&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a4%9c%e8%a8%bc%e3%81%99%e3%82%8b%e3%81%93%e3%81%a8&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Bootstrap構成でVersioning付きState Bucketを作成できること&lt;/li&gt;
&lt;li&gt;別のTerraform構成をGCS Backendで初期化できること&lt;/li&gt;
&lt;li&gt;Remote State Objectと過去世代を確認できること&lt;/li&gt;
&lt;li&gt;Consumer、Backendの安全な削除順序を確認できること&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;relative group&#34;&gt;前提環境 
    &lt;div id=&#34;前提環境&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e5%89%8d%e6%8f%90%e7%92%b0%e5%a2%83&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Google Cloud CLIとApplication Default Credentials（ADC）&lt;/li&gt;
&lt;li&gt;Terraform 1.5以降&lt;/li&gt;
&lt;li&gt;Cloud StorageとBucket IAMを操作できる検証用Google Cloud Project&lt;/li&gt;
&lt;li&gt;検証時のバージョン：Terraform 1.14.3、google 7.43.0&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;relative group&#34;&gt;今回の構成 
    &lt;div id=&#34;今回の構成&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e4%bb%8a%e5%9b%9e%e3%81%ae%e6%a7%8b%e6%88%90&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;構成を2つに分けます。Bucketを作る側はLocal Stateのまま、それを使う側がRemote Stateを参照します。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
