1

我想在 jsonnet 中编写如下代码。jsonnet可以支持吗?

local region = `curl http://100.100.100.200/latest/metadata/region_id`

region变量应该是执行的输出curl http://100.100.100.200/latest/metadata/region_id

4

2 回答 2

1
于 2018-05-27T11:59:38.143 回答
0

无法从 Jsonnet 中调用外部命令。这是设计使然(参见 Hermeticity https://jsonnet.org/articles/design.html)。

有必要将数据显式传递给 Jsonnet。有以下三种机制:

1) import/importstr这对于与代码一起存在的静态事物是最好的。但是您可以以其他方式使用它们(请参阅 Kerndog73 的回答)。

2) 外部变量 - 整个程序中可用的全局参数,例如:

jsonnet --ext-str from_curl="$(curl 'https://example.com')" -e 'std.extVar("from_curl")'

3)顶级参数 - 如果您的 jsonnet 程序评估为一个函数,您可以将参数传递给它:

`jsonnet --tla-str from_curl="$(curl 'https://jsonplaceholder.typicode.com/posts/1')" -e 'function(from_curl) from_curl'`

如果您使用的是 ksonnet,它可能会有所不同,因为 ksonnet 有自己的机制将数据传递给 jsonnet AFAIK。

于 2018-05-28T10:32:40.837 回答