Los entornos administrados crecen con el tiempo, a menudo como resultado de una mayor participación de datos o tal vez debido a la necesidad de aumentar el rendimiento a través de la carga de trabajo compartida. Debido a esto, es necesario agregar miembros. Por ejemplo, con MongoDB uno puede decidir hacer replicación y fragmentación, lo que en consecuencia requerirá que se agreguen más miembros al clúster. Configurar e implementar estos entornos con el tiempo se vuelve ajetreado, consume mucho tiempo, es propenso a errores humanos y muchos contratiempos asociados que finalmente representan gastos operativos. Tome un ejemplo de un conjunto de réplicas con 50 miembros en MongoDB y desea fragmentar una determinada colección en cada uno de los miembros. Hacer esto manualmente para cada uno lleva mucho tiempo, por lo que necesitamos un sistema centralizado desde el cual pueda configurar fácilmente todos los miembros. . Con un sistema centralizado, escribe un código que a su vez configura los miembros conectados. Por lo tanto, el código es legible por humanos, versionable y comprobable para eliminar posibles errores antes de la implementación.
¿Qué es el software Chef?
Chef es un software de automatización escrito en lenguaje Ruby que se utiliza para agilizar la tarea de configurar y mantener máquinas en la nube o servidores locales. Lo hace asegurándose de que todos los miembros conectados obtengan los recursos necesarios, los recursos están bien configurados y corrige los recursos que no están en el estado deseado. Por lo tanto, Chef básicamente garantiza que los archivos y los recursos de software que se espera que estén en una determinada máquina estén presentes, configurados correctamente y funcionando correctamente según lo previsto.
Los componentes de Chef
Servidor Chef
Este es el sistema de control central que alberga los datos de configuración. Los datos se escriben en una 'receta' y si muchas de estas recetas están involucradas, forman un libro de cocina. El sistema central también contiene metadatos que describen cada uno de los nodos como se describe en chef-client.
Todos los cambios realizados en las recetas pasan aquí para su validación antes de la implementación. El servidor también garantiza que la estación de trabajo y los nodos conectados estén emparejados mediante claves de autorización antes de permitir la comunicación entre ellos y aplicar los cambios.
Nodo de cliente Chef
El nodo cliente de Chef registra y valida nodos y crea los objetos de nodo. Básicamente, contiene el estado actual de un nodo determinado y sus metadatos.
Nodo
Esta es la máquina física, virtual o en la nube que se configurará y cada una debe tener instalado el nodo del cliente.
Estación de trabajo
La estación de trabajo proporciona una interfaz para la comunicación entre el servidor y los nodos del cliente. Proporciona una plataforma para escribir, probar e implementar los libros de cocina. Aquí es donde también se definen los roles
Cocina de prueba
Aquí es donde se valida el código.
Cuchillo cocinero
Interactúa con los nodos.
Libros de cocina
Contiene recetas escritas en lenguaje Ruby y se utilizan para definir las tareas a realizar. Las recetas especifican los recursos y el orden de implementación de las tareas definidas.
- los atributos se utilizan para anular la configuración predeterminada.
- archivos utilizados para transferir archivos desde una ruta específica a chef-client.
- recurso de metadatos define la información del nodo como se describe en el nodo del cliente.
Cómo funciona Chef
Chef tiene dos formas de operación, es decir, cliente/servidor o en un modo independiente conocido como 'chef-solo'.
El Chef-servidor recibe varios atributos con respecto a un determinado nodo del Chef-cliente. Estos atributos luego son indexados usando Elasticsearch por el servidor que luego proporciona una interfaz de programa de aplicación (API) desde donde los nodos cliente pueden consultar estos datos. Los nodos cliente utilizan los resultados devueltos para configurar las máquinas relevantes y transformarlas al estado deseado.
El servidor concentra todas las operaciones donde se almacenarán los cambios

Los servidores administrados por Chef se evalúan de vez en cuando contra algún estado deseado para garantizar que cualquier cambio en las configuraciones se corrige automáticamente y se aplica universalmente. Con este enfoque, hay una configuración consistente a escala.
Primeros pasos con Chef
Puede descargar la estación de trabajo chef desde este sitio e instalarla. Cree una carpeta llamada libros de cocina y dentro de esta carpeta ejecute el comando:
$ chef generate cookbook first_cookbook
Esto generará un directorio llamado first_cookbook con algunas subcarpetas y archivos.
Navegue a cookbooks/first_cookbook/recipes/ y actualice la receta default.rb con el contenido
file "test.txt" do
content 'This is my first recipe file'
end
Luego ejecutamos este archivo usando el comando
$ chef-client --local-mode --override-runlist first_cookbook.
O, dentro de la carpeta de recetas, puede ejecutar el archivo con el comando
$ chef-apply default.rb
Si navega a su carpeta de recetas, definitivamente verá el archivo test.txt con el contenido Este es mi primer archivo de recetas. Es fácil. En la siguiente sección, crearemos recetas para realizar algunas tareas específicas relacionadas con MongoDB
Instalación y configuración de MongoDB con Chef
Puede instalar MongoDB creando una receta de instalación MongoDBInstall.rb y complétela con los contenidos
package "mongodb" do
action :install
version '4.0.3'
end
En este caso, el nombre de nuestro paquete es mongodb y vamos a instalar la versión 4.0.3
Lo que tenemos es una receta básica pero en muchos casos necesitaremos un recetario avanzado para hacer nuestra configuración en MongoDB. Para facilitar la tarea, existen libros de cocina desarrollados como SC-MongoDB que generalmente hacen que la configuración sea precisa.
Libro de recetas SC-MongoDB
El libro de cocina proporciona mongodb_instance que mejora uno para configurar los parámetros de MongoDB, el conjunto de réplicas y un clúster fragmentado.
Para instalar el libro de cocina simplemente ejecute el comando
$ knife supermarket download sc-mongodb
Luego puede usar los atributos definidos en este sitio para reconfigurar algunos de los atributos predeterminados de MongoDB.