<?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>IaC on Ops FreeEdge</title>
    <link>https://ops.freeedge.uk/tags/iac/</link>
    <description>Recent content in IaC on Ops FreeEdge</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 04 Apr 2026 03:00:00 +0000</lastBuildDate>
    <atom:link href="https://ops.freeedge.uk/tags/iac/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Tailscale Terraform Provider：基础设施即代码与 Tailnet 策略管理深度解析</title>
      <link>https://ops.freeedge.uk/posts/tailscale-terraform-provider/</link>
      <pubDate>Sat, 04 Apr 2026 03:00:00 +0000</pubDate>
      <guid>https://ops.freeedge.uk/posts/tailscale-terraform-provider/</guid>
      <description>&lt;h1 id=&#34;tailscale-terraform-provider基础设施即代码与-tailnet-策略管理深度解析&#34;&gt;Tailscale Terraform Provider：基础设施即代码与 Tailnet 策略管理深度解析&lt;/h1&gt;
&lt;h2 id=&#34;引言&#34;&gt;引言&lt;/h2&gt;
&lt;p&gt;在现代 DevOps 实践中，基础设施即代码（Infrastructure as Code, IaC）已成为标准范式。Tailscale 作为一款零配置 VPN 解决方案，其 Tailnet（Tailscale 网络）策略管理同样可以借助 Terraform Provider 实现自动化。通过 Tailscale 官方维护的 Terraform Provider（&lt;code&gt;tailscale/tailscale&lt;/code&gt;），用户能够以声明式方式管理 ACL（访问控制列表）、DNS 配置、设备标签、认证密钥（Auth Keys）和子网路由等核心资源，实现 GitOps 工作流的全自动化。&lt;/p&gt;
&lt;p&gt;本文将深入剖析该 Provider 的架构、核心资源、使用示例、GitOps 集成、状态管理和从手动配置向 IaC 迁移的策略。无论是初学者还是资深运维工程师，都能从中获益。&lt;/p&gt;
&lt;h2 id=&#34;tailscale-terraform-provider-概述&#34;&gt;Tailscale Terraform Provider 概述&lt;/h2&gt;
&lt;p&gt;Tailscale Terraform Provider 是 Tailscale 团队基于 Terraform Plugin SDK 开发的官方插件，托管于 &lt;a href=&#34;https://registry.terraform.io/providers/tailscale/tailscale/latest&#34;&gt;Terraform Registry&lt;/a&gt;。其源代码位于 &lt;a href=&#34;https://github.com/tailscale/terraform-provider-tailscale&#34;&gt;GitHub&lt;/a&gt;，支持 Tailscale API v2 的所有相关端点。&lt;/p&gt;
&lt;h3 id=&#34;支持的核心资源&#34;&gt;支持的核心资源&lt;/h3&gt;
&lt;p&gt;Provider 支持以下关键资源，用于 Tailnet 策略管理：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;资源名称&lt;/th&gt;
          &lt;th&gt;描述&lt;/th&gt;
          &lt;th&gt;主要功能&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tailscale_acl&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Tailnet 策略文件（ACL）&lt;/td&gt;
          &lt;td&gt;定义 grants、hosts、ACL 等策略规则&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tailscale_tailnet_key&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;认证密钥（Auth Key）&lt;/td&gt;
          &lt;td&gt;生成可重用、临时、预授权、带标签密钥&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tailscale_dns_nameservers&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;全局 DNS 名称服务器&lt;/td&gt;
          &lt;td&gt;配置 nameservers 和 fallback&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tailscale_dns_search_paths&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;分割 DNS 搜索路径&lt;/td&gt;
          &lt;td&gt;限制域名到特定 nameservers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tailscale_dns_preferences&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;MagicDNS 偏好设置&lt;/td&gt;
          &lt;td&gt;启用/禁用 MagicDNS、overrides 等&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tailscale_device_tags&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;设备标签&lt;/td&gt;
          &lt;td&gt;为设备应用 ACL 标签&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tailscale_device_subnet_routes&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;设备子网路由&lt;/td&gt;
          &lt;td&gt;广告子网路由&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tailscale_device_authorization&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;设备授权&lt;/td&gt;
          &lt;td&gt;批准设备加入 Tailnet&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些资源覆盖了 Tailnet 策略的 90% 以上场景，支持 Hujson/JSON 格式策略定义。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
