Estou pensando em migrar nosso processo de implantação para usar o Puppet. Estou começando implantando os aplicativos de terceiros que usamos para o sistema, que incluem o Solr Cloud orquestrado por um conjunto Zookeeper.
A implantação da nuvem Solr com o Zookeeper embutido é bastante simples, no entanto, se eu quiser usar um conjunto separado do Zookeeper, preciso implantar o Zookeeper com estas linhas cruciais na configuração:
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888
(por exemplo). Dado que não posso assumir nada sobre a ordem dos nós e gostaria de manter tudo baseado em Puppet: o que devo procurar para fazer isso?
Preciso fazer isso usando modelos e algumas pesquisas do Hiera e definir todos os servidores do Zookeeper na minha configuração do Hiera? Ou existe um método que me permite não especificar onde todos os nós estão com antecedência e fazer com que eles se identifiquem (talvez usando fatos personalizados)?
Eu gostaria de minimizar a quantidade de configuração específica do site que tenho que escrever, portanto, se eu puder apenas especificar que "este nó precisa do módulo zookeeper" e encontrar automaticamente qualquer outro que tenha o módulo zookeeper, isso seria brilhante.
Qualquer conselho de administradores de sistema que fizeram algo semelhante seria apreciado!
Usar o Hiera é a abordagem correta e você pode obter a natureza dinâmica do que deseja usando o PuppetDB junto com o back-end do PuppetDB Hiera .
Isso permite que você tenha algo como o seguinte em seus arquivos Hiera YAML:
Isso retornará uma série de
$::ipaddress
fatos para todas as máquinas que o PuppetDB conhece com a classe Zookeeper como parte de seu catálogo. Você pode usar o resultado dessa consulta como parâmetro para outras classes.