C'est ainsi que j'ai abordé ce domaine en portant le rôle wys be admin / devops. La plupart des éléments suivants ne seront que des principes généraux que j'essaie de suivre et non spécifiques au chef.
J'ai fini par aller avec Puppet parce que j'ai trouvé qu'il y avait plus de ressources à l'époque et que je me sentais plus facile à ramasser pour moi.
J'ai regardé les différents modules pré-construits disponibles pour des choses comme apache, php5, etc. Beaucoup d'entre eux semblaient faire bien plus que ce dont j'avais besoin et étant si peu familier avec la plate-forme, je ne faisais pas confiance à ce qui se passait. J'ai décidé qu'il allait être plus simple pour moi d'identifier simplement ce que je devais faire sur chaque type de nœud.
J'ai démarré le processus en provisionnant l'environnement de développement local de l'équipe (vargrant + virtual box). Pour chaque service / composant j'ai créé un module: php5, apache2, redis, mysql, etc.
Une fois l'environnement de développement stable / fonctionnel, j'ai commencé à créer l'environnement QA. J'ai défini des types de nœuds génériques pour les serveurs Web, redis, vernis, etc. qui réutilisaient les mêmes modules que dev. Une fois cela fait, la mise en scène et la production avaient besoin de modifications minimes pour être opérationnel.
Au fur et à mesure que vous parcourez et écrivez vos recettes / modèles, vous devez réfléchir à la manière de les réutiliser / les généraliser. Ne codez pas des choses comme des chemins ou des utilisateurs / groupes qui pourraient changer entre les distributions / projets / environnements. Étant donné que vous envisagez une approche généralisée, je suppose qu'un grand obstacle résoudra les différences entre les distributions * nix.
Plus important encore, garder est simple. Automatisez / standardisez les parties les plus importantes / chronophages de l'environnement. Itérer, évoluer.