Implantando aplicativos distribuídos com o Puppet - conselho?

1

Estou procurando migrar nosso processo de implantação para o uso do Puppet. Estou começando implantando os aplicativos de terceiros que usamos para o sistema, que incluem o Solr Cloud orquestrado por um grupo de zookeeper.

A implantação da nuvem Solr com o Zookeeper embutido é bastante simples; no entanto, se eu quiser usar um conjunto de Zookeeper separado, preciso implantar o Zookeeper com essas linhas cruciais na configuração:

server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888

(por exemplo). Dado que eu não posso assumir nada sobre a ordenação de nós, e eu gostaria de manter tudo isso baseado em Puppet: o que devo olhar para fazer isso?

Preciso fazê-lo usando modelos e algumas pesquisas Hiera, e definir todos os servidores Zookeeper na minha configuração Hiera? Ou existe um método que me permite não especificar onde todos os nós estão adiantados, e fazer com que eles se identifiquem (usando fatos personalizados, talvez)?

Gostaria de minimizar a quantidade de configuração específica do site que tenho que escrever, portanto, se eu puder especificar que "esse nó precisa do módulo zookeeper" e encontrar automaticamente qualquer outro que tenha o módulo zookeeper, isso seja brilhante.

Qualquer conselho de administradores que fizeram algo semelhante seria apreciado!

    
por shearn89 21.11.2014 / 12:14

1 resposta

3

Usar o Hiera é a abordagem correta e você pode alcançar a natureza dinâmica do que deseja usando PuppetDB junto com o backend backend do PuppetDB Hiera .

Isso permite que você tenha algo como o seguinte em seus arquivos Hiera YAML:

zookeeper::servers::_nodequery: ['Class[Zookeeper]', 'ipaddress']

Isso retornará uma matriz de $::ipaddress facts para todas as máquinas que PuppetDB conhece com a classe Zookeeper como parte de seu catálogo. Você pode então usar o resultado dessa consulta como um parâmetro para outras classes.

    
por 21.11.2014 / 14:23