Как получить доступ к свойствам ресурса chef в библиотеке помощника

  1. Как получить доступ к свойству resource_name в функциях библиотеки.
  2. Как добавить атрибут настраиваемого действия для существующего ресурса поваренной книги сообщества.

Введение: поваренная книга Sensu имеет ресурс "sensu_check", имеющий два действия: создать или: удалить. В рецептах написано около 200 проверок. Различные проверки применимы только к соответствующему типу серверов, а именно: Tomcat, Sonar, Solr и т. Д.

При запуске рецепта все 200 проверок настраиваются на каждом сервере, что нежелательно, поскольку на серверах этого типа должны быть настроены только применимые проверки.

Я создал один Хэш проверок, в котором упоминается check_name, соответствующий тип сервера.

Написана одна библиотечная функция, которая определяет, применима ли current_check к текущему серверу или нет на основе его имени хоста.

Выпуск:

1) Как получить текущее свойство имени ресурса, т.е. "tomcat_service_check" в функции библиотеки. фрагмент ресурса -

sensu_ckeck "tomcat_service_check" do
  command "sh start.sh"
  subscriber "tomcat"
  ...
  action :create or :delete  (we want to add :ignore with custom provider)
end

2) Есть ли способ добавить другой атрибут настраиваемого действия: игнорировать в ресурсе "sensu_check" (поваренная книга сообщества) с настраиваемым поставщиком. если да, как сообщить шефу во время выполнения, что текущий ресурс не выполнен из-за условия игнорирования.

1 ответ

Вы не можете напрямую получить доступ к этим данным, но вам также не нужно. Просто сделайте цикл в вашем рецепте, как это:

all_of_the_checks.each do |check_name|
  if check_applies_to_host?(node, check_name)
    sensu_check check_name do
      # Whatever else
    end
  end
end

Что касается части 2, нет, вы не можете напрямую добавлять новые действия в существующий пользовательский ресурс. Если он использует метод объявления не-DSL, вы можете иметь возможность подкласса его, но обычно вы не можете.

Другие вопросы по тегам