automatiza a configuração do servidor com as compilações de origem

1

Eu tenho um conjunto de servidores centOS5.4 para o qual tenho um "script de construção". O servidor é executado como um servidor web que executa o apache + PHP para nosso aplicativo proprietário.

O script de construção, basicamente, faz uma instalação kickstart do SO base e das bibliotecas que eu preciso. Eu então tenho que entrar e copiar os binários personalizados do Apache e do PHP que são criados para o nosso ambiente. Finalmente, copio o nosso repositório de código fonte.

Eu tenho alguns problemas com isso e gostaria de receber conselhos sobre como melhorar:

1) Se eu construir um novo servidor, quero que tudo seja o mesmo que os outros servidores. Mas no momento da instalação nos outros servidores fiz uma atualização imediata do yum. Se eu fizer isso atualmente no novo servidor, todos os tipos de bibliotecas serão diferentes.

2) Copiar manualmente tudo é uma droga. Eu estou prestes a construir um script de shell que rscync e scp todo o código-fonte apropriado e arquivos de configuração, mas eu quero ver se existe uma maneira melhor primeiro.

3) Seria ideal criar uma imagem de disco-rígido do disco rígido e, em seguida, digitar apenas DD no novo servidor. MAS, para vários servidores, estou usando o software RAID no modo espelho. Além disso, o hardware é um pouco diferente. Isso importa? Será que a configuração do raid do modo espelhado será selecionada e reconstruirá a configuração do raid no segundo disco depois que eu voltar da inicialização? O outro hardware do servidor entrará em conflito com a minha instalação básica?

Espero que alguém saia do campo da esquerda e diga: "Sem idiota, apenas servidor de usuário clone enterprise 2k ++;)". Eu adoraria esse produto. Obrigado por suas respostas com antecedência.

    
por Zak 28.06.2010 / 23:41

2 respostas

1

O CentOS é um sistema operacional de nível empresarial. As atualizações de pacote não aumentam a versão principal, muitas vezes têm as correções de volta portadas e são bem testadas antes do lançamento. O risco é mínimo. Para diminuir o risco, teste você mesmo as atualizações, seu aplicativo e, em seguida, agende atualizações regulares em toda a sua infraestrutura.

Coloque seu aplicativo em um servidor de arquivos e escreva um script de construção para implantar o aplicativo. Algumas pessoas gostam de usar sua ferramenta de empacotamento preferencial para implantar aplicativos personalizados internos, mas pode ser tão simples quanto um tarball ou uma transferência recursiva.

Criar imagens é algo que está se tornando menos comum. Quando é usado, normalmente é aplicado a estações de trabalho ou a ambientes com padrões de construção mais estáticos. Historicamente, ele era usado em grandes empresas que construíam muitos servidores, já que era mais rápido construir a partir de uma imagem. Eu normalmente evito isso com servidores UNIX, mas se os tempos de compilação se tornassem incomumente sensíveis eu começaria com o benchmarking em relação a outros métodos.

Há uma tonelada de ferramentas de gerenciamento de configuração disponíveis que você pode usar para ajudar a manter seus padrões também. Spacewalk é a contraparte Open Source da RedHat Servidor Satellite .

Entrei em mais detalhes sobre o estabelecimento de builds e padrões de servidores nos seguintes posts:

Gerenciando uma aplicação em vários servidores, ou PXE vs cfEngine / Chef / Puppet

    
por 29.06.2010 / 00:05
1

1) Desde que você faça atualizações regulares em todas as suas máquinas, isso não será um problema. Eu sei que você mencionou a criação de "máquinas". Aqui nós usamos a virtualização - eu criei um contêiner "base" e o mantenho desligado - usando as ferramentas fornecidas pelo Virtuozzo, eu posso "clonar" essa imagem repetidas vezes. Quando eu preciso atualizar o clone, eu inicio, executo as atualizações e, em seguida, desligo. Embora isso funcione muito bem para todos os novos contêineres, ainda preciso executar atualizações em todos os outros contêineres em execução (Embora eu possa optar por manter a mesma imagem "obsoleta" e replicar) O que eu obtenho é ter a configuração de software de que preciso (todos os aplicativos, código, binários, etc implantados e configurados) e girando "novos servidores" é um piscar de olhos

2) Você já pensou em talvez construir um RPM a partir do seu código-fonte? Embora escrever os arquivos de especificações reais tenha sido um pesadelo, se você estiver simplesmente executando código PHP, não há nada para "compilar", o que significa que está apenas escrevendo um arquivo de especificação que pega os arquivos de origem do RPM e os coloca no local correto, além de possivelmente executar vários scripts de configuração para o Apache / seu aplicativo. Isso pode ajudar você a saber qual servidor está executando a versão do seu código e oferecer uma maneira de melhor manter sua infraestrutura.

3) Eu realmente não posso responder a essa parte da sua pergunta.

    
por 29.06.2010 / 01:28