Настройка и доступ к пользовательским атрибутам 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
Другие вопросы по тегам