Os ambientes gerenciados crescem ao longo do tempo, geralmente como resultado do aumento do envolvimento de dados ou talvez devido à necessidade de aumentar o desempenho por meio da carga de trabalho compartilhada. Por isso, é necessário adicionar membros. Por exemplo, com o MongoDB, pode-se decidir fazer replicação e fragmentação, o que, consequentemente, exigirá a adição de mais membros ao cluster. Configurar e implantar esses ambientes com tempo torna-se caótico, demorado, propenso a erros humanos e tantos contratempos associados que acabam por gerar despesas operacionais. Tomemos um exemplo de um conjunto de réplicas com 50 membros no MongoDB e você deseja fragmentar uma determinada coleção em cada um dos membros, fazer isso manualmente para cada um é demorado, portanto, precisamos de um sistema centralizado a partir do qual você possa configurar facilmente todos os membros . Com sistemas centralizados você escreve algum código que por sua vez configura os membros conectados. O código é, portanto, legível por humanos, versável e testável para remover possíveis erros antes da implantação.
O que é o software Chef?
Chef é um software de automação escrito na linguagem Ruby que é usado para agilizar a tarefa de configuração e manutenção de máquinas em nuvem ou servidores locais. Ele faz isso garantindo que todos os membros conectados obtenham os recursos necessários, os recursos estejam bem configurados e corrija quaisquer recursos que não estejam no estado desejado. Assim, o Chef basicamente garante que os arquivos e recursos de software esperados para uma determinada máquina estejam presentes, configurados corretamente e funcionando corretamente como pretendido.
Os componentes do Chef
Chef Server
Este é o sistema de controle central que abriga os dados de configuração. Os dados são escritos em uma "receita" e, se muitas dessas receitas estiverem envolvidas, elas formam um livro de receitas. O sistema central também contém metadados que descrevem cada um dos nós conforme descrito no chef-client.
Todas as alterações feitas nas receitas passam aqui para validação antes da implantação. O servidor também garante que a estação de trabalho e os nós conectados sejam emparelhados usando chaves de autorização antes de permitir a comunicação entre eles e aplicar as alterações.
Nó Cliente Chef
O nó cliente do Chef registra e valida os nós e cria os objetos do nó. Essencialmente, ele mantém o estado atual de um determinado nó e seus metadados.
Nó
Esta é a máquina física, virtual ou em nuvem a ser configurada e cada uma deve ter o nó cliente instalado.
Estação de trabalho
A estação de trabalho fornece uma interface para comunicação entre o servidor e os nós clientes. Ele fornece uma plataforma para escrever, testar e implantar os livros de receitas. É aqui que os papéis também são definidos
Cozinha de Teste
É aqui que o código é validado.
Faca do Chef
Interage com os nós.
Livros de receitas
Contém receitas escritas em linguagem Ruby e são usadas para definir as tarefas a serem executadas. As receitas especificam recursos e ordem de implementação nas tarefas definidas.
- os atributos são usados para substituir as configurações padrão.
- arquivos usados para transferir arquivos de um caminho específico para o chef-client.
- recurso de metadados define as informações do nó conforme descrito no nó do cliente.
Como o Chef funciona
Chef tem duas formas de operação, ou seja, cliente/servidor ou em modo autônomo conhecido como ‘chef-solo’.
O Chef-server recebe vários atributos referentes a um determinado nó do Chef-client. Esses atributos são então indexados usando o Elasticsearch pelo servidor que fornece uma Interface de Programação de Aplicativo (API) de onde os nós clientes podem consultar esses dados. Os resultados retornados são então usados pelos nós clientes para configurar as máquinas relevantes e transformá-las no estado desejado.
O servidor concentra todas as operações nas quais as alterações devem ser armazenadas
Os servidores gerenciados pelo Chef são avaliados de tempos em tempos em relação a algum estado desejado, garantindo que quaisquer alterações nas configurações são corrigidas automaticamente e aplicadas universalmente. Com essa abordagem, há uma configuração consistente em escala.
Introdução ao Chef
Você pode baixar o chef-workstation deste site e instalá-lo. Crie uma pasta chamada cookbooks e dentro desta pasta execute o comando:
$ chef generate cookbook first_cookbook
Isto irá gerar um diretório chamado first_cookbook com algumas subpastas e arquivos.
Navegue até cookbooks/first_cookbook/recipes/ e atualize a receita default.rb com o conteúdo
file "test.txt" do
content 'This is my first recipe file'
end
Em seguida, executamos este arquivo usando o comando
$ chef-client --local-mode --override-runlist first_cookbook.
OU, dentro da pasta da receita, você pode executar o arquivo com o comando
$ chef-apply default.rb
Se você navegar até a pasta de receitas, com certeza verá o arquivo test.txt com o conteúdo Este é meu primeiro arquivo de receita. É tão fácil. Na próxima seção estaremos criando receitas para fazer algumas tarefas específicas em relação ao MongoDB
Instalando e configurando o MongoDB com o Chef
Você pode instalar o MongoDB criando uma receita de instalação MongoDBInstall.rb e preenchê-la com o conteúdo
package "mongodb" do
action :install
version '4.0.3'
end
Neste caso, nosso nome de pacote é mongodb e vamos instalar a versão 4.0.3
O que temos é uma receita básica, mas em muitos casos precisaremos de um livro de receitas avançado para fazer nossa configuração no MongoDB. Para facilitar a tarefa, existem livros de receitas desenvolvidos, como o SC-MongoDB, que geralmente tornam a configuração precisa.
Livro de receitas do SC-MongoDB
O livro de receitas fornece mongodb_instance que aprimora um para configurar parâmetros do MongoDB, conjunto de réplicas e um cluster fragmentado.
Para instalar o livro de receitas basta executar o comando
$ knife supermarket download sc-mongodb
Você pode então usar os atributos definidos neste site para reconfigurar alguns dos atributos padrão do MongoDB.