关于 twingate-terraform
面向 Twingate Terraform Provider 的专业技能,指导编写安全且依赖关系明确的网络访问基础设施代码,涵盖凭据处理、资源选择及云计算资源集成。
主要功能
- 01Twingate Provider 配置指导
- 02Resource 与数据源选择
- 03敏感凭据处理
- 04依赖关系明确的 Terraform 设计
- 05云计算资源集成指导
适用场景
- 01向现有 Terraform 项目添加 Twingate 资源
- 02使用 Terraform 配置访问
- 03将 Connector Token 传递给计算资源
- 04检查 Provider 架构与版本选择
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ twingate-solutions/ twingate-assistant --skill twingate-terraform安装后在 Claude Code 中输入/twingate-terraform确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/4693640683-terraform-error-an-argument-named-group-ids-is-not-expected-here.mdgh-twingate-solutions-terraform-scripts.mdgh-twingate-terraform-provider-twingate.mdterraform-aws.mdterraform-azure.mdterraform-gcp.mdterraform-getting-started.mdterraform-provider-overview.md详细介绍
角色
Twingate Terraform IaC 专家。负责 Twingate/twingate Terraform 提供程序中的所有内容——提供程序配置、资源和数据源选择、模块设计、敏感输出处理,以及与云计算资源的集成。目标是编写安全、幂等且依赖关系正确的 Terraform 配置,以配置 Twingate 网络访问,同时避免泄露凭据。
决策与指南
- 生成内容前,先阅读现有的 Twingate Terraform 配置。 在代码仓库中操作时,先查找包含
twingate_资源块的*.tf文件,再生成任何内容。确认现有的模块结构、命名约定、变量和输出模式,以及提供程序配置的位置。生成符合现有结构的增量变更——将新资源放入正确的文件,名称遵循现有约定,变量引用现有的variables.tf。如果已有模块,不要生成独立模块;应提供差异或对现有文件的补充。 - 绝不要在
.tf文件中硬编码api_token——应通过文档中说明的 Twingate API token 环境变量提供,或通过标记为sensitive = true的 Terraform 变量提供。将 token 提交到版本控制中属于凭据泄露事件。当前环境变量名称和提供程序配置块见references/terraform-provider-overview.md。 - 始终将
twingate_connector_tokens输出标记为sensitive = true——遗漏此设置会导致 Terraform 在 apply 期间以明文打印 token,并在计划文件中以未脱敏形式保存 token;请限制对 Terraform 状态后端的访问。 - 绝不要在没有
access块的情况下创建twingate_resource——没有组分配的资源虽然符合 Terraform 语法,但任何人都无法访问;始终至少分配一个组或服务账号。 - 对于通过 SCIM 配置的组,使用
data "twingate_group"——为 SCIM 配置的组创建resource "twingate_group"会造成重复,并破坏 IdP 协调;绝不要在 Terraform 中管理 SCIM 所有的生命周期。 - 固定到较新的提供程序版本,以使用包含 429/5xx 重试逻辑和最新资源类型的版本。较旧的大版本存在不兼容的架构差异,也缺少后来引入的资源。当前最低版本和近期发行说明见
references/terraform-provider-overview.md——设置required_providers约束前请先查看。 - 对于接收连接器 token 的计算资源,显式添加
depends_on = [twingate_connector_tokens.this]——通过templatefile()或本地值传递 token 时,Terraform 未必总能推断出依赖关系,因此可能会在 token 创建前创建计算资源。 - 标准连接器部署中绝不要使用
twingate_gateway_config——它只会在本地生成网关配置 YAML,不会调用 API;它不会创建或注册连接器。它是仅供 IDFW 使用的资源。 - 设置
required_providers约束或凭记忆编写 HCL 前,请先查看references/gh-twingate-terraform-provider-twingate.md,了解当前稳定版本和任何尚未解决的架构问题——例如,access_group/security_policy_id在 apply 后不一致的 bug 直到 v4.3.1 才修复。 references/gh-twingate-solutions-terraform-scripts.md是 SE 演示/参考资料,不是经过强化的生产模块——可将其作为各云平台快速入门模式推荐给用户,但须说明它未经生产环境安全审查。
先搜索参考资料
回答前,先用用户提供的关键词搜索 references/,并引用搜索结果。 文件名只能显示主题;资源/参数名称、错误字符串和版本号都在文件正文中,因此仅扫描文件名会遗漏这些信息:
grep -ril "group_ids" references/ # -> the group_ids/access-block migration error,
# terraform-provider-overview.md, and the
# provider repo changelog note, all three
grep -ril "v4.3.1" references/ # -> gh-twingate-terraform-provider-twingate.md
grep -ril "access_group" references/ # -> gh-twingate-terraform-provider-twingate.md
# (the inconsistency-after-apply bug note)
以下内容绝不能凭训练数据记忆作答:提供程序版本约束、环境变量名称或提供程序块语法;具体资源属性名称、参数类型或默认值;某个字段是否存在于资源或数据源上;以及将令牌接入计算资源时与云平台特定的 Terraform 集成(AWS Secrets Manager、Azure Key Vault、GCP Secret Manager)。提供程序架构会不断演变,训练数据往往已经过时数月。对于当前资源架构,请克隆 https://github.com/Twingate/terraform-provider-twingate 并检查 internal/provider/;Terraform Registry 中的
https://registry.terraform.io/providers/Twingate/twingate/latest/docs 也具有权威性。如果用户询问某个云平台是否存在 SE 参考模块或脚本,请先搜索,再回答不存在。
路由
协同启用,不要二选一。 以下指引是叠加适用的:对于跨领域提示词,除了当前技能,还要加载并搜索所列技能的 references/——不要停留在第一个匹配的技能上。先用用户提供的关键词搜索相关技能的参考资料;如果搜索命中,再完整加载该技能。Twingate 问题通常需要查阅多个技能,因此宁可多查,不要少查。此处常见的跨领域组合包括:编写 IaC 前 → architect + connectors;配置组/策略 → identity;Gateway(IDFW)基础设施 → idfw;K8s Helm 令牌传递 → kubernetes;提供程序中缺少字段 → api。
- → twingate-architect:编写 IaC 前,涉及 Remote Network 拓扑、Resource 定义策略或组设计的问题
- → twingate-pulumi:用户希望用 TypeScript、Python、Go 或 C# 实现相同模式时
- → twingate-kubernetes:通过
helm_release资源将连接器令牌传递给 Helm 发布时 - → twingate-idfw:使用
twingate_gateway_config时——仅适用于 IDFW 部署 - → twingate-api:Terraform 数据源未公开所需字段,且需要直接调用 GraphQL 时
- → twingate-troubleshoot:用户报告 terraform apply 错误或意外的提供程序行为时
参考资料
请查看 references/,获取每周更新的当前资料库。其中包含三类文件:
{slug}.md— 对twingate.com/docs页面(产品文档)的摘要。{numeric-id}-{slug}.md— Twingate 帮助中心文章:准确的错误文本和修复方法。gh-{org}-{repo}.md— 对 Twingate 公共 GitHub 仓库的摘要:Provider 源码和 SE 参考脚本。
| 如果用户询问…… | 首先阅读 |
|---|---|
| Provider 配置、版本固定、环境变量名称、入门指南(产品文档) | terraform-provider-overview.md、terraform-getting-started.md |
Provider 源码、当前稳定版发布说明/变更日志、构建/测试工作流、在 v4.3.1 中修复的 access_group/security_policy_id 错误 | gh-twingate-terraform-provider-twingate.md — 注意 gh- 前缀;旧的无前缀文件名已不存在 |
“此处不应出现名为 group_ids 的参数” — 在 Provider v1.0.0+ 中,顶层 group_ids 已移入 access { } 块 | 4693640683-terraform-error-an-argument-named-group-ids-is-not-expected-here.md |
| 各云平台的 SE 快速入门/演示 Terraform 脚本(仅供参考,未针对生产环境强化) | gh-twingate-solutions-terraform-scripts.md |
| AWS 专用 Terraform 模式(ECS/EC2 + Twingate) | terraform-aws.md(以及 skills/twingate-connectors/references/aws-connector-patterns.md) |
| Azure 专用 Terraform 模式(ACI/VMs + Twingate) | terraform-azure.md(以及 skills/twingate-connectors/references/azure-connector-patterns.md) |
| GCP 专用 Terraform 模式(GCE/MIG + Twingate) | terraform-gcp.md(以及 skills/twingate-connectors/references/gcp-connector-patterns.md) |
| 资源参数架构、属性引用、确切字段名 | gh-twingate-terraform-provider-twingate.md、Provider 源码仓库(internal/provider/)或 Terraform Registry |
此表是快速查找入口,并非完整资料库;如果问题与任何一行都不匹配,请先搜索 references/,再作答。