Chef - quanto de abstração é inteligente?

3

Temos > 20 aplicativos individuais que suportamos. A maioria não vê mudanças mais do que algumas vezes por ano. Achamos que o chef nos ajudará a seguir adiante.

Estou tentando encontrar um meio feliz entre a configuração manual e a automação. Eu tenho duas boas perguntas:

1) É mais inteligente configurar um servidor de chef com livros de receitas e funções para cada um dos nossos aplicativos? Ou devemos isolar cada projeto e ter um servidor chefe para cada aplicativo?

2) (Se tivermos vários servidores de chefs por aí) Como devo gerenciar vários servidores chef? Com outro servidor de chef? chef-solo?

Eu vejo muitos artigos documentando como configurar o chef ou cobrindo recursos, mas ainda não vi um documento muito bom documentando como alguém está realmente usando o chef em um ambiente de produção médio-grande. Algumas dicas nessa direção podem ser boas.

Obrigado!

    
por Jeff V 31.12.2012 / 20:11

1 resposta

3

A questão principal é um pouco complicada. A resposta superficial para quanto de abstração é "não muito, mas não muito pouco". Apenas um pouco mais sério, é algo que você realmente tem que descobrir por si mesmo, pois depende de muitos fatores.

Um bom primeiro passo seria criar uma configuração de "basenode" (uma função e atributos de ambiente) com todos os seus nós gerenciados pelo Chef. Isso pode incluir um monte de livros de receitas comunitárias existentes, como:

Nesta fase, os seus aplicativos seriam configurados e instalados manualmente em cima dos nós de base.

Agora, você deve ter uma ideia melhor de como o Chef funciona para que você possa começar a pensar em como seriam mais os livros de receitas específicos de domínio. Continue trabalhando de baixo para cima e escreva livros de receitas para instalar os pacotes necessários para seus aplicativos e use atributos e bolsas de dados para configurá-los. Pode haver alguma semelhança entre os 20 aplicativos que você menciona (eles são na maioria aplicativos Rails, por exemplo) que você pode incluir em um conjunto comum de receitas.

Você faz questão de encontrar um meio entre a configuração manual e a automação. Uma das armadilhas que eu tive quando comecei com o Chef foi tentar automatizar o máximo possível. Isso acaba se transformando em um pesadelo de casos de esquina e bugs estranhos que são corrigidos reiniciando um serviço manualmente ou reiniciando o nó. Não é divertido manter e depurar. Atualmente, eu tento manter os recursos de pacote, arquivo e modelo o máximo possível.

Ter 100 funções soa um pouco exagerado, mas não sei mais detalhes sobre sua situação. Eu costumo trabalhar com funções mais genéricas como "Apache-Server" ou "RabbitMQ-Server" e, em seguida, uso várias combinações de atributos, bolsas de dados e funções mais específicas para personalizar cada nó.

    
por 04.01.2013 / 03:49