Marionete, Sal, Chef, & Ansible: Uma comparação

Tempo de leitura: 8 minutos

Qual é o mais apropriado para si?

Tabela de Conteúdos

I. Puppet II. Palheta de Sal III. Chef IV. Possível IV. Conclusão

Introdução

Configurar um único servidor com o software necessário é uma tarefa razoavelmente simples. Entretanto, se numerosos servidores precisarem ter o mesmo software ou configurações similares instaladas neles, o processo usaria numerosas horas-homem para completar, o que esgotaria seus recursos já tensos. Sem alguma forma de automação, esta tarefa pode tornar-se quase intransponível. Com esta tarefa em mente, novas ferramentas de gerenciamento de configuração foram desenvolvidas para atender à necessidade de implantar novos servidores com configurações e atualizações pré-fabricadas, o que permitiu um processo de automação mais suave e gerenciável. Para manter esses servidores sincronizados e gerenciar as atualizações em uma ampla faixa de hosts em um ambiente de data center ou nuvem, ferramentas de automação como Puppet, SaltStack, Chef e Ansible atendem a essa necessidade.

Selecionar as ferramentas de gerenciamento corretas para uso em sua infraestrutura é uma decisão crítica. É por isso que estamos revendo as opções disponíveis para estes projetos. Estas ferramentas oferecem os maiores benefícios tanto para DevOps como para sysadmins. Esperamos que esta informação possa indicar-lhe a direcção certa. Embora seja verdade que todas as ferramentas de configuração mencionadas acima irão muito provavelmente realizar estas tarefas, cada uma oferece diferentes metodologias e papéis de formas um pouco diferentes para alcançar este objectivo. Este artigo pretende mostrar-lhe algumas das diferenças essenciais que cada plataforma de gestão de software oferece. Isto permitir-lhe-á tomar uma decisão mais informada enquanto tentamos tocar em cada título de software e nos seus benefícios, e depois oferecer-lhe uma visão geral no final

.

Puppet

Puppet é uma das ferramentas de gestão mais antigas e de maior confiança da nossa lista. Por causa disso, oferece uma base de suporte mais ampla dentro da comunidade Puppet, bem como da equipe Puppet. O Puppet também fornece uma edição de código aberto do seu software que pode ser instalada em uma grande variedade de sistemas operacionais. A versão empresarial do software é, no entanto, capaz de abranger sistemas maiores como o hardware AIX ou F5 Big-IP da IBM. Deve-se notar que o servidor mestre do Puppet só pode ser instalado em sistemas operacionais Unix/Linux.

Uma implementação do Puppet é normalmente composta por um servidor mestre e várias máquinas clientes (que são referidas como Agentes). O Puppet é uma das ferramentas desta lista que usa sua própria linguagem única que é baseada em Ruby. O Puppet DSL (ou Domain Specific Language) é usado para descrever o estado desejado do seu sistema dentro de um arquivo, que é chamado de arquivo manifesto. Arquivos manifestos são fundamentalmente um conjunto de configurações ou tarefas que determinam como seus recursos de rede e do sistema operacional (tais como serviços, pacotes e arquivos) são configurados. O Puppet então compila os arquivos de manifesto em catálogos e empurra cada catálogo para seu nó designado de modo que o nó seja reconfigurado para o estado desejado em toda a infra-estrutura.

Puppet adicionalmente oferece uma interface intuitiva e simples baseada na web que é utilizada para completar um número mais significativo de tarefas, incluindo o gerenciamento de nós em tempo real. Além disso, como o Puppet é configurado em uma arquitetura multi-mestre, se o mestre atualmente ativo for desligado, outro mestre substituirá o mestre anterior para evitar disponibilidade degradada.

Puppet atualiza a configuração dos nós fazendo com que os clientes verifiquem se o master está atualizado e então puxa as novas configurações para baixo a partir do servidor Master. Devido a esta característica, o Puppet é mais orientado ao administrador do sistema do que muitas das outras ferramentas aqui anotadas. Uma desvantagem do Puppet é que não há execução remota imediata disponível para os nós. Além disso, o Puppet tem uma curva de aprendizagem mais íngreme, devido ao conhecimento necessário das linguagens de programação Puppet DSL e Ruby.

Topo

SaltStack

SaltStack (também referido como Salt) é uma das novas ferramentas desta lista. É, no entanto, ainda muito relevante no domínio da gestão da configuração do software. Salt tem uma comunidade relativamente ativa e um suporte eficaz. Salt é projetado para permitir baixa latência, comunicação de alta velocidade e transmissão de dados entre os nós para execução remota. Salt é projetado para funcionar com os sistemas operacionais Unix/Linux e Windows, mas o servidor Master Salt só pode funcionar em sistemas operacionais Unix/Linux.

