Настройка и доступ к пользовательским атрибутам Ohai в Chef
Я установил список атрибутов на ohai следующим образом.
Ohai.plugin(:mycustom) do
provides "mycustom"
collect_data do
configs = ["sss=fdf", "tryet=werw"]
Ohai::Log.info("Adding #{configs.length} ohai parameters..........................")
configs.each { |param|
if param.to_s.strip.length != 0
key_value_pair = param.split("=").map(&:strip)
mycustom Mash.new
mycustom["mycustom_#{key_value_pair[0].downcase}"] = "#{key_value_pair[1]}"
end
}
end
end
И я настраиваю список запуска для запуска ohai, а затем мой рецепт в последовательности. Как я могу получить доступ к вышеуказанным атрибутам в шаблонах моего рецепта?
<%= node['mycustom_sss'] %>
не похоже на работу.
Если я выполню ohai | grep mycustom
после запуска списка запуска ничего не возвращается.
1 ответ
Ваш плагин обеспечивает mycustom
поэтому новый Mash и его значения будут находиться под node['mycustom']
, Ваш пример приведет к node['mycustom']['mycustom_key']
Я вижу одну проблему, где вы заменяете mycustom
Делайте помехи на каждой итерации цикла, чтобы у вас всегда было только одно окончательное значение, но у вас должно быть одно.
Как вы уже получили префикс node['mycustom']
с помощью provide 'mycustom'
Вы можете разместить атрибуты непосредственно под этим, а не строить строку, включая mycustom
за ключ.
Ohai.plugin(:Mycustom) do
provides 'mycustom'
collect_data do
mycustom Mash.new
configs = [ "sss=fdf", "tryet=werw" ]
Ohai::Log.info "Adding #{configs.length} ohai parameters......"
extract_string_key_values(configs).each do |key,val|
Ohai::Log.debug "Got key [#{key}] val [#{val}]"
next if key.length == 0
mycustom[key.downcase] = val
end
end
def extract_string_key_values array
# Split the array values on = and strip whitespace from all elements
array.map{|keyval| keyval.split('=').map(&:strip) }
end
end
Это 7, но они не сильно отличаются. Я разбил синтаксический анализ key / val на отдельный метод, чтобы цикл был чище.
Для командной строки ohai
чтобы подобрать плагин, вам нужно дать ему каталог для поиска, если только вы не устанавливаете плагин в оригинальном пути ruby ohai gem.
ohai -d /your/ohai/dir | grep -A3 mycustom
[2014-09-04T21:00:32+01:00] INFO: Adding 2 ohai parameters...
"mycustom": {
"sss": "fdf",
"tryet": "werw"
}
Тогда они будут выглядеть так в структуре вашего узла:
node[:mycustom][:sss] = fdf
node[:mycustom][:tryet] = "werw"
После запуска шеф-повара вы должны увидеть узлы mycustom
атрибуты с knife
knife node show <nodename> -a mycustom