шеф-повар поваренная книга lwrp, самый простой способ использовать новый ресурс.обновлено по последнему действию (true)


Я пишу LWRP для chef 10. И когда этот ресурс запускается в других рецептах, он должен быть помечен как "updated_by_last_action", если что-то изменилось. Но если ничего не изменилось. updated_by_last_action должно быть false.

Итак, в качестве примера у меня есть документация шеф-повара http://docs.opscode.com/lwrp_custom_provider.html#updated-by-last-action . в этом примере шаблон ресурса оборачивается в переменную, чтобы проверить, была ли она изменена, а затем установить состояние updated_by_last_action. Поэтому мой код должен выглядеть примерно так

f = file new_resource.filename do
xxx
end
new_resource.updated_by_last_action(f.updated_by_last_action?)

t = template new_resource.templatename do
xxx
end
new_resource.updated_by_last_action(t.updated_by_last_action?)

m mount new_resource.mountpoint do
xxx
end
new_resource.updated_by_last_action(m.updated_by_last_action?)
Но если поставщик становится больше и использует много ресурсов, таких как шаблон, файл, каталог, монтирование и т. д.. Если все эти ресурсы обернуты внутри переменных, как в примере, чтобы узнать, был ли ресурс обновлен, чтобы затем дополнительно отправить статус, что этот поставщик был обновлен.

Мне интересно, есть ли более простой и чистый способ запустить new_resource.updated_by_last_action(true), а затем обернуть все ресурсы внутрь переменная. Потому что если я просто помещаю new_resource.updated_by_last_action(true) внутрь action Перед end, то LWRP помечается как обновляемый каждый запуск chef, что не является оптимальным.

1 3

1 ответ:

Вы можете добавить use_inline_resources в верхней части вашего LWRP, который делегирует updated_by_last_action встроенным ресурсам.