Chef - Visão geral

Chef é uma tecnologia de código aberto desenvolvida pela Opscode. Adam Jacob, cofundador da Opscode, é conhecido como o fundador do Chef. Essa tecnologia usa codificação Ruby para desenvolver blocos de construção básicos, como receitas e livros de receitas. O Chef é utilizado na automação de infraestrutura e auxilia na redução de tarefas manuais e repetitivas para gerenciamento de infraestrutura.

O Chef tem sua própria convenção para diferentes blocos de construção, que são necessários para gerenciar e automatizar a infraestrutura.

Por que Chef?

Chef é uma tecnologia de gerenciamento de configuração usada para automatizar o provisionamento da infraestrutura. É desenvolvido com base na linguagem Ruby DSL. É utilizado para agilizar a tarefa de configuração e gerenciamento do servidor da empresa. Ele tem a capacidade de se integrar a qualquer tecnologia de nuvem.

No DevOps, usamos o Chef para implantar e gerenciar servidores e aplicativos internamente e na nuvem.

Características do Chef

A seguir estão as características mais importantes do Chef -

  • Chef usa a popular linguagem Ruby para criar uma linguagem específica de domínio.

  • O Chef não faz suposições sobre o status atual de um nó. Ele usa seus mecanismos para obter o status atual da máquina.

  • O Chef é ideal para implantar e gerenciar o servidor, armazenamento e software em nuvem.

Vantagens do Chef

O Chef oferece as seguintes vantagens -

  • Lower barrier for entry - Como Chef usa a linguagem Ruby nativa para configuração, uma linguagem de configuração padrão pode ser facilmente aprendida por qualquer pessoa com alguma experiência em desenvolvimento.

  • Excellent integration with cloud- Usando o utilitário faca, pode ser facilmente integrado com qualquer uma das tecnologias de nuvem. É a melhor ferramenta para uma organização que deseja distribuir sua infraestrutura em ambiente multi-nuvem.

Desvantagens do Chef

Algumas das principais desvantagens do Chef são as seguintes -

  • Uma das grandes desvantagens do Chef é a maneira como os livros de receitas são controlados. Ele precisa de cuidados constantes para que as pessoas que estão trabalhando não bagunçam os livros de receitas de outros.

  • Apenas Chef solo está disponível.

  • Na situação atual, é apenas uma boa opção para a nuvem AWS.

  • Não é muito fácil aprender se a pessoa não estiver familiarizada com Ruby.

  • A documentação ainda está faltando.

Principais blocos de construção do Chef

Receita

Ele pode ser definido como uma coleção de atributos que são usados ​​para gerenciar a infraestrutura. Esses atributos que estão presentes na receita são usados ​​para alterar o estado existente ou configurar um nó de infraestrutura específico. Eles são carregados durante a execução do cliente Chef e compartimentados com o atributo existente do nó (máquina). Em seguida, chega ao status definido no recurso de nó da receita. É o carro-chefe do livro de receitas.

Livro de receitas

Um livro de receitas é uma coleção de receitas. Eles são os blocos de construção básicos que são carregados no servidor Chef. Quando o Chef é executado, ele garante que as receitas presentes nele recebam uma determinada infraestrutura para o estado desejado, conforme listado na receita.

Recurso

É o componente básico de uma receita usada para gerenciar a infraestrutura com diferentes tipos de estados. Pode haver vários recursos em uma receita, o que ajudará na configuração e gerenciamento da infraestrutura. Por exemplo -

  • package - Gerencia os pacotes em um nó

  • service - Gerencia os serviços em um nó

  • user - Gerencia os usuários no nó

  • group - Gerencia grupos

  • template - Gerencia os arquivos com o modelo Ruby incorporado

  • cookbook_file - Transfere os arquivos do subdiretório de arquivos no livro de receitas para um local no nó

  • file - Gerencia o conteúdo de um arquivo no nó

  • directory - Gerencia os diretórios no nó

  • execute - Executa um comando no nó

  • cron - Edita um arquivo cron existente no nó

Atributo

Eles são basicamente configurações. Eles podem ser considerados um par de valores-chave de qualquer coisa que se queira usar no livro de receitas. Existem vários tipos diferentes de atributos que podem ser aplicados, com um nível diferente de precedência sobre as configurações finais sob as quais o nó opera.

Arquivo

É um subdiretório dentro do livro de receitas que contém qualquer arquivo estático que será colocado nos nós que usam os livros de receitas. Uma receita pode então ser declarada como um recurso que move os arquivos desse diretório para o nó final.

Modelos

Eles são semelhantes a arquivos, mas não são estáticos. Os arquivos de modelo terminam com a extensão .ebr, o que significa que contêm Ruby incorporado. Eles são usados ​​principalmente para substituir um valor de atributo nos arquivos para criar a versão final do arquivo que será colocada no nó.

Metadata.rb

É usado para gerenciar os metadados sobre o pacote. Isso inclui detalhes como o nome e os detalhes do pacote. Também inclui itens como informações de dependência que informam quais livros de receitas esse livro precisa para operar. Isso permite que o servidor Chef construa a lista de execução do nó corretamente e garante que todas as peças sejam transferidas corretamente.

Estrutura do livro de receitas padrão

C:\chef\cookbooks\nginx>tree 
Folder PATH listing for volume Local Disk 
Volume serial number is BE8B-6427 
C: ├───attributes 
├───definitions 
├───files 
│   └───default 
├───libraries 
├───providers 
├───recipes 
├───resources 
└───templates 
    └───default

Chef - Tecnologias Relacionadas

A seguir está a lista de tecnologias relacionadas ao Chef.

Fantoche

O Puppet fornece uma maneira padrão de fornecer e operar software, não importa onde ele seja executado. É um mecanismo administrativo automatizado para sistemas Linux, Unix e Windows que executa tarefas administrativas com base em especificações centralizadas.

O primário features of Puppet são os seguintes -

  • Implementação de novos sistemas com configuração uniforme.
  • Atualização dos sistemas e atualização dos pacotes de segurança e software.
  • Incorporando novos recursos e adicionando recursos hábeis.
  • Personalização de configurações para garantir a disponibilidade de fontes de dados.
  • Otimizando os recursos disponíveis e minimizando o custo.
  • Simplificar as funções e permitir que a equipe se concentre nas questões centrais e produtivas.
  • Ter uma visão panorâmica da infraestrutura disponível.

Ansible

Ansible é uma plataforma de automação de TI radicalmente simples que torna seus aplicativos e sistemas mais fáceis de implantar. Evite escrever scripts ou código personalizado para implantar e atualizar seus aplicativos - automatize em uma linguagem que se aproxima do inglês simples, usando SSH, sem agentes para instalar em sistemas remotos.

O primário features of Ansible são os seguintes -

  • Simples e fácil de aprender
  • Escrito em Python
  • Agentless
  • Playbooks baseados em YAML
  • Galáxia ansible

SaltStack

SaltStack é usado para configuração baseada em dados. É uma nova abordagem de gerenciamento de infraestrutura baseada em barramento de comunicação dinâmico. Ele é usado para orquestração baseada em dados, execução remota para qualquer infraestrutura e gerenciamento de configuração para qualquer pilha de aplicativos.

Tecido

Fabric é uma linguagem de programação baseada em Python, que é desenvolvida como uma API de Python que precisa ser importada no código Python para configurar e gerenciar uma infraestrutura.