SuperAPI AI 工具集

infisical-terraform

部署与运维

查看项目

更新于 10-15 12:07

技能介绍

用途

本技能为 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