SuperAPI AI 工具集

render-env

编程与开发

查看项目

更新于 10-16 03:44

技能介绍

用途:为 Render 托管的后端在 Terraform Cloud 中声明一个新的变量,使该值可通过 TFC UI 设置,并被 Render 后端服务消费。技能只完成声明层面的接线,不会把变量接入 Render env group;接线需要用户在 terraform/modules/render_service/ 中挑选合适的 *_config / *_secrets 对象,属于任务特定决策,应由用户主导。

用法:以两个位置参数调用,/render-env <name> <description>。name 为 snake_case 的 Terraform 变量名,原样用作 TFC 变量键、tfe_variable 资源后缀和 variable 块名;description 为简短可读描述。参数缺失时先询问用户。还需询问两项:是否敏感(默认 true,仅非密钥配置字符串设为 false);涉及哪些环境(默认全部三个 production、sandbox、test,用户可跳过某个,尤其 test 常省略变量)。不要询问 lifecycle { ignore_changes = [value] },此处新变量没有内嵌值,Terraform 无内容可覆盖。

主要能力与命名约定:遵循近期的裸键模式。TFC 键为裸名 key = "${name}",不带 _production / _sandbox / test 后缀;资源标签带环境后缀 resource "tfe_variable" "${name}${env}";每个 terraform/${env}/variables.tf 中 variable 块用裸名,便于 render.tf 统一以 var.${name} 引用。旧的 _production 后缀键属遗留,不要照搬。

使用步骤:Step 1,为每个选定环境向 terraform/global/${env}.tf 追加 tfe_variable 块,含 key、category = "terraform"、description、sensitive、variable_set_id;仅在用户明确要求时才加 lifecycle 或 value。Step 2,为每个选定环境向 terraform/${env}/variables.tf 追加 variable 块(description、type = string、sensitive),sensitive 为 false 时去掉该行。Step 3,在仓库根运行 terraform fmt -recursive terraform;若 PATH 中没有 terraform 则说明并跳过。Step 4,向用户汇报改动文件,并说明变量已声明但尚未消费。

消费方式(需用户操作):在 terraform/modules/render_service/variables.tf 的相应 config/secrets 对象中加字段,按用途选择 backend_config(非敏感后端变量)或 backend_secrets(敏感后端变量),或匹配的主题化 render_env_group 对象;需要模块级默认时用 optional(string, "<default>")。在 main.tf 的对应 render_env_group 中接线,如 POLAR_${NAME_UPPER} = { value = var.<object>.<field> };backend 组应用于每个环境,backend_production 组仅生产使用。随后在各 terraform/${env}/render.tf 模块调用中传值。最后在 TFC 对应变量集设置实际值。若为 POLAR_* 变量,还需在 server/polar/config.py 的 Settings 类加字段(env_prefix="polar_")。

选择方式:静态且可接受改代码再 PR 的值,直接硬编码在 render.tf;密钥或需从 TFC UI 编辑而无需部署的值,用本技能的 tfe_variable。不要为可 UI 调整的值硬编码 "{}" / "" 默认值。

限制与禁止:不要写入 terraform/global/main.tf(各环境集会被 global/{env}.tf 遮蔽);除用户要求外不要硬编码 value;不要自行把变量接入 render.tf 或 render_service 模块;不要 git add 或 commit,留给用户审阅。