Penso che gli altri abbiano spiegato il perché, quindi mi occuperò del come. Penso che capendo come qualcuno potrebbe usare Puppet per fare ciò che vuoi, renderà la decisione più chiara.
Fai prima il caso base
Il modulo Puppet per Apache non dovrebbe fare molto per impostazione predefinita. Installa Apache, configuralo su uno standard minimo e avvia il servizio. Fai in modo che funzioni su tutte le distro che devi supportare.
Aggiungi flessibilità secondo
Dobbiamo aggiungere vhosts. Ti ritroverai con un sistema che può eliminare i file o rimuoverli da una serie di directory conf.d o vhosts.d / in base alle tue esigenze. Stessa cosa con l'abilitazione o la configurazione dei moduli.
Utilizzare le classi di ruolo o hostgroup per unire i blocchi predefiniti
Penso che il modo migliore per usare Puppet sia assicurarsi che sia additivo. Usando gli esempi sopra, dovremmo avere un modulo che lo fa
- Installa Apache
- Imposta le configurazioni di base
- Aggiungi vhosts ad apache
- Configura eventuali impostazioni extra
- Avvia Apache
Invece di sovraccaricare il nostro modulo Apache predefinito per fare esattamente ciò di cui abbiamo bisogno per un determinato host o gruppo, dovremmo gestire questo è un ruolo o una classe hostgroup.
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
}
Ancora additivo.
Metti casi speciali in Hiera
Sono un grande fan di lasciare che Puppet's Hiera, lo pensi come un database per Puppet, memorizzi i pezzi speciali. Se un determinato host o hostgroup ha bisogno di un'impostazione speciale, prima di tutto inserisci un modulo predefinito sano in modo che gli utenti normali non debbano conoscerlo. Quindi inserisci i dati per quegli host o hostgroup speciali in modo che Hiera possa consumarli e passarli a Puppet secondo necessità.
Il mio caso d'uso è la porta di ascolto. Alcuni server hanno una vernice o un haproxy davanti a loro. Per impostazione predefinita, il modulo Puppet ha Apache che utilizza la porta 80, ma se Hiera trova dati sostituirà quel valore predefinito.