Оба варианта осуществимы.
Вы упомянули следующие варианты:
1)
превратить скрипт в шаблон, рецепт просто отобразит шаблон по заданному пути, а затем зарегистрирует cronjob
Это легко начать (никаких реальных изменений в вашем скрипте, он просто гарантирует, что он там)
Помните, что шеф-повар запускает каждый рецепт каждый раз... Как сказал jtimberman: "Ресурсы модифицируются только в том случае, если они не соответствуют рецепту". Таким образом, ваш рецепт должен просто перезаписывать новый шаблон при его изменении.
OR 2)
Разбейте сценарий на ресурсы, провайдеров и т. д., и пусть Chef запускает его каждый час.
Этот вариант более похож на шеф-повара и, вероятно, более надежен и масштабируем, особенно если вы передаете больше инфраструктуры под управление шеф-повара.
Это будет прекрасно работать, если ваш клиент шеф-повара демонизирован или шеф-повар запускается на cron.
В этом случае вы можете настроить рецепт, используя такие ресурсы, как «пользователь», «группа» и «файл» (для копирования ключей ssh). Подробнее см. здесь: http://wiki.opscode.com/display/chef/Resources#Resources-File
Тогда вам лучше всего использовать «баг данных» (данные json) для хранения сведений о пользователе и устанавливать своих пользователей на основе этого. Это именно то, что сделал opscode в этом рецепте (загляните в ./recipe/sysadmins.rb для вдохновения): https://github.com/opscode/cookbooks/tree/master/users
Просто имейте в виду, что они используют chef-server (или платформу opscode). Если вы используете chef-solo, вам нужно будет заменить search(:users, 'groups:sysadmin')' своим собственным файлом базы данных, найденным где-то, где его может получить chef-solo (загружаемый или внутри вашего шеф-повара). -репо).
person
adzdavies
schedule
28.06.2011