用途
本技能为 Infisical Terraform Provider 提供专家级指导,帮助用户将 Infisical 密钥管理与 Terraform 基础设施可靠地集成。它专注于通过 HCL 管理 Infisical 资源以及从 HCL 读取密钥,而不是讲解 Terraform 的通用用法。
主要能力
- Provider 认证与配置:包括环境变量设置、嵌套 auth 属性写法。
- HCL 资源与数据源:涵盖 infisical_secret、数据源、项目角色、访问审批等。
- 临时密钥(Ephemeral Secrets)管理:避免密钥落入 Terraform state。
- Terraform Cloud OIDC 集成与机器身份(Machine Identity)设置。
- 项目角色与权限配置(permissions_v2 格式)。
使用方式与关键原则
- 凭据必须放在嵌套的 auth 属性中:provider 接受 auth = { universal = { client_id, client_secret } } 或 auth = { oidc = { identity_id, token_environment_variable_name } }。切勿将 client_id、client_secret 或 identity_id 直接放在 provider "infisical" 块上,这是不支持的参数,会在 plan 阶段失败。旧版 service_token 是唯一例外,位于顶层。
- 临时密钥的键是 name:ephemeral "infisical_secret" 接受 name、workspace_id、env_slug 以及可选的 folder_path,没有 secret_key 参数。
- 优先使用临时资源而非 state:对于密钥,始终推荐临时资源(Terraform 1.10+),其值永远不会写入 state 文件。携带临时值的 output 本身必须标记 ephemeral = true。
- 机器身份认证:使用 Universal Auth 或 OIDC,切勿使用 Service Tokens(旧版)。
- 权限格式:使用 permissions_v2(subject/action 结构),弃用 permissions(v1)。
- Terraform Cloud 推荐使用 OIDC:这是推荐的生产模式。
- Provider 来源:使用 Terraform Registry 上的 infisical/infisical,而非社区 provider。
- folder_path 默认值:省略时为 "/"。
- 自托管需要 host:在 provider 块上设置 host 属性;不存在 site-URL 环境变量。
适用场景
- 用户询问如何使用 Infisical 与 Terraform(Provider 设置与认证)。
- 用户希望防止密钥出现在 Terraform state 中(临时资源)。
- 用户需要将 Terraform Cloud 与 Infisical 集成(OIDC)。
- 用户需要配置项目角色与权限。
- 用户想了解临时资源与数据源之间的区别。
限制与边界
本技能不适用于以下需求,应改用其他技能:
- 将密钥注入运行中的应用、容器或流水线:使用 infisical-setup。
- 直接调用 REST API 而非 HCL:使用 infisical-api。
- 将密钥推送到第三方服务:使用 infisical-secret-syncs。
- 按需临时数据库凭据:使用 infisical-dynamic-secrets。
- 角色与权限模型设计:使用 infisical-access-control。
- 通过 Terraform 部署 Gateway 或 Relay:使用 infisical-gateway。
- 部署 Infisical 本身:使用 infisical-self-host。
参考资料路由
- 认证困惑或环境变量设置:provider-setup.md
- 为密钥、角色、审批策略编写 HCL:resources-and-data-sources.md
- Terraform Cloud 与 Infisical 分步操作:terraform-cloud-oidc.md