SuperAPI AI 工具集

terraform-policy

部署与运维

查看项目

更新于 10-15 22:12

技能介绍

用途:编写新的 .policy.hcl 策略、将 .sentinel 策略转换为 Terraform Policy、编写或调试 .policytest.hcl 测试文件,以及迁移 Sentinel 策略库。该技能为工具型技能,会调用子技能 tfpolicy-author(编写或转换策略)与 tfpolicy-test(编写或调试测试)。

主要能力与用法:在给出编写或测试指导前,需先检查已安装的 tfpolicy CLI 版本并据此调整建议;技能维护最近两个次版本线 0.2.x 与 0.3.x 的指导。若为 0.2.x,编写含资源或提供者策略的 .policy.hcl 时需包含顶层 policy { required_providers { ... } } 块,这是 tfpolicy validate 的必需项;版本范围校验为尽力而为,resource_policy "*" 等通配目标不做 schema 校验;tfpolicy test 不会对 mocked attrs/prior_attrs 做提供者 schema 预检,core::alltrue/core::anytrue 不存在,且仅 0.2.x 允许 mock resource {} 块完全省略 attrs/prior_attrs。若为 0.3.x 或更新,上述其余指导仍适用,但不再允许省略资源状态:.policytest.hcl 中每个 mock resource {} 块必须声明 attrs 或 prior_attrs,若两者求值均为空则跳过该测试用例(provider {} 与 module {} mock 不受影响);tfpolicy test 复用目标 .policy.hcl 已有的顶层 policy { required_providers { ... } } 块,在测试运行前对 provider、resource、data-source 策略及 core::getdatasource()/core::getresources() 参数做 schema 校验,schema 不匹配则整个运行失败;新增 core::alltrue(list) 与 core::anytrue(list),优先于 core::length() 列表推导变通写法;resource、provider、module 策略可用 meta.tfe_stack 与 meta.tfe_workspace.tags,Stack 字段在 Stack 求值之外为空。若版本未知,应先请用户确认,或给出明确区分 0.2.x 与 0.3.x 的指导。

适用场景:编写或转换策略、编写或调试 policytest、迁移 Sentinel 策略库。

限制:不用于编写 Terraform 模块的 .tftest.hcl 文件(应使用 terraform-test),也不用于通用 Terraform HCL 编写(应使用 terraform-style-guide)。安装命令:npx skills add hashicorp/agent-skills/terraform/terraform-policy/skills/tfpolicy-author 与 npx skills add hashicorp/agent-skills/terraform/terraform-policy/skills/tfpolicy-test。