Puppetize tudo ou não?

10

Nota: há muitas questões teóricas.

Recentemente, estou lendo sobre o Puppet (e sistemas similares), que - como acredito - pode facilitar muito o meu trabalho. Mas tento - e infelizmente não consigo - entender o que tudo o que posso "fantocizar". Eu posso imaginar "nuvens" ou clusters de alta disponibilidade, onde é a mesma configuração em mais servidores. Mas e as estações de trabalho? Eu tenho um pc (centos com kvm), um notebook (fedora) e servidor pessoal, pode (ou deveria) ser marionizado? O que são (des) vantagens? Ou em nossa empresa, temos centenas de servidores (principalmente com centos), mas cada um deles é um pouco diferente. Não consigo decidir se é melhor ter muitas configurações em um só lugar. (Des) vantagens? Ficarei feliz por todas as suas opiniões ou links com este tópico.

stderr
fonte
Eu recomendaria não tentar "Puppetize" qualquer um dos seus sistemas Windows. Ah, e lendo nosso FAQ sobre que tipo de perguntas você deve fazer aqui.
precisa
7
A quantidade de coisas que você marionete e a quantidade de coisas que marionetes devem ser diretamente proporcionais à quantidade que você se importa com a tarefa que está sendo executada por você. Comece pequeno, apenas marionete a configuração ntp, ou rsyslog. Em seguida, construa a partir daí, se e como você precisar, quando precisar.
Sirex
1
Como você já tem muitos servidores em meu lugar, minha sugestão é que você comece com os bits comuns em todos os sistemas e comece a entrar em detalhes mais específicos conforme tiver tempo.
Zoredache
1
O suporte do Windows melhorou drasticamente nas versões recentes do Puppet. Eu gerencio centenas de nós do Windows com o Puppet. O Puppet nos nós POSIX é muito mais direto e poderoso, mas o uso do Puppet para pelo menos algumas coisas no Windows pode ser incrivelmente útil.
czervik

Respostas:

16

O grau em que você pode fantocizar um ambiente inteiro depende de várias variáveis:

  • A vontade da equipe de automação de escrever automação para todos. pouco. coisa.
  • O condicionamento cultural que permite "Eu vou mudar uma coisa só, de qualquer maneira" é transformar-se em "Eu vou mudar essa coisa neste manifesto de marionetes e aplicá-lo agora; é apenas um caso isolado" . "
  • O grau de heterogenaidade em um ambiente.

Definitivamente, é possível oferecer fantoches a qualquer coisa que possa ser fantochada, mas chegar lá exige a cultura e a adesão certas de todos que podem tocar em um dispositivo compatível com fantoches. Alguns dispositivos são fundamentalmente difíceis de gerenciar dessa maneira, coisas como estações de trabalho e o fantoche é melhor como ferramenta de preparação do que um mecanismo de gerenciamento de configuração.

O Puppet é incrível quando você gerencia uma frota de VMs, fazendo a mesma coisa. Vitória total, e não muito esforço para chegar lá.

No outro extremo do espectro, você tem o que eu tinha no meu último trabalho, que consistia em mais de 200 servidores fornecendo 130 serviços e apenas um pequeno grupo deles fazendo isso com mais de uma máquina. Absolutamente existem empresas (e universidades) que fantocam esse tipo de coisa, mas é muito esforço e exige muito comprometimento. Exige que a primeira etapa do processo de implantação da nova máquina não seja "Instalar o SO", mas "criar manifestos".

Em última análise, é um problema cultural de esforço versus eficiência que você terá que resolver entre toda a sua equipe de TI.

sysadmin1138
fonte
13

TOUP TODAS AS COISAS

Qualquer coisa que seja razoavelmente semelhante em todos os sistemas (ou um subconjunto deles) ou que você possa basear um modelo em um fato do qual possa sair facteré um jogo justo.

Coisas realmente únicas que você provavelmente não deveria se preocupar, e apenas servir as configurações de um arquivo de arquivos.

O que se enquadra em ambas as categorias é uma decisão que não podemos tomar sem conhecer intimamente o seu ambiente, e é isso que você deve entender.

Michael Hampton
fonte
6

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

  1. Instale o Apache
  2. Definir configurações básicas
  3. Adicione vhosts ao apache
  4. Defina configurações extras
  5. 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.

Kashani
fonte
Eu tenho usado a hierarquia do módulo de função e funciona bem. Isso facilita a criação de um ambiente no qual você possa ter muitos servidores desempenhando várias funções (por exemplo, alguns dos servidores role :: web também podem ser role :: storage).
Andy Shinn
5

Atualmente, estou na transição entre sistemas Puppetize razoavelmente semelhantes a Puppetize tudo e estou convencido de que, a longo prazo, Puppetize tudo é uma abordagem melhor.

Se você controla a versão dos manifestos do Puppet (todos nós fazemos isso, certo), obtém todos os benefícios do controle de versão para sua infraestrutura. Sua equipe se torna engenheira de operações. Isso é tão importante para sistemas especiais pontuais quanto fazendas de gado homogêneas. Você obtém um registro de quem mudou alguma coisa, quando eles mudaram, qual foi a alteração exata e a capacidade de reverter a alteração.

Pessoalmente, também acho que me forçar a fazer todas as mudanças através do Puppet me faz pensar com mais cuidado sobre a mudança. Enquanto escrevo manifestos, estou mais atento a cada alteração do que normalmente estou cortando na linha de comando.

Seus módulos Puppet também se tornarão melhores. Você tem mais de um módulo Nginx? Talvez isso signifique que seu módulo Nginx não é tão bom e você precisa torná-lo flexível o suficiente para lidar com todas as suas necessidades especiais. Pelo menos abstraia as semelhanças em um módulo Nginx principal que você estende para módulos "personalizados".

Além disso, qual é sua confiança em poder restaurar todos os seus servidores de necessidades especiais ao estado atual (com relação à configuração) quando o desastre ocorrer? Se todas as alterações necessárias para obter um servidor Ubuntu de fábrica no seu wiki interno forem Puppetized, você poderá facilmente reconstruir o estado atual do seu wiki, incluindo a atualização de memória do Tomcat de ontem por Bob incluído.

Finalmente, isso pode ser muito difícil. Gerenciar muitos servidores muito diferentes pode levar a um código Puppet hacktastic, se você não reservar um tempo para fazer as coisas corretamente. Se você não estiver usando o Puppet Enterprise, considere hiera e / ou um ENC como o Foreman para ajudar a separar seus dados dos manifestos. Todos os dias Puppetize outra coisa. Peça a um colega de trabalho que explique como isso funciona no Puppet. Cada alteração ficará mais fácil.

czervik
fonte