运行 来自 CLI 的简单 Open Policy Agent Playground 示例

Running simple Open Policy Agent Playground example from CLI

我不清楚如何从 CLI 运行 Open Policy Agent Playground 中的简单示例。

play.rego

package play
default hello = false

hello {
    m := input.message
    m == "world"
}

input.json

{
    "message": "world"
}

我尝试使用:

opa eval -i input.json -d play.rego "data.play.hello"

但是,我不会得到这个结果

{
    "hello": true
}

不幸的是,我得到了这个::(

{
  "result": [
    {
      "expressions": [
        {
          "value": true,
          "text": "data.play.hello",
          "location": {
            "row": 1,
            "col": 1
          }
        }
      ]
    }
  ]
}

我认为其他人可能会发现了解如何从 CLI 运行 这些示例很有用,所以我不得不问。

这是一个很好的问题!除非选择“评估选择”,否则 Rego Playground 始终评估整个策略,即包括的所有规则。当您使用 opa eval 查询策略时,您可以选择执行相同的操作,或者像您在示例中所做的那样 - 仅查询单个规则的值。

如果您将查询从 "data.play.hello" 更改为仅 "data.play",它将像 playground 一样评估完整策略:

$ opa eval -i input.json -d play.rego "data.play"
{
  "result": [
    {
      "expressions": [
        {
          "value": {
            "hello": true
          },
          "text": "data.play",
          "location": {
            "row": 1,
            "col": 1
          }
        }
      ]
    }
  ]
}

如果您只想显示实际输出而不显示其周围的所有详细信息,您可以使用 opa eval 可用的格式选项之一,例如 --format raw:

$ opa eval --format raw -i input.json -d play.rego "data.play"
{"hello":true}