我想用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的输出。
发布于 2018-05-27 19:59:38
使用curl获取数据,将其通过管道传输到一个文件中,调用jsonnet,然后调用local region = importstr “path/to/fetched/data”。
发布于 2018-05-28 18:32:41
不可能从Jsonnet内部调用外部命令。这是设计出来的(参见密封性https://jsonnet.org/articles/design.html)。
有必要显式地将数据传递给Jsonnet。为此,有三种机制:
1) import / importstr,它最适合与代码并存的静态对象。但是你也可以在其他方面使用它们(参见Kerndog73 73的答案)。
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。
https://stackoverflow.com/questions/50551803
复制相似问题