使用opa eval命令评估文件夹中的多个文件

问题描述

我已经在OPA网站上看到了可以使用以下内容的信息:

在命令行上评估策略。 ./ opa eval -i input.json -d example.rego

就我而言,我有多个输入文件,并将其修改

./ opa eval -i /tmp/tfplan.json -d /tmp/example.rego -d /tmp/input1.json -d /tmp/input2.json

除了将文件分别指定为input1,input2等之外,我还可以直接对其进行修改以读取tmp文件夹中存在的所有json文件吗?

解决方法

是的! CLI将接受-d / --data-b / --bundle参数的目录,并从中递归加载文件。

例如:

/tmp/foo/input1.json
/tmp/foo/input2.json

opa eval -d /tmp/foo/input1.json -d /tmp/foo/input2.json ..

相同

opa eval -d /tmp/foo ..

请记住,-d / --data将尝试加载目录中找到的 ANY 文件,有时可能会导致冲突(例如,数据中的重复键)文档)或加载不正确的文件。因此,请注意指向/tmp,因为它可能包含您不需要的其他文件(请注意,上面的示例使用了一个子目录)。通常,我们建议使用-b / --bundle并按照捆绑包规范here的目录结构以data.json的形式提供文件,以帮助避免大多数常见问题。