Может ли jsonnet использовать shell? - PullRequest
0 голосов
/ 27 мая 2018

Я хотел бы написать код, как показано ниже, в 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.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Невозможно вызывать внешние команды из Jsonnet.Это сделано специально (см. Герметичность 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.

0 голосов
/ 27 мая 2018

Получите ваши данные с помощью curl, передайте их в файл, вызовите jsonnet, затем local region = importstr “path/to/fetched/data”.

...