Вот как я подошел к этой области, играя роль хочу быть сисадмином / devops. Большинство из них будут только общими принципами, которым я стараюсь следовать, а не определенными шеф-поваром.
Я закончил тем, что пошел с Puppet, потому что я обнаружил, что в то время было больше ресурсов, и мне было легче подобрать его для меня.
Я посмотрел на различные готовые модули, доступные для таких вещей, как apache, php5 и т. Д. Многие из них, казалось, делали намного больше, чем мне нужно, и, будучи настолько незнакомыми с платформой, я не доверял происходящему. Я решил, что для меня будет проще просто определить, что мне нужно сделать для каждого типа узла.
Я начал процесс с предоставления локальной среды разработки команды (vargrant + virtual box). Для каждого сервиса / компонента я создал модуль: php5, apache2, redis, mysql и т. Д.
Как только среда разработки стала стабильной / работающей, я начал создавать среду QA. Я определил универсальные типы узлов для веб-серверов, redis, лаков и т. Д., Которые повторно использовали те же модули, что и dev. Как только это было сделано, для постановки и производства потребовались минимальные изменения, чтобы начать работу.
По мере того, как вы будете писать и писать свои рецепты / шаблоны, вы должны подумать, как их можно использовать повторно / обобщать. Не жестко программируйте такие вещи, как пути или пользователи / группы, которые могут меняться в дистрибутивах / проектах / средах. Поскольку вы смотрите на обобщенный подход, я бы предположил, что большое препятствие будет связано с различиями между * nix-дистрибутивами.
Самое главное, сохранить просто. Автоматизируйте / стандартизируйте наиболее важные / трудоемкие части среды. Итерируйте, развивайтесь.