Não demorou muito para que eu começasse a usar o Chef com sinceridade para enfrentar esses mesmos problemas. Eu só cheguei a algum senso de sanidade quando comecei a fazer quatro coisas operacionalmente. Note que estes podem não ser considerados "melhores práticas" por alguns na comunidade Chef. No entanto, foi assim que trouxe a sanidade, a repetibilidade e a ordem para o meu mundo.
- Crie suas próprias receitas. Parei de usar os livros de culinária da comunidade e simplesmente criei minhas próprias receitas, de acordo com minhas especificações. Desta forma eu gerencio e controlo minhas próprias dependências. Muitos argumentariam contra isso, mas honestamente - se eu tivesse lido primeiro algumas receitas do Opscode e da comunidade, eu provavelmente não teria escolhido o Chef como minha solução para começar. Eu mantenho minhas receitas simples, e de acordo com o meu jeito de trabalhar. Eu tenho precisamente zero livros de receitas comunitárias no meu repositório.
- Seja disciplinado sobre atualizações. Se eu atualizar uma receita, asseguro que ela funcione em todos os lugares e passei pelo incômodo extra de implantá-la em todos os lugares, mesmo que isso atrapalhe o fluxo de trabalho e adicione atrito. A longo prazo, esta é a chave para a sanidade do Chef. Em casos extremos, se eu precisar de variações para alguns hosts, como um ambiente de teste versus produção, então eu os codifico no livro de receitas. Mas minha filosofia é que a versão mais recente de todos os livros de culinária deve ser aplicada com segurança em todos os lugares em que são necessários.
- Use o Chef Solo para tudo. A cada poucos meses, de alguma forma eu coloco em minha cabeça que eu deveria tentar usar o Chef Server novamente. A edição da comunidade está melhorando, mas todo o paradigma parece nunca se encaixar no meu mundo. E toda vez que eu tento, eu facepalm e me chuto. O paradigma do Chef Server é adequado para um mundo com servidores de longa duração que precisam de mudanças freqüentes nos sistemas. Eu faço alterações de sistemas tão raramente que ter meus servidores constantemente check-in para um servidor de chef para atualizações é apenas bobo. E eu tenho ferramentas muito melhores para garantir que meus hosts sejam saudáveis. Meu trabalho está em um mundo de máquinas virtuais descartáveis, onde elas podem sobreviver apenas a uma ou duas alterações de configuração. Eu agora uso exclusivamente o Solo do Chef e empurro as alterações para os meus hosts, além de empurrar exatamente os mesmos livros de receitas para todos os hosts que precisam deles.
- Evite compilar o software durante a execução do Chef. O caso mais extremo (isto é, estúpido) para mim envolveu a compilação do ruby-1.9.3 a partir da fonte toda vez que inicializei uma nova caixa. Mas a criação de pacotes personalizados pode ser uma dor na bunda. Uma vez que eu descobri a excelente ferramenta fpm , tornou-se trivial empacotar meus próprios rpms, debs e gems e tornei minha vida muito mais eficiente e fácil.
Espero que isso ajude alguém!
- ATUALIZAÇÃO -
Quase três anos depois, esses princípios permaneceram úteis para mim. Mas vou acrescentar mais um conselho, e é realmente pelas mesmas razões que eu preferi chef-solo ao invés de chef.
- USE ANSEÍVEL EM VEZ