Ansible, Puppet e Chef

Neste artigo relato minha experiência com estas ferramentas. Implementei o Puppet devido a algumas necessidades que me foram explícitas, conforme explicado durante o artigo.

[ Hits: 7.537 ]

Por: Fabricio Cruz em 06/02/2017


Introdução



Após assumir um projeto em uma multinacional alemã, realizei um estudo com o objetivo de comparar as 3 ferramentas. Realizado o estudo, defendi a escolha perante a liderança técnica do mesmo em algumas apresentações, onde gerei alguns vídeos de demonstração.

Meu objetivo aqui, não é afirmar que uma ferramenta é melhor que a outra, e sim demonstrar os diferenciais. Cada projeto é singular e a escolha deve ser feita caso a caso. Eu realmente instalei as ferramentas e realizei testes, chegando às conclusões.

Críticas, dúvidas e sugestões são sempre aceitas, ok?

Pontos analisados

Seguem os pontos analisados durante o estudo:
  • Popularidade da ferramenta
  • Licença
  • Sintaxe mais simples de entender
  • Tratamento de exceções
  • Possibilidade de visualização do estado das configurações
  • Fun factor

Popularidade da ferramenta

Tanto Puppet, quanto Chef, são muito populares e suas comunidades são ativas, existem muitos módulos desenvolvidos para as duas ferramentas. Empresas como Facebook e Yahoo, utilizam Chef enquanto McAfee e Nasa, por exemplo, utilizam Puppet. Cisco e EA Sports utilizam Ansible.

Puppet é uma ferramenta mais sólida e com uma documentação melhor elaborada e mais clara, em relação ao Chef. Ansible é mais recente que as outras, mas não menos eficiente, a grande vantagem em relação às duas é o fato de não necessitar de agente instalado em seus clients.

Utiliza SSH para se conectar aos hosts e isso pode ser uma grande vantagem imaginando um cenário onde não é possível realizar instalações de agentes e em outros, onde o agente consome uma parte considerável de memória e/ou cpu. Até mesmo o esforço para manter agentes atualizados e correção de Bugs serão preocupações descartadas.

A documentação e a quantidade de roles desenvolvidos e disponíveis é algo fantástico, ansible utiliza arquivos YML, seu aprendizado se torna rápido.
Lista completa de quem utiliza as ferramentas:

Licença

Sobre valores das licenças, quando falamos em versões Enterprise, seguem os links:
Todos os meus testes foram realizados com as versões gratuitas.

Sintaxe mais simples de entender

Nesse ponto, Chef perde para as outras ferramentas, uma vez que exige conhecimento da linguagem Ruby, o que pode ser encarado como uma oportunidade de adquirir novos conhecimentos, porém, aumenta o tempo de aprendizado.

Já Ansible e Puppet, são muito simples e não exigem conhecimentos específicos de uma linguagem, que possa gerar demora no aprendizado da mesma.

Tratamento de exceções

O que acontece quando uma instalação falha?

Todas trabalham da mesma forma, notificam erros nos logs e o Sysadmin decide o que deve ser feito após a falha, com notificação via e-mail, execução de algum comando ou script. Nesse ponto, o Ansible é interessante por criar um arquivo de log para retry, para cada tentativa de execução.

Possibilidade de visualização do estado da configurações

A ideia foi analisar a possibilidade de visualização do estado em que se encontram as configurações de cada máquina (o mais bonito possível).

A interface do Chef é muito pobre, possui poucas opções de gerenciamento via GUI, deixa muito a desejar. Puppet e Ansible possuem interfaces melhores, com gráficos bacanas e que permitem realização de um bom relatório gerencial, por exemplo. A interface do Puppet é um pouco mais bonita que a do Ansible. Nesse ponto, o puppet tem uma pequena vantagem.

Todas as interfaces utilizadas nos testes são versões Freeware.

Fun factor

Qual ferramenta é mais divertida de mexer, mais "bem feita"?

Chef é uma ferramenta complexa. A documentação ainda precisa ser ajustada em alguns pontos. Sua configuração é complexa, em determinados momentos se faz necessário alterar mais de 2 arquivos de configuração para obter o resultado esperado.

Não é divertido!

Puppet é uma ferramenta mais sólida (até por ser mais antiga) e de fácil configuração. A ideia é que, mesmo uma pessoa que não seja Sysadmin experiente, consiga utilizá-la de forma tranquila.

É bem divertido!

O fato de obter agente nesse caso, é um diferencial positivo, pois até mesmo o agendamento das tarefas consta em um arquivo de configuração e não necessita de utilização e gerenciamento de cron, como no Ansible e no Chef.

Ansible é muito divertido também, é simples e objetivo perde para o Puppet na questão da interface e pelo fato de não ter um gerenciamento nativo de schedules (somente cron e Ansible Tower).

Conclusão

Para a situação atual, levando em conta a praticidade e interface Web eficaz, o Puppet é a melhor opção, caso não existam restrições ao uso de agentes. Caso exista essa restrição, o Ansible é a melhor opção.

O Chef possui configuração complexa e a documentação necessita de melhorias além de necessitar de conhecimento prévio de Ruby.

Puppet e Ansible são duas ferramentas muito boas. O Puppet tem a vantagem de facilitar a configuração de cron mesmo via terminal, enquanto Ansible facilita somente via Interface, via terminal gera um pouco mais de esforço.

A maior vantagem do Puppet é a interface gráfica (Foreman), que não é muito melhor, mas a parte gráfica está um passo à frente do Ansible Tower (Versões Freeware).
Puppet foi a ferramenta escolhida para nosso ambiente, por conta da interface gráfica ser melhor e, pelo fato de que uma simples instalação do agent, em máquinas atrás de NAT, funcionar tranquilamente.

Implementei o Puppet e o projeto foi concluído com sucesso.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Squid com WCCP

Leitura recomendada

Como ajudar o Software Livre

OpenSOLARIS - que sistema é esse que quer "desbancar" o Linux?

TI - Ajuda ou atrapalha?

GNU/Linux + Dogmas

Cego guiando cego

  
Comentários
[1] Comentário enviado por removido em 07/02/2017 - 01:25h

Senti falta do orquestrador. Recomendo como complemento.

http://techfree.com.br/2015/03/o-porque-escolhemos-o-puppet/

[2] Comentário enviado por fabgcruz em 17/02/2017 - 17:00h

Obrigado por sua crítica construtiva.

[3] Comentário enviado por marcelomessias em 15/08/2017 - 19:59h

Obrigado por compartilhar, pelo que ando lendo, já estava decidido à utilizar o puppet, seu artigo foi o ponto final.

[4] Comentário enviado por fabgcruz em 20/08/2017 - 21:06h

Obrigado Marcelo !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts