Automatizando a implantação do servidor

28

Acho que estou constantemente configurando servidores e VPSs praticamente idênticos para vários de meus clientes e isso pode ser muito demorado. Muitas vezes, a única coisa que muda entre cada implantação é o site diferente que deve ser exibido. Existe uma maneira fácil de automatizar tudo isso e ter a monotonia chata de configurar 56 servidores idênticos?

Os servidores que eu tenho implantado até agora são apenas Ubuntu, mas é possível que eu comece a usar outros sistemas operacionais Linux ou Windows. Até agora, eu olhei para Capistrano, mas parece estar focado em escrever pequenos programas em Ruby para fazer o trabalho, e eu não tenho nenhum conhecimento

    
por Josh Hunt 30.04.2009 / 13:47

7 respostas

20

Puppet parece perfeito para o que você está tentando fazer, com a ressalva de que, a partir de agora, não há suporte para o Windows.

No seu caso, você definiria um nó de servidor em termos de todos os pacotes que são idênticos entre as máquinas. Em seguida, você define os hosts individuais como nós que herdam do servidor e configura as coisas exclusivas específicas para ele.

O fantoche é declarativo - permite descrever suas caixas em termos dos recursos que cada caixa deve ter. Então, se você quer ssh - você escreve uma classe para esse recurso - e dentro da classe você pode incluir a lógica sobre como o ssh é chamado um pouco diferente no FreeBSD vs Ubuntu. Ele também sabe usar yum dentro do Redhat e apt-get dentro das distribuições baseadas no Debian, e ports nos BSDs. Agora, no seu nó Server, você terá apenas uma linha como include ssh - e o fantoche fará a coisa certa e colocará o SSH na máquina sem que você tenha que lembrar se é o Ubuntu, Redhat ou FreeBSD.

O que é bom é que todas as coisas do Servidor estão em um único lugar - e se em algum ponto você adicionar à definição do nó do Servidor, TODAS as máquinas atualizariam suas configurações de acordo.

Neste momento, estou gerenciando apenas três caixas usando o Puppet - mas já valeu a pena. Depois de passar uma semana arrumando uma caixa que usaremos para apresentação de estímulo em um experimento, o driver da placa de vídeo era muito antigo na versão do Ubuntu que eu coloquei (8.04). Eu tive que instalar o Ubuntu mais recente (9.04), mas depois disso eu tive que executar o apt-get e executar o fantoche - e tudo o que eu tinha passado uma semana configurando foi restaurado.

O Puppet tem uma pequena curva de aprendizado, mas evitei com sucesso o aprendizado do Ruby - eu sei que estou usando, já que é o que o fantoche está escrito - mas até agora eu consegui apenas modificar os exemplos na documentação e as receitas no wiki . Outra desvantagem é que o fantoche demora um pouco mais para fazer as coisas pela primeira vez. A vantagem é que tudo que você altera em todas as suas máquinas é armazenado em um único local - é uma prática padrão manter a configuração dos fantoches em um sistema de controle de versão - para que você possa sempre olhar para trás e ver como configurou os servidores no passado - ou retroceder algumas alterações mal sucedidas.

Por fim, aqui está um vídeo rápido que faz uma simples demonstração de fantoches que me ajudou começou rapidamente.

    
por 01.05.2009 / 08:11
9

Nós usamos Cobbler e Puppet para automação de configuração e construção de máquinas reais e virtuais.

O Cobbler une o DHCP, o boot PXE e o Kickstart para tornar a implementação nada mais do que adicionar um perfil de máquina e apertar o botão liga / desliga. Para VMs, o koan comando faz a magia (no nosso caso) Xen para iniciar a instalação - no dom0 eu apenas digito:

koan --system vps.fqdn --server cobbler --no-gfx

então virsh console para assistir a um edifício do VPS sem qualquer interação.

Usamos o RHEL e temos um monte de perfis configurados para particionar discos, configurar redes e instalar pacotes básicos para diferentes classes de servidores. O Cobbler suporta raças Debian e Ubuntu, mas eu nunca tentei. Um aparte: outros usos interessantes para o Cobbler incluem a execução de ISOs memtest e Atualizações do firmware HP .

Uma vez que nossos sistemas são construídos com o Cobbler Puppet assume para configurar os aplicativos, daemons do sistema, registrar a caixa com o RHN, etc. Puppet é executado como um daemon que verifica periodicamente se a configuração do sistema corresponde aos manifestos definidos - você sabe atualizações foram para todos os servidores. Também é uma ótima maneira de ter certeza de que uma caixa desativada para manutenção tem a configuração correta antes de retorná-la ao serviço ao vivo.