SaltStack é composto por um Salt Master, que é o servidor central do Salt, e clientes que são chamados de Salt Minions, que funcionam como agentes em cada uma das máquinas dos nós. Dominar a linguagem do Salt é relativamente fácil, pois suas configurações legíveis por humanos usam arquivos Python e YAML, que é uma das estruturas de dados mais naturais e simples. Enquanto Puppet funciona de uma forma em que os nós solicitam as atualizações, Salt funciona em oposição a isto. O Salt Master empurra todas as configurações para todas as máquinas clientes. Adicionalmente, o Salt serve como um servidor de arquivos assíncrono, o que aumenta a velocidade das transferências de arquivos que servem os Salt Minions. A velocidade de implantação é um dos principais objetivos da filosofia do Salt.

Sal também pode ser executado em uma configuração multi-mestre. Se um servidor mestre do Salt cair, os agentes se conectarão a outro mestre listado nas configurações. Esta funcionalidade aumenta a disponibilidade geral e redundância do sistema como um todo. Um benefício adicional do Salt é que ele permite a execução paralela de comandos múltiplos ao mesmo tempo. Estes comandos são criptografados via AES (Advanced Encryption Standard) e empurrados para os nós do cliente através do protocolo SSH. Uma última vantagem do Salt é que ele pode gerenciar vários mestres. Salt também oferece uma interface Web; no entanto, ele tem capacidades e recursos limitados.

Topo

Chef

Chef começou como uma ferramenta interna de implementação servidor-a-servidor antes de ser finalmente lançado como software de código aberto em 2009. Um benefício significativo do Chef é que ele também oferece uma grande comunidade de suporte com extensa documentação e orientação. O Chef master e software de nó funciona em ambos os sistemas Unix/Linux, mas apenas as versões cliente e estação de trabalho podem ser implantadas em servidores Windows.

As opções de configuração do Chef consistem em Cookbooks e Receitas. As receitas são os arquivos de definição que podem ser combinados com atributos, arquivos, bibliotecas e outras receitas para construir os Cookbooks. Estes livros de receitas podem então ser utilizados para a implementação do cliente.

Chef consiste em 3 componentes principais:

  • Estação de trabalho do Chef – A estação de trabalho do Chef é usada pelos engenheiros de sistema para criar, testar e distribuir os livros de receitas para os servidores mestre do Chef.
  • Chef Master Server – Os servidores do Chef são essencialmente o hub onde todos os dados de configuração do Chef são armazenados. Esta informação inclui livros de receitas, dados do servidor e outras informações relevantes.
  • Chef Client – O Chef Client é as máquinas de nó final gerenciadas pelos servidores mestre do Chef. Estes servidores periodicamente puxam e executam as configurações dos livros de receitas do servidor mestre do Chef.

A linguagem de programação do Chef é semelhante ao Puppet, na medida em que utiliza uma DSL (Domain Specific Language) exclusiva do Chef, mas também suporta scripts escritos em Ruby.

Chef é configurado principalmente como um servidor mestre do Chef, bem como um servidor de backup no caso do servidor mestre do Chef central cair. Se ocorrer uma falha, o servidor mestre de backup irá substituir o servidor mestre do Chef central. É desta forma que a redundância é incorporada no ambiente do Chef. O Chef também oferece automação adicional de nuvem e infraestrutura, além de fluxos de trabalho automatizados, que são usados para fornecer entrega contínua para as máquinas clientes. Uma estipulação que deve ser notada; A linguagem primária favorece os programadores, pois requer o uso do script orientado a DSL/Ruby nos Cookbooks. O Chef e sua infra-estrutura são muito estáveis e construídos para a confiabilidade. O Chef também oferece ordem de execução sequencial, ao contrário, por exemplo, do Salt, que fornece execução paralela.

Topo

Ansible

Ansible é uma das ferramentas mais modernas utilizadas como solução de gerenciamento de configuração. É indiscutivelmente um dos softwares mais populares devido à sua simplicidade e configuração simples. Como as ferramentas anteriores, o Ansible suporta tanto máquinas clientes Windows como Unix/Linux, mas o Ansible master server requer um servidor baseado em Unix/Linux.

Em contraste com as ferramentas anteriores, apenas um master Ansible é necessário para executar porque o Ansible usa os protocolos SSH (ou RDP para Windows) para abrir uma conexão com os servidores clientes para executar seus comandos sequenciais. O Ansible é similar ao Puppet, pois os arquivos de configuração do Ansible são baseados em Python e usam arquivos YAML para os dados estruturados. Estes arquivos são chamados de Playbooks. O Ansible também suporta uma API Python, que pode ser usada para responder a eventos específicos para exercer controle dos próprios nós. O Ansible também pode ser usado através de uma interface de linha de comando. Usar uma interface CLI desta forma não exigiria o uso de um arquivo de configuração se uma tarefa simples como reiniciar um servidor. Para tarefas mais complexas, um playbook é necessário, já que o servidor mestre empurra a informação para os nós do cliente. Ansible também é adequado para execução remota em tempo real de comandos ou gerenciamento de aplicativos.

Em relação à redundância, Ansible é normalmente configurado como um único servidor mestre ativo (referido como uma Instância primária), pois não são necessários agentes para se conectar a ele. Um master secundário pode ser configurado para assumir o comando se o servidor master for desligado. Como o Ansible usa uma abordagem sem agentes, ele pode implantar mudanças ou empurrar atualizações relativamente rapidamente para todos os nós por um engenheiro. Uma desvantagem do Ansible é que os computadores clientes não verificam nenhuma mudança periódica na configuração do master primário.

Top

Conclusion

Em termos simples, um gerenciador de configuração fornece uma camada de abstração entre a configuração existente de um servidor e seu estado desejado. Este objetivo é alcançado focando mais em um resultado específico ao invés das tarefas verbosas necessárias para realizá-las.

Na nossa revisão desses quatro produtos, se buscarmos uma conclusão baseada apenas na popularidade, o vencedor claro é Ansible. Isto se deve ao fato de que um grupo muito mais amplo de administradores opta por usar o Ansible como sua principal ferramenta de gerenciamento de configuração em comparação com os outros produtos deste artigo. O Ansible tem as suas vantagens porque se orienta mais para um papel de SysOps no que diz respeito à sua estrutura e paradigma. O sal é semelhante neste aspecto, mas é diferente do Puppet e do Chef, pois são mais orientados para o Desenvolvedor. Além disso, Ansible é uma das opções mais fáceis nesta lista para configurar, configurar e começar a usar imediatamente.

Puppet, por outro lado seria a mais acessível e confiável do ponto de vista da usabilidade. Apesar de, como previamente delineado, ser necessário um conhecimento funcional do Ruby para tirar o máximo partido da sua vasta gama de funcionalidades, estrutura e escalabilidade. A configuração do Puppet pode tornar-se muito granular e por vezes complicada, mas é a aposta mais segura se estiver à procura de um ambiente de software não heterogénico.

Se você está procurando uma ferramenta de configuração que seja racionalizada para uma infra-estrutura mais uniforme, Ansible e Salt seria mais adequado para esse objetivo. O Sal em si é uma das ferramentas mais confiáveis e robustas desta lista, mas é reduzido devido à dificuldade da interface Web para os iniciantes compreenderem algumas das opções de configuração mais profundas disponíveis. No entanto, ele compensa isso por suas opções avançadas de escalabilidade e um ambiente de trabalho acessível da perspectiva do SysOps ou do administrador. Há também múltiplos addons disponíveis que melhoram e ampliam as habilidades da IU que melhoram a usabilidade e funcionalidade.

Chef in and of itself é uma ferramenta muito simples e bem desenhada. Ela oferece uma abordagem melhorada para facilidade de acesso e um nível maior de praticidade do que o Puppet. Como mencionado anteriormente, o Chef pode representar uma notável curva de aprendizagem para SysOps ou administradores de sistemas que carecem de experiência orientada para o desenvolvimento, uma vez que requer uma compreensão mais ampla das linguagens de programação e experiência.

Em conclusão, Ansible é uma escolha simples para o gerenciamento da configuração de nível básico, devido à documentação disponível, sua estrutura e facilidade de acessibilidade. Puppet também é uma ferramenta sólida, mas um usuário ou equipe será obrigado a aprender novos procedimentos de codificação e função, a fim de conquistar a curva de aprendizagem mais acentuada ao usar sua programação DSL (Domain Specific Language). Em termos de usabilidade, escalabilidade e opções multi-ambiente, o Salt ressoará mais claramente com os administradores de sistema que desejarem tirar proveito dele muitas opções e capacidades de escalabilidade altamente atraentes. O Chef tem um layout bem desenhado, estrutura e oferece um nível considerável de estabilidade. Pode haver alguma dificuldade inicial com a curva de aprendizagem, já que é mais orientada para as habilidades de um programador. Todas estas ferramentas desempenham um papel específico ao configurar sua infra-estrutura e seus estados desejados. Sua utilização dependerá inteiramente de suas necessidades de configuração, suporte pessoal e do nível de conveniência necessário para implementá-las.

Topo

Adoraríamos que você se juntasse a nós!

Dê-nos uma chamada para o 800.580.4985, ou abra um chat ou bilhete connosco para falar com um dos nossos especialistas em Soluções ou Conselheiros de Alojamento Experientes para aprender como pode tirar partido destas técnicas hoje em dia!

Deixe uma resposta

O seu endereço de email não será publicado.