我们目前正在使用 Terraform 跨多个区域管理和创建 Cloudflare 规则集和规则。如您所知,Cloudflare 中的规则是顺序敏感的。每当我们生成包含更改(例如删除或添加新规则)的 Terraform 计划时,都会导致所有现有规则的顺序发生更改。这反映在 Terraform 计划中,导致所有规则的更新,即使它们的实际内容保持不变。 我们想询问是否有一种方法可以直接在 Terraform 配置中管理或指定规则的顺序。具体来说:
我们正在寻求一种方法来避免在进行更改时对不相关规则进行不必要的修改,因为这可能会对部署工作流程和规则稳定性产生影响。
我们在 Cloudflare 规则集顺序中遇到了同样的问题,目前,我们只找到了一种可能的解决方案:在规则集的
name
字段中包含优先级编号,并在更改优先级时更新此编号。例如,“1 设置 HTTP 标头”。
尽管我们有很多规则,但这种方法对我们来说很有效。然而,规则不会经常改变。
在规则集的文档中,Cloudflare 提到:““标头取决于顺序,必须根据 name 值按字母升序提供。”
对于其他潜在的解决方案,例如进行额外的 API 调用或使用 Terraform 提供程序中的特定字段,您可以在 Cloudflare 提供程序 GitHub 上查看此线程:
“添加优先级字段已在内部浮动,目前,由于它所产生的问题和不可预测的行为(之前在防火墙规则资源和页面规则中),这是不可行的并且不会实施。可选也不会改善情况;它可能会使情况变得更糟,因为规则集规则的顺序可能会发生冲突。”