<?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>阿里云 on 维克的博客</title><link>https://blogs.wuvikr.top/tags/%E9%98%BF%E9%87%8C%E4%BA%91/</link><description>Recent content in 阿里云 on 维克的博客</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 04 Sep 2026 16:08:53 +0800</lastBuildDate><atom:link href="https://blogs.wuvikr.top/tags/%E9%98%BF%E9%87%8C%E4%BA%91/index.xml" rel="self" type="application/rss+xml"/><item><title>Terraform 状态文件管理</title><link>https://blogs.wuvikr.top/posts/terraform%E7%8A%B6%E6%80%81%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86/</link><pubDate>Fri, 04 Sep 2026 16:08:53 +0800</pubDate><guid>https://blogs.wuvikr.top/posts/terraform%E7%8A%B6%E6%80%81%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86/</guid><description>&lt;h1 id="1-为什么要把-state-搬到云上">1. 为什么要把 State 搬到「云上」&lt;/h1>
&lt;p>State 文件是 Terraform 的「账本」：它记录云上到底有哪些资源、各自的属性。本地存放 State 有三个硬伤：&lt;/p>
&lt;ul>
&lt;li>绑定机器：State 在 A 电脑上，B 电脑 apply 就会&amp;quot;失忆&amp;quot;，容易把资源重建一遍。&lt;/li>
&lt;li>无法协作：两个人同时改同一个环境，互相覆盖，状态文件乱套。&lt;/li>
&lt;li>安全隐患：本地文件易丢，而且里面可能含有明文密码等敏感信息，因此也不建议上传到 gitlab 等代码托管平台。&lt;/li>
&lt;/ul>
&lt;p>解决办法就是 Terraform 的 &lt;strong>Backend 机制&lt;/strong>：&lt;strong>用阿里云 OSS 存 State（集中、加密、可回滚），用 Tablestore 提供加锁（防止多人并发操作冲突）&lt;/strong>。&lt;/p>
&lt;h1 id="2-工作原理">2. 工作原理&lt;/h1>
&lt;p>每次执行 Terraform 命令，OSS Backend 都会走「加锁 → 干活 → 放锁」三步：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-mermaid" data-lang="mermaid">flowchart LR
A[terraform apply] --&amp;gt; B{从 Tablestore 拿 LockID}
B -- 已存在 --&amp;gt; C[报错：有人在操作]
B -- 不存在 --&amp;gt; D[生成并存入 LockID]
D --&amp;gt; E[读写 OSS 里的 State 文件]
E --&amp;gt; F[释放 LockID]
&lt;/code>&lt;/pre>&lt;ul>
&lt;li>&lt;strong>有锁&lt;/strong> → 说明有人正在操作，或上次操作异常退出，直接报错&lt;/li>
&lt;li>&lt;strong>无锁&lt;/strong> → 自动生成 LockID 存入 Tablestore，操作完成后更新 OSS 中的 State，再释放锁&lt;/li>
&lt;/ul>
&lt;h1 id="3-第一步创建存储--锁资源">3. 第一步：创建「存储 + 锁」资源&lt;/h1>
&lt;p>在正式使用前，要先准备一个 OSS Bucket 和一个 Tablestore 实例/表。它们本身也是云资源，所以也可以用 Terraform 自己建。&lt;/p></description></item></channel></rss>