Fantoche é realmente incrível. Você não precisa ter todos os aspectos da sua configuração sob seu controle - comece gerenciando algo simples que você precisa configurar em cada caixa ( sudoers é o exemplo canônico) e pegue a partir daí. Certifique-se de que seus manifestos de marionetes também sejam versionados; nada é melhor do que ser facilmente capaz de reverter para uma configuração válida sem ter que lembrar o que ajustar.

    
por 17.05.2009 / 14:52
6

Onde estou trabalhando no momento, temos que gerenciar a parte do Linux de nosso farm de servidores, que é um pouco mais de 300 servidores Linux. Isso inclui principalmente HP Proliants, seguido por IBM 3850s, alguns blades IBM, VMware ESX e alguns KVM para nossos servidores de gerenciamento internos.

sapateiro

Nós olhamos para o sapateiro, mas o problema era que o sapateiro é muito específico do RHEL / Red Hat. Precisamos dar suporte ao RHEL e ao SLES, e o Ubuntu é o próximo.

fantoche

Consideramos o fantoche, mas depois decidimos contra ele, já que depende do Ruby, o que significa que uma atualização do Ruby poderia potencialmente quebrar nosso sistema de gerenciamento.

hotwire

Hotwire é o que usamos (desenvolvido internamente, mas é de código aberto), e o fizemos nos últimos anos. Em primeiro lugar, faz o inventário dos sistemas que serão construídos, o que significa inventariar o centro de dados, o rack, o hardware, o sistema operacional, a rede, etc. e, em segundo lugar, executar o build & implantar. Depois que o sistema é criado, o inventário automático do hotwire mantém o inventário em sincronia, enquanto o cfengine os mantém. O Hotwire sabe sobre o hardware do servidor conversando com os dados do SMBIOS / DMI no Bios por meio do python-dmidecode .

Os pontos de bônus são que ele combina o inventário e o processo de criação em um, portanto, há menos para gerenciar e o recurso de inventário ao vivo é ótimo, pois sabemos se algo não está certo.

As desvantagens são que a interface do usuário ainda precisa de polimento, e há bugs aqui e ali, mas o desenvolvimento ainda está em alta, e os bugs relatados são corrigidos relativamente rápido.

cfengine

Nós usamos cfengine porque além disso, e fantoche, não há mais nada. Na verdade, é uma boa ferramenta, mas "boa" apenas em função de quão boas são suas políticas - se você definir políticas perigosas, um pequeno erro pode causar muitos danos. Por exemplo, por política, não "modificamos" arquivos, ou os substituímos ou não. Além disso, todos os arquivos substituídos têm um cabeçalho que faz com que qualquer pessoa que o edite saiba que ele será substituído na próxima vez que for executado (ele é executado via cron por hora).

A configuração e todos os arquivos enviados pelo cfengine para os servidores também são mantidos em um SCM e, usando ganchos de pós-consolidação, quando possível, verificamos a sintaxe e, se isso falhar, a confirmação será rejeitada. Isso é fácil para aplicativos interessantes, como o Apache, mas não é tão fácil para a maioria dos aplicativos corporativos.

    
por 27.05.2009 / 16:58
5

Eu tive sucesso com o Puppet . Chef é novo para emergir. Para uma lista mais longa de opções e um gráfico de comparação, consulte o artigo da Wikipédia, Comparação de software de gerenciamento de configuração de código aberto .

    
por 30.05.2009 / 15:21
3

Para automatizar a instalação, dependendo do sistema de destino:

  • Debian / Ubuntu: pré-configuração FAI ou d-i
  • RedHat / Fedora: Kickstart
  • Novell / openSuSE: AutoYaST
  • Solaris: Jumpstart
  • Windows: unattended.sourceforge.net

Para o gerenciamento de configurações, sugiro usar o fantoche.

    
por 31.05.2009 / 01:01
2

Estou tendo muito sucesso com Puppet , mas você precisa escrever bastante .

    
por 30.04.2009 / 13:54
2

Outra votação para Puppet aqui. Usamos isso extensivamente para executar todo o gerenciamento de instalação e configuração de servidores e aplicativos. Mais de 200 nós e contando. O suporte do Windows está aparentemente em desenvolvimento, embora em que estado não tenho certeza.

Ainda estamos investigando o lado inicial do bootstrap do sistema operacional, mas, como mencionado acima, o Cobbler parece interessante. No momento, estamos usando uma mistura de inicialização PXE com a pré-configuração Debian / Ubuntu, mas não é ideal.

    
por 27.05.2009 / 20:53