Je pense que d'autres ont couvert le pourquoi donc je vais essayer le comment. Je pense qu'en comprenant comment quelqu'un pourrait utiliser Puppet pour faire ce que vous voulez, cela rendra la décision plus claire.
Faites d'abord le cas de base
Votre module Puppet pour Apache ne devrait pas faire grand-chose par défaut. Installez Apache, configurez-le à une norme minimale et démarrez le service. Faites en sorte que cela fonctionne sur toutes les distributions que vous devez prendre en charge.
Ajoutez de la flexibilité en second
Nous devons ajouter des vhosts. Vous vous retrouverez avec un système qui peut supprimer des fichiers ou les supprimer d'un ensemble de répertoires conf.d ou vhosts.d / en fonction de vos besoins. Même chose avec l'activation ou la configuration des modules.
Utilisez des classes de rôles ou de groupes d'hôtes pour lier vos blocs de construction
Je pense que la meilleure façon d'utiliser Puppet est de s'assurer qu'il est additif. En utilisant les exemples ci-dessus, nous devrions avoir un module qui
- Installer Apache
- Définir les configurations de base
- Ajouter des vhosts à Apache
- Configurer tous les paramètres supplémentaires
- Démarrez Apache
Plutôt que de surcharger notre module Apache par défaut pour faire exactement ce dont nous avons besoin pour un hôte ou un groupe particulier, nous devons gérer ceci est une classe de rôle ou de groupe d'hôtes.
class role::web_cust1 {
include apache
apache::vhost {'www.domain.com': }
apache::vhost {'www.domain2.com': priority => '99', }
include php
include php-fpm
include mysql
}
Encore une fois additif.
Mettre des cas spéciaux à Hiera
Je suis un grand fan de laisser Hiera de Puppet, le considérer comme une base de données pour Puppet, stocker les bits spéciaux. Si un certain hôte ou groupe d'hôtes a besoin d'un paramètre spécial, mettez d'abord une valeur par défaut saine dans le module afin que les utilisateurs normaux n'aient pas besoin de le savoir. Ensuite, insérez des données pour ces hôtes ou groupes d'hôtes spéciaux afin que Hiera puisse les consommer et les transmettre à Puppet si nécessaire.
Mon cas d'utilisation est le port d'écoute. Certains serveurs ont un vernis ou un haproxy devant eux. Par défaut, le module Puppet dispose du port 80 d'Apache, mais si Hiera trouve des données, il remplacera cette valeur par défaut.