Que métodos existem para configurar o fantoche para servir recursos para múltiplos ambientes?

4

Eu pareço encontrar duas maneiras de usar o fantoche em vários ambientes:

1) Instale um puppetmaster em cada ambiente e só atualize as receitas do controle de origem para aquele ambiente quando estiver pronto para implantar as receitas naquele ambiente.

2) Use um puppetmaster e use uma variável no puppet.conf de cada cliente para especificar o ambiente e, em seguida, no puppetmaster, especifique um modulepath diferente para cada ambiente e cada um desses caminhos será atualizado para a ramificação do repositório de receitas destinados a esse ambiente (por exemplo, desenvolvimento, produção e produção).

Apenas a execução de um puppetmaster parece ser uma infraestrutura a menos para continuar em execução, mas há alguma complexidade adicional na configuração.

Existem vantagens ou desvantagens adicionais em um desses métodos ou algo que estou perdendo por completo?

    
por cclark 07.02.2010 / 06:31

4 respostas

2

A opção nº 1 não será dimensionada. Vai ser uma dor para gerenciar. Puppet suporta ambientes por isso mesmo:)

Permita que um único puppetmaster atenda a vários ambientes, cada um com suas próprias diretivas manifest e modulepath . É uma abordagem muito comum que muitas pessoas usam. Lembre-se também que:

  • O Puppet pode gerenciar seus arquivos puppetmasterd.conf e puppet.conf config.
  • Dependendo de como você chama puppetd , você também pode usar o argumento --environment .
por 27.05.2010 / 23:15
1

Você pode chamar puppetd a partir da linha de comando com --environtment. Mas isso pode ser difícil de gerenciar se você quiser mover muitos servidores de um Env para outro.

O projeto foreman atua como uma interface de "nós externos" e permite atribuir ambientes a hosts / grupos de host de um front-end da web. Você pode então ter diferentes caminhos de módulo para hosts diferentes. Você pode até mesmo alterar os Ambientes para nós da interface, permitindo que você mova os caminhos de módulo do Dev- > Prod ou como quiser.

    
por 26.06.2010 / 23:39
0

Acho que você deve dar uma olhada nas etiquetas de marionetes

    
por 13.03.2010 / 12:58
0

Usar ambientes de marionetes tem algumas desvantagens:

  • você pode definir com segurança apenas o ambiente de marionetes do agente - isso pode criar algumas vulnerabilidades se você armazenar suas senhas, etc. em seus arquivos / modelos.
  • as funções personalizadas são carregadas somente de um único ambiente que é usado como padrão no puppetmaster - isso significa que você não conseguirá manter versões diferentes de funções personalizadas (se as usar) em ambientes diferentes.

Em uma empresa em que estou trabalhando, vamos usar dois servidores puppetmaster - um para produção e outro para o restante dos ambientes.

Para facilitar o gerenciamento de módulos de fantoches em vários mestres de marionetes, você pode manter seus módulos em VCS como o git e implantar novas versões deles em mestres de bonecos através de capistrano, etc.

Se você precisa de vários ambientes para não fazer versões de seus módulos de fantoches, mas para fornecer dados diferentes para nós diferentes com base no ambiente (variáveis diferentes, classes de nós, etc.), há mais algumas opções: herdam nós de diferentes ambientes dos nós básicos do "ambiente" * Fornecer um conjunto de parâmetros e classes por ambiente para cada nó através do ENC (Puppet Dashboard, Foreman), no qual você cria um grupo para cada ambiente com o conjunto de parâmetros necessários e adiciona seus nós àqueles. * crie um fato personalizado ou uma função personalizada retornando seu ambiente (com base no arquivo local / tag AWS / consulta DB / whatever) e use esse fato para servir dados diferentes em seus manifestos usando condicionais / extlookup / hiera.

    
por 19.11.2011 / 22:54

Tags