Linux Bulk / Administração Remota

9

Além da nossa infraestrutura interna de TI, temos cerca de 500 máquinas Linux hospedando nossos serviços para o mundo on-line. Eles estão agrupados em um grupo de clusters como Banco de Dados A-n, Produto A-n, NFS, Backoffice e assim por diante. Além disso, eles são administrados por um provedor externo, de acordo com nossas especificações e requisitos.

No entanto, enfrentamos muitos problemas durante o desenvolvimento de software (web), roll-out e deploy - especialmente porque os ambientes de desenvolvimento e de teste não têm quase nada em comum com os sistemas live (eu poupo os detalhes desagradáveis ..).

Assim, tentei criar máquinas virtuais, copiei os vários sistemas dinâmicos da maneira mais exata possível e os preparei para se conectar, por exemplo, os bancos de dados de desenvolvimento em vez dos "reais" transparentemente para desenvolvedores (eles não são root ). Isso funciona muito bem, mas ...

Eu queria saber como se poderia administrar esses sistemas remotamente e em massa ? Existe alguma família de software que eu não conheço? Ou, pelo menos, algumas técnicas ou princípios com os quais alguém deveria estar familiarizado?

Forneceríamos a cada desenvolvedor um monte de imagens para serem executadas localmente (VirtualBox). O departamento de QA obteria clusters virtuais (XEN ou Hyper-V). Se eu precisar fornecer um módulo de servidor adicional, redirecionar uma nova conexão de banco de dados ou apenas atualizar tudo fornecido pelo gerenciador de pacotes ... como eu poderia fazer isso sem ser forçado a fazer logon em todos os sistemas e / ou pedir aos meus colegas para baixar e executar algum script de equipamento?

Eu acredito que há muitas soluções. Bem, de alguma forma eu sou muito estúpido para inserir as palavras-chave corretas nos motores de busca ... Ou essa questão não é tão trivial quanto parece?

Para o registro:

  • Quase todos os sistemas estão executando o Debian GNU / Linux 6.x "squeeze"
  • Nenhum desenvolvedor é forçado a usar um sistema operacional específico em sua estação de trabalho
  • O orçamento é limitado, é claro, mas não muito pequeno para comprar software proprietário
  • Uma solução que envolva nosso fornecedor mencionado é preferida
por mjhennig 10.06.2012 / 00:59

3 respostas

13

Depende exatamente do que você precisa e do que está procurando. Mas, em geral, existem várias soluções para " gerenciamento de configurações como:

  1. marionete
  2. chefe
  3. cfengine
  4. ansible
  5. sal

Eu pessoalmente recomendo fantoche como tem uma grande comunidade e um monte de receitas externas fornecidas. Isso permite que você configure e gerencie sistemas automaticamente. Se você combinar isso com repositórios próprios e atualizações automáticas, por exemplo, unattended-upgrades você pode atualizar o sistema automaticamente.

Outra solução é apenas fornecer seus próprios pacotes como company-base etc., que depende automaticamente do software necessário e pode configurar seu sistema automaticamente.

Você também deve analisar as implantações de automação (barebone e virtualized). Se você combinar isso com o gerenciamento de configuração ou com seu próprio repositório, poderá automatizar e reinstalar facilmente seus sistemas. Se você quiser começar com a instalação automatizada, dê uma olhada no theforman que suporta a libvirt, bem como as instalações de ossos descobertos e possui um suporte de fantoches integrado. Se você quiser fazer você mesmo, você pode procurar no kickstart (redhat et. Al.) Ou "preseeding" para configurar automaticamente Seu sistema. Para o Debian você também pode usar algo como debootstrap ou um wrapper chamado grbo-debootstrap suportando imagens virtualizadas.

Para ajudar a fornecer as imagens do VirtualBox para o seu desenvolvedor, dê uma olhada no vagrant que permite automatizar a criação de sistemas virtualizados com o VirtualBox, que oferece suporte ao chef , fantoche e shell scripts para personalizar seu ambiente virtual.

Se você quiser usar a solução do seu provedor existente, pergunte a eles como eles gerenciam seus sistemas, mas provavelmente será algum tipo de gerenciamento de configuração. Pode ser possível executar seu agente em seus sistemas se você puder acessar o servidor de configuração.

Para as palavras-chave do Google, procure em devops , configuration management , it automation e server orchestration .

Em suma, automatize o máximo possível e nem pense em fazer as coisas manuais.

    
por 10.06.2012 / 01:06
3

Ulrich já deu a resposta sobre implantação de software e configuração automatizada de servidores.

Os princípios por trás disso são

  • Defina como seus servidores devem ser - isso inclui um software comum que é instalado por padrão, o esquema de particionamento e o layout do sistema de arquivos
  • Os servidores de produção, teste, teste e desenvolvimento não devem diferir em relação a esses padrões básicos (caso contrário, você terá problemas mais tarde - como aconteceu)
  • Use um gerenciamento de alterações adequado para documentar TODAS as alterações que você fez (incluindo pequenas alterações de uma linha em qualquer configuração)
  • Sempre você muda primeiro no teste, depois no desenvolvimento, depois na preparação e por último na produção

Você pediu uma ferramenta útil para gerenciar massas de servidores - meu favorito pessoal é o cluster-ssh ( cssh ). Digite uma vez e faça alterações em vários servidores simultaneamente.

Se você descobrir um problema e tiver uma correção para ele, isso removerá o problema:

  1. Aplique a correção a Test / Dev / Staging / Prod (veja acima) se realmente funcionar
  2. Aplique a correção em seus modelos virtuais para que futuros clones da VM não tenham esse bug
  3. Aplique a correção ao seu processo de instalação física (kickstart / autoyast / whatever)
  4. Aplique a correção a TODOS os servidores

Se você está enfrentando massas de servidores para corrigir isso, é um processo que precisa ser bem documentado e, no final, uma equipe diferente deve verificar se a correção foi completamente aplicada.

Nós empregamos o Mantis (código aberto, PHP) para esse propósito.

    
por 10.06.2012 / 22:09
2

Eu gerencio cerca de 30 produtos e algumas centenas de servidores em vários países. Eu sou o gerente de configuração de software, portanto, não tenho acesso root (por design), não toco os bancos de dados ou seus servidores (novamente, por design) e tenho que pular muitos obstáculos por causa da segurança corporativa. Mas eu gerencio as configurações em teste, preparação e produção, incluindo links e alterações de banco de dados. Eu tenho vários scripts que saem para servidores usando combinações de ssh , python e scripts de shell.

As principais coisas em que pensar são:

  1. Que tipos de interações você terá com seus servidores? Apenas upload de arquivos? Executando programas de linha de comando? Executando clientes X remotos?
  2. Qual nível de segurança é necessário para acessar esses servidores? Firewalls, redes seguras, vpn? É ssh suficiente e de um local seguro central?
  3. Quanto pode ser automatizado em cada servidor? Você pode instalar um programa em cada servidor e executá-lo, ou você precisa transmitir o programa através de algo como ssh para executá-lo remotamente? Você pode fazer o script com expect ou apenas uma invocação de linha de comando?

O VirtualBox oferece muitas ferramentas de linha de comando que você pode administrar através de apenas ssh ou sistemas como puppet como Ulrich menciona.

    
por 10.06.2012 / 02:33