2015-09-24 2 views
0

У меня было требование отслеживать историю запуска набора кулинарных книг.Как объявить state_attrs в рецепте шеф-повара

Отчет о шеф-поваре обеспечивает хорошую базу, он может захватывать историю запуска поваренной книги, а также обновленные ресурсы. Но мне все же нужно зафиксировать начальное состояние и окончательное состояние обновленного ресурса.

Для некоторых рецептов, он использует какой-либо ресурс по умолчанию, как файл, а затем в

Chef отчетов -> Run History -> Информация -> Параметры

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

Но для других рецептов он использует новый ресурс, разработанный мной, не существует начального и конечного состояния. Как указано в chef reporting document, «state_attrs» используется для определения атрибутов, которые должны быть отправлены серверу отчетности шеф-повара.

Вопрос заключается в том, что я сделал быстрый тест, чтобы объявить 2 атрибуты, используя state_attrs, но они до сих пор не показывают в истории запуска начальное и конечное состояние ...

Не могли бы вы мне посоветовать, как добавить state_attrs?

Или, если есть другие способы отслеживания начального и конечного состояния измененного ресурса, они также высоко оценены! Я пытался использовать обработчик отчетов, но в обработчике отчетов я не могу получить начальное состояние, есть поле «до», но оно пустое ...

Большое спасибо!

ответ

0

Он выяснил, есть 3 шага для достижения цели:

  1. объявить state_attrs в ресурсе
  2. есть new_resource и current_resource объекта, он требует явно инициализировать current_resource путем добавления метода в поставщика ресурсов, например:
def load_current_resource 
    @current_resource = Chef::Resource::MyResource.new(@new_resource.name) 
    end 
  1. присвойте значение current_resource в том месте, где оно обновлено. для Например:
@current_resource.maxage(smaxdays.to_s) 

Это пример для проверки пароля максимального возраста для пользователей. Он установит smaxdays, который извлекается из теневого файла, в current_resource.

Тогда MaxAge будет отправлен поваром отчетности, данные будут как:

res_initial_state: {"maxage":"7777"}   
res_final_state:  {"maxage":"90"} 

Именно начальное и конечное состояние, я хочу, чтобы захватить.

Смежные вопросы