Creo que otros han cubierto el por qué, así que voy a ver cómo. Creo que al comprender cómo alguien puede usar Puppet para hacer lo que usted quiere, tomará una decisión más clara.
Haz el caso básico primero
Su módulo Puppet para Apache no debería hacer mucho por defecto. Instale Apache, configúrelo con un estándar mínimo e inicie el servicio. Haga que esto funcione en todas las distribuciones que necesite admitir.
Agregue flexibilidad en segundo lugar
Necesitamos agregar vhosts. Terminará con un sistema que puede soltar archivos o eliminarlos de un conjunto de directorios conf.d o vhosts.d / según lo que necesite. Lo mismo con habilitar o configurar módulos.
Use clases de roles o grupos de host para unir sus bloques de construcción
Creo que la mejor manera de usar Puppet es asegurarse de que sea aditivo. Usando los ejemplos anteriores, deberíamos tener un módulo que
- Instalar Apache
- Establecer configuraciones básicas
- Añadir vhosts a apache
- Configure cualquier configuración adicional
- Inicie Apache
En lugar de sobrecargar nuestro módulo Apache predeterminado para hacer exactamente lo que necesitamos para un host o grupo en particular, debemos manejar esto es una clase de rol o grupo de host.
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
}
De nuevo aditivo.
Poner casos especiales en Hiera
Soy un gran admirador de dejar que Puppet's Hiera, piense en ello como una base de datos para Puppet, almacene los bits especiales. Si un determinado host o grupo de hosts necesita una configuración especial, primero ponga un valor predeterminado sensato en el módulo para que los usuarios normales no necesiten saberlo. Luego inserte datos para esos hosts especiales o grupos de hosts para que Hiera pueda consumirlos y pasarlos a Puppet según sea necesario.
Mi caso de uso es el puerto de escucha. Algunos servidores tienen un barniz o haproxy frente a ellos. Por defecto, el módulo Puppet tiene el puerto Apache 80, pero si Hiera encuentra datos, anulará ese valor predeterminado.