Импорт YAML в jsonnet

Есть ли способ, как я могу импортировать .yaml файл в jsonnet?

Я обнаружил, что jsonnet поддерживает импорт .json а также имеет родную importstr() функция, но, похоже, не поддерживает .yaml?

Я хотел бы сделать:

local foo = import "foo.yaml";
local bar = foo.bar;

1 ответ

Решение

В настоящее время (май /2018 г.) для него существует открытая проблема по адресу https://github.com/google/jsonnet/issues/460, если вы работаете с манифестами Kubernetes (импорт + массаж с помощью jsonnet), вы может использовать https://github.com/ksonnet/kubecfg который содержит расширенный набор jsonnet, в том числе std.parseYaml(),

Обновление (2018-05-23): добавлено ksonnet пример

С помощью ksonnet встроен parseYaml, в папке приложения:

$ 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
Другие вопросы по тегам