首页 > 解决方案 > 从 CLI 运行简单的 Open Policy Agent Playground 示例

问题描述

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

play.rego

package play
default hello = false

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

输入.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 运行这些示例很有用,所以我不得不问。

标签: command-line-interfaceopen-policy-agent

解决方案


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

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

$ 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}

推荐阅读