Eu acho que outros cobriram o porquê, então eu vou dar uma chance no como. Acho que, ao entender como alguém pode usar o Puppet para fazer o que você quer, isso tornará a decisão mais clara.
Faça o caso básico primeiro
Seu módulo Puppet para Apache não deve fazer muito por padrão. Instale o Apache, configure-o para um padrão mínimo e inicie o serviço. Faça esse trabalho em todas as distros que você precisa apoiar.
Adicione flexibilidade segundo
Precisamos adicionar fantasmas. Você terminará com um sistema que pode descartar arquivos ou removê-los de um conjunto de diretórios conf.d ou vhosts.d / de acordo com o que você precisa. O mesmo ocorre com a ativação ou configuração de módulos.
Use classes de função ou grupo de host para unir seus componentes básicos
Eu acho que a melhor maneira de usar o Puppet é garantir que seja aditivo. Usando os exemplos acima, devemos ter um módulo que faça
- Instale o Apache
- Definir configurações básicas
- Adicione vhosts ao apache
- Defina configurações extras
- Inicie o Apache
Em vez de sobrecarregar nosso módulo padrão do Apache para fazer exatamente o que precisamos para um host ou grupo específico, devemos lidar com isso: é uma função ou classe de grupo de hosts.
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
}
Novamente aditivo.
Coloque casos especiais em Hiera
Sou um grande fã de deixar a Hiera do Puppet, pensar nele como um banco de dados do Puppet, armazenar os bits especiais. Se um determinado host ou grupo de hosts precisar de uma configuração especial, primeiro coloque um padrão sensato no módulo para que os usuários normais não precisem saber sobre isso. Em seguida, insira os dados desses hosts ou grupos de hosts especiais para que o Hiera possa consumi-los e passá-los para o Puppet, conforme necessário.
Meu caso de uso é a porta Listen. Alguns servidores têm um verniz ou haproxy na frente deles. Por padrão, o módulo Puppet faz com que o Apache use a porta 80, mas se o Hiera encontrar dados, ele substituirá esse padrão.