Pesquisa de site

Ansible vs Chef atualizado para 2023 [Infográfico]


Ansible e chef são ferramentas de gerenciamento de configuração (CM) que ajudam administradores de sistemas e profissionais de DevOps a gerenciar um grande número de servidores. Eles se destacam na automação de tarefas repetitivas, implantação simultânea de aplicativos e pacotes em um grupo de servidores ou configuração e provisionamento de novos servidores do zero.

Infográfico Ansible vs Chef

O que é Ansible?

O Ansible foi lançado em 2012 por sua empresa-mãe AnsibleWorks e, desde então, ganhou seguidores dedicados.

O Ansible é escrito em Python e requer apenas que as bibliotecas Python estejam presentes nos servidores a serem configurados, o padrão em quase todas as distribuições Linux.

Os pontos de venda exclusivos do Ansible são sua leveza, relativa facilidade de uso e velocidade de implantação em comparação com outras ferramentas de CM.

Ao contrário do Chef, você não precisa aprender Ruby para usar o Ansible. Isso ocorre porque o Ansible empacota todos os comandos em módulos YAML chamados playbooks.

Isso significa que, desde que sua linguagem preferida possa gerar módulos JSON, você pode usar o Ansible.

O Ansible também acaba com os agentes, toda a comunicação mestre-agente é tratada por comandos SSH padrão ou pelo módulo Paramiko que fornece uma interface Python para SSH2.

Este é um grande bônus adicional devido à segurança embutida do SSH.

O que é Chef?

Chef foi lançado em 2009. É apoiado pelo patrocinador pai OpsCode. É frequentemente comparado e contrastado com outras ferramentas de CM antigas, como o Puppet. Como o Puppet, o Chef é escrito na linguagem de programação Ruby e sua CLI usa uma DSL baseada em Ruby. O software pode ser executado em um cliente-servidor ou em um autônomo chamado Chef-solo.

O Chef utiliza um modelo de agente mestre e um servidor mestre. Isso significa que uma instalação do Chef requer uma estação de trabalho para controlar o mestre. Os agentes são instalados a partir da estação de trabalho usando a ferramenta knife que usa SSH para implantação. A partir daí, os nós gerenciados são autenticados com o mestre por meio de certificados.

Os agentes do Chef devem ser configurados para fazer check-in com o mestre periodicamente e as alterações instantâneas de distribuição do mestre para o agente ainda não são possíveis.

As configurações do Chef são empacotadas em arquivos JSON chamados receitas.

Ansible vs Chef: onde o Ansible vence

O Ansible é uma abordagem mais simples para o trabalho de gerenciamento de configuração. Ele evita a abordagem mestre e de subordinados usada por outras ferramentas de gerenciamento de configuração de software livre, como o Chef.

Em vez de configurar uma instalação cliente-servidor, o Ansible usa uma arquitetura sem agente. Essa é uma abordagem diferente do Chef, que tem um servidor do Chef e várias instâncias do Chef-cliente.

O Ansible gerencia conexões remotas via rede SSH usando implementações como OpenSSH. O SSH é amplamente suportado em plataformas de nuvem, incluindo AWS, Google Cloud e Microsoft Azure.

Isso resulta em implantações mais rápidas e reduz a complexidade dos arquivos de configuração.

Para empresas, o Ansible Tower é um produto premium que possui uma API baseada na web e uma ferramenta gráfica de gerenciamento de estoque. O Ansible Tower adiciona um painel central fácil de usar, onde você pode ver o status de seus servidores, gerenciar o controle de acesso e monitorar as execuções de trabalhos.

Além da curva de aprendizado mais baixa, o Ansible está mais próximo do sistema operacional bare metal no servidor remoto. Ao contrário do CHef, onde você precisa entender a linguagem específica de domínio (DSL) Ruby, o Ansible funciona bem na linha de comando com os comandos com os quais você está familiarizado. Juntamente com seu formato YAML simples para seus manuais.

Isso significa que seus comandos são mais fáceis de raciocinar e o desempenho na máquina é rápido.

A implantação por meio de imagens de VM como VMWare ou conteinerização via Docker é comum para facilitar ambientes consistentes para engenheiros de DevOps.

O Ansible não requer instalação do cliente, eliminando outra penalidade de desempenho da configuração de implantação do aplicativo. Se sua equipe é nova em ferramentas de DevOps, o Ansible pode cobrir a maioria dos casos de uso sem afogar a equipe em um mar de orquestração complexa.

O Ansible também protege sua equipe de DevOps contra desvios de configuração por meio do gerenciamento de configuração idempotente.

>

O Ansible permite que você mantenha o estado de seus servidores consistente no futuro executando playbooks do Ansible com base na política de atualização de inventário do Ansible.

Em execuções futuras de um manual, o Ansible começa "Reunindo fatos" para identificar quando uma alteração especificada foi executada em uma execução anterior do manual.

Isso garante, por exemplo, que se um usuário do sistema operacional especificado ou, digamos, o Github remoto já tiver sido adicionado, ele não será adicionado novamente no futuro quando você executar novamente o manual.

As alterações de estado só serão executadas se o estado desejado especificado em seu guia estratégico não for atendido.

Com seu design minimalista, idempotência e aderência o mais próximo possível do SSH puro, o Ansible vence se você deseja o fluxo de trabalho de implantação, orquestração e gerenciamento de configuração menos intrusivo.

Ansible vs Chef: Onde o Chef Vence

O caso de uso original do Chef na OpsCode quando eles lançaram sua ferramenta de automação em 2009. Apesar dos benefícios de desempenho e da curva de aprendizado mais baixa do Ansible, há casos de uso em que o Chef não é apenas justificável, mas preferível.

É um verdadeiro prazer trabalhar com Ruby DSL do Chef para equipes compostas por uma mistura de engenheiros de DevOps e desenvolvedores de software que usam Ruby para a maior parte de seu trabalho.

Os engenheiros de DevOps familiarizados com o Ruby e outras linguagens imperativas, como Python, C++ e Java, estarão em casa com o Chef.

Embora o Ansible e o YAML sejam fáceis de aprender, o paradigma declarativo é removido da codificação imperativa cotidiana com Ruby, que é o que o Chef replica bem.

Como o Ansible é "apenas SHH", o Chef é "apenas mais um Ruby DSL", portanto, oferece poucas barreiras à entrada de um Rubyist bem versado.

A outra grande vantagem do Chef é sua flexibilidade. Isso se deve ao poder exclusivo da DSL que compõe receitas e livros de receitas do Chef, juntamente com modelos Ruby (ERB) incorporados que fornecem personalização avançada para vários arquivos de configuração.

Se você tem uma implantação de nuvem complexa em plataformas como Amazon EC2, Google Cloud, Azure e OpenStack com agendamentos regulares para atualizações de servidor, o Chef é uma ótima opção.

A versão mais recente do código aberto do Chef, 15.3.14, foi lançada em 12 de setembro de 2019 e está disponível gratuitamente.

Há suporte empresarial Chef Infra, Chef Inspect, Chef Habitat e Chef Automate. Os planos para eles são os seguintes para 100-500 nós:

  • Infraestrutura sem esforço: US$16.500/ano para o plano "Essentials", que vai até 100 nós, e US$75.000/ano para a opção "Enterprise", que vai para 500 nós e fornece suporte premium.
  • Enterprise Automation Stack: o plano "Essentials" custa US$35.000/ano, com Suporte Standard, lado a lado com o plano "Enterprise", que custa US$150.000/ano.

O Ansible ou o Chef têm melhor suporte?

O Chef é um produto mais antigo, portanto, sua documentação é melhor que a do Ansible.

Dito isso, a melhor documentação pode ser devido ao fato de que há mais a aprender do que com o Ansible.

O Chef oferece suporte para Linux, *nix e Windows. A GUI baseada em navegador é boa, mas não tão completa quanto o Puppet e carece de recursos como relatórios e opções de configuração avançadas.

A relativa maturidade do Chef significa que ele pode atrair empresas que valorizam mais a estabilidade do que os indivíduos. A TI é famosa por evitar documentar qualquer coisa, então não é surpresa que a documentação do Ansible ainda seja um ponto fraco.

Isso é mitigado um pouco pela facilidade de aprendizado.

O Ansible está disponível apenas para Linux e Unix e sua GUI é pior que a do Chef, ele não sincroniza com a CLI, então a GUI e a CLI podem fornecer resultados diferentes.

O modo push sem agente do Ansible usando a implementação ZeroMq na camada de transporte significa implantação rápida e sobrecarga de baixo desempenho, a ressalva é que não é tão flexível e poderoso quanto o uso de agentes.

Ansible vs Chef vs Outras Ferramentas de Gerenciamento de Configuração

Ansible e Chef disputam a liderança com outras ferramentas de gerenciamento de configuração notáveis, como SaltStack, Terraform e Puppet, entre as mais notáveis.

Essas ferramentas servem ao propósito de provisionar e manter farms de servidores de maneira previsível e com economia de tempo, seja hospedada no local ou em plataformas de nuvem como Azure e AWS.

A implantação em larga escala vem com desafios únicos, como manutenção de aplicativos, requisitos de conformidade, aplicação de patches, desvio de configuração e atualizações de software, todos representam um desafio único para as equipes de DevOps.

As ferramentas de DevOps tendem a se enquadrar em duas categorias:

  1. Orquestração: lida com o provisionamento de servidores e outras infraestruturas, incluindo bancos de dados entre clusters, ao mesmo tempo em que transfere a responsabilidade pelo gerenciamento do software em execução nas instâncias para ferramentas de gerenciamento de configuração.
  2. Gerenciamento de configuração: concentre-se no gerenciamento do software em nós de infraestrutura, incluindo instalação e atualizações em servidores já existentes

Outras ferramentas de DevOps:

  • SaltStack: Escrito em Python, o SaltStack(Salt) mantém o estado do seu inventário em um servidor mestre, sendo o YAML o formato padrão para armazenar configurações. Os modelos do SaltStack usam a linguagem de modelos Jinja, que será familiar para os usuários do Python.
  • Puppet: outra ferramenta no lado do gerenciamento de configuração, o Puppet requer um servidor mestre, chamado Puppet master, que armazena a configuração de sua infraestrutura e envia as alterações para os clientes. Assim como o Ansible Tower, o Puppet Enterprise vem com um painel da web, o Puppet Enterprise Console, para gerenciar seu inventário.
  • Terraform: Uma abordagem diferente para o Ansible e o Chef. O Terraform se concentra na configuração de toda a infraestrutura e provisionamento de servidores. Como tal, ele se enquadra no lado da orquestração do espectro, mas pode ser usado junto com ferramentas focadas em configuração, como Chef e Ansible.

Muitas equipes de DevOps encontraram maneiras de misturar e combinar ferramentas de CM para atender à complexidade de suas necessidades de configuração e orquestração. Muitas vezes rodando em soluções de virtualização como contêineres Docker, Vagrant, Kubernetes e outros.

A conteinerização com o Docker é um caminho atraente a seguir porque os contêineres do Docker ajudam a facilitar o processo de configuração, oferecendo portabilidade em vários sistemas operacionais de servidor e provedores de nuvem.

Em alguns casos, soluções como Kubernetes ou Docker podem cuidar da maioria das suas necessidades de gerenciamento de configuração. Por exemplo, as imagens do Docker podem ter todos os seus requisitos de software instalados.

Também é possível usar o Ansible ou o Chef para implantar contêineres do Docker e gerenciá-los, com plug-ins prontos disponíveis na forma de um módulo Docker integrado no Ansible e um livro de receitas do Docker do Chef Supermarket.

Em termos de popularidade para ferramentas de gerenciamento de configuração individuais, o Ansible agora está à frente do grupo, com uma pesquisa da TechRepublic mostrando que o Ansible teve o uso mais difundido entre os entrevistados da pesquisa, com 41%, seguido pelo Chef e Puppet empatados com 31%, com Terraform em 31% e Saltstack em 18%.

Conclusão

Em primeiro lugar, qualquer administrador ou DevOps ficará muito feliz em ter essas ferramentas ao seu lado; Apenas alguns anos atrás, havia muito menos opções neste campo. Escolher qualquer um deles é uma vitória, e sua vida será mais rica e fácil por isso.

Dito isso, se você precisar escolher entre eles, considere suas próprias necessidades cuidadosamente primeiro e compare-as com o que cada solução oferece. Você pode usar o infográfico abaixo para comparar o Chef e o Ansible.

Artigos relacionados