fantoche ou chef para servidor autônomo com recursos limitados

1

Eu tenho um pequeno servidor linux virtual (ram de 500 megas). Eu posso eventualmente pegar um ou dois servidores, não mais.

Eu sou um dev, não um administrador do sistema, então não conheço as melhores práticas envolvendo a administração do Linux. Eu sei que não quero configurar uma máquina, emitir um monte de comandos para configurar usuários, instalar pacotes, alterar variáveis de ambiente, apenas para perder tudo isso se minha máquina falhar.

Prefiro manter todas essas informações em um repositório de origem, junto com meu código.

Soluções óbvias são fantoches ou chefs, mas eu não uso um conjunto de máquinas. Eu quero uma maneira declarativa de configurar usuários, instalar pacotes, etc., mas não quero configurar certificados ssl, servidores mestres, etc. (francamente, eu não posso, minhas máquinas são muito baratas e têm muito pouca memória).

Existe uma solução melhor para máquinas em stand-along? Eu quero ser capaz de usar esta solução rapidamente para recriar minha máquina (no amazon, linode, rackspace ou no meu desktop).

    
por user23398 06.05.2011 / 19:42

2 respostas

5

O fantoche é muito fácil de configurar. Você não precisa fazer quase nada, e um cliente pode rodar autonomamente. Deixe-me apenas dar um exemplo. Digamos que você tenha um arquivo chamado config.pp com as seguintes linhas:

package { 'apache2': ensure => installed }
service { 'apache2':
   ensure  => running,
   enable  => true,
   require => Package['apache2'],
}
user { 'bob':
   ensure  => present,
   uid     => 1000,
   gid     => 'bob',
   require => Group['bob'],
}
group { 'bob':
    ensure => present,
    gid    => 1000,
}

Se você executar puppet apply config.pp , ele garantirá que o pacote apache2 esteja instalado, que o serviço esteja em execução e ativado para iniciar ao inicializar e que o usuário bob seja criado com o grupo bob.

Isso é tudo - instale o cliente de marionetes, digite isso nesse arquivo e execute um comando. Você pode agendar isso no crontab se quiser garantir que a configuração seja mantida sob controle, sem mestre. Uma vez eu instalei 10 servidores ganeti - o que envolve a configuração de vários pacotes e configurações, com pelo menos uma reinicialização no meio do caminho - muito parecido com isso.

O Puppet consome alguma memória - 500 MB é um pouco barato, mas se você for executá-lo principalmente para instalar coisas, isso deve ser suficiente. Eu mantenho meus próprios servidores a 1 GB, pelo menos, para garantir que os fantoches não causem problemas aos serviços em execução no servidor.

Além disso, o Puppet é definitivamente declarativo, embora você precise aumentá-lo um pouco com os scripts a serem executados ou com o código Ruby para ensinar novos truques. Para as suas necessidades, parece improvável que você tenha que recorrer a isso.

    
por 06.05.2011 / 20:38
3

O Cfengine é uma ferramenta de gerenciamento de configuração que inspirou Puppet e depois Chef, com um histórico comprovado de mais de 15 anos.

Alguns pontos a serem observados:

  • É fácil configurar - consulte este guia da IBM
  • Ele pode ser executado de forma independente (nenhum servidor é necessário)
  • É muito econômico em recursos - o consumo de memória é descrito em este post de blog - tanto para executar uma vez e como um daemon residente
  • Ele é codificado em C e tem poucas dependências (somente BerkeleyDB e a biblioteca PCRE)

Você pode automatizar seus procedimentos de instalação e fazer com que o Cfengine os verifique em um repositório de origem e possa reproduzi-los em qualquer servidor, se você perder o atual. Você também obterá o benefício adicional de reparações automáticas - depois de definir o estado em que deseja que seu servidor esteja, quaisquer alterações (ou seja, um pacote será removido, um usuário excluído, etc) serão automaticamente revertidas pela configuração. ferramenta de gerenciamento.

    
por 08.05.2011 / 01:50