Is there a way how I can import a .yaml
file in jsonnet?
I have found that jsonnet supports importing .json
and also has a native importstr()
function but looks like no support for .yaml
?
I would like to do:
local foo = import "foo.yaml";
local bar = foo.bar;
Not at the moment (May/2018), there's an open issue for it at https://github.com/google/jsonnet/issues/460, if you're working with Kubernetes manifests (importing + massaging w/jsonnet) you could use https://github.com/ksonnet/kubecfg which contains a superset of jsonnet, including std.parseYaml()
.
Update(2018-05-23): added
ksonnet
example
Using ksonnet
's embedded parseYaml
, at app folder:
$ cat assets/foo.yaml
foo: value1
bar: value2
$ cat components/cm.jsonnet
local env = std.extVar("__ksonnet/environments");
local params = std.extVar("__ksonnet/params").components.cm;
local k = import "k.libsonnet";
local configMap = k.core.v1.configMap;
local parseYaml = std.native("parseYaml");
configMap.new(params.name, params.data) {
data+: parseYaml(importstr "../assets/foo.yaml")[0] {
foo: "my own value",
},
}
$ ks show default
---
apiVersion: v1
data:
bar: value2
foo: my own value
kind: ConfigMap
metadata:
name: cm