用途:帮助用户用 Terraform 完成 Datadog 与 Google Cloud 的集成配置。核心做法是在客户 GCP 项目中创建服务账号,并授予 Datadog 的委托主体(delegate principal)通过 roles/iam.serviceAccountTokenCreator 模拟该账号的权限,从而完全避免长期密钥。
主要能力与流程:
- 预检:确认使用 terraform 还是 OpenTofu(tofu 可作替代),从环境或 .env.local/.env 加载 DD_SITE、DD_API_KEY、DD_APP_KEY 并分别校验;解析正确的 Datadog 应用地址。
- 获取 Datadog 委托主体:调用 /api/v2/integration/gcp/sts_delegate,先 GET,仅在 404 时 POST 创建,得到形如 ...@....iam.gserviceaccount.com 的委托账号邮箱,作为 DATADOG_PRINCIPAL_ID。
- 确定范围:询问要监控的 GCP 项目 ID 和/或文件夹 ID,以及承载服务账号的 host project;可用 gcloud 发现组织、文件夹、项目,并展开嵌套文件夹下的全部项目。
- 生成并应用 Terraform:先检查本地状态与 Datadog 现有集成,再生成配置;terraform apply 前需暂停等待用户确认。
使用方式:命令以 POSIX shell 编写,PowerShell/cmd 需用等价写法;密钥通过 stdin 头传递,Terraform 从环境读取密钥,避免写入 state 或进程列表。
限制:需要 terraform(或 tofu)与 jq,gcloud 可选但 google provider 仍需环境 GCP 凭据;文件夹级 IAM 会被继承但 API 启用不会,必须展开子文件夹项目,否则集成看似配置成功却采集不到数据;政府站点需直接提供密钥。