Ответ 1
Вы пытались подключить JSON к STDIN?
echo '{"attr":"value"}' | chef-client -j /dev/stdin
Я знаю, что мы можем передать атрибуты node в chef- {client/solo} с флагом -json-attributes (-j). Этот флаг всегда ожидает ввода JSON файла. Является ли их любым методом я могу напрямую передавать атрибуты как объекты JSON.
Я пытался это сделать. Например,
chef-client -j {"attr":"value"}
Но это заканчивается сообщением об ошибке как:
FATAL: I cannot find {"attr":"value"}
Поскольку он ожидает файл JSON. Мне нужно передать объекты JSON, как в нашем env. Я не могу создать json файл. Я не хочу использовать файлы атрибутов/роли/среды. Есть ли другой способ передать атрибуты?
Вы пытались подключить JSON к STDIN?
echo '{"attr":"value"}' | chef-client -j /dev/stdin
Это работало:
knife ssh $VM -- chef-client -j '<(echo {\"attr\":\"value\"})'
но в последнее время начал печалиться. не знаю, почему.
FATAL: Could not parse the provided JSON file (/dev/fd/63):
Top level JSON object must be a Hash or Array. (actual: NilClass)
... Несмотря на то, что это выглядит правильно:
knife ssh -m 192.168.1.1 -- cat '<(echo {\"attr\":\"value\"})'
192.168.1.1 {"attr":"value"}
YMMV