Как вывести значения Chef default.rb в стандартный вывод? - PullRequest
0 голосов
/ 13 марта 2020

Я хочу прочитать некоторые URL-адреса и номера версий из этого файла атрибутов Chef по умолчанию:

https://github.com/aws/aws-parallelcluster-cookbook/blob/develop/attributes/default.rb

Я знаю, что могу использовать grep , sed, awk, но обычно они более хрупкие, и я не могу контролировать этот файл. Я просто хочу иметь возможность скачать его и разобрать нужные мне значения.

Примером решения может быть распечатка default.rb как JSON для вывода в стандартный поток и его разбор с помощью jq или создание * Скрипт 1030 *, который его распечатывает.

Заранее спасибо!

ОБНОВЛЕНИЕ:

Мне нужен способ чтения данных из файла default.rb, IE Я хочу получить данные версии / URL-адреса из default.rb и использовать их программно для чего-то другого.

Было бы неплохо иметь возможность сделать

require('default.rb')

puts default['cfncluster']['nvidia']['driver_version']

. значение от строки 68 до стандартного вывода, и я мог тогда сделать все, что я хотел с ним. Это выше моя неудачная попытка нам ruby. Этот метод не работает, он говорит, что по умолчанию не определен. Я не ruby человек, может быть, есть способ загрузить его без получения этого сообщения об ошибке.

Любые предложения приветствуются. Если вы можете распечатать все как JSON, используя некоторый шеф-повар, это тоже хорошо. Я могу разобрать, что мне нужно из этого.

1 Ответ

0 голосов
/ 19 марта 2020

вы не указали, хотите ли вы сделать это во время chef-client.

, хотя это не рекомендуется, вы можете достичь этого с помощью usuin eval(). например:

# foo.rb
default['foo']['bar'] = "baz"
# read.rb
default = Hash.new {|hash,key| hash[key]={}}
eval(File.read("./foo.rb"))
puts default['foo']['bar']
$ ruby test.rb
baz
...