运行 来自 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}
我不清楚如何从 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}