Chef - Descripción general
Chef es una tecnología de código abierto desarrollada por Opscode. Adam Jacob, cofundador de Opscode es conocido como el fundador de Chef. Esta tecnología utiliza la codificación Ruby para desarrollar bloques de construcción básicos como recetas y libros de cocina. Chef se utiliza en la automatización de la infraestructura y ayuda a reducir las tareas manuales y repetitivas para la gestión de la infraestructura.
Chef tiene su propia convención para diferentes bloques de construcción, que son necesarios para administrar y automatizar la infraestructura.
¿Por qué Chef?
Chef es una tecnología de gestión de la configuración que se utiliza para automatizar el aprovisionamiento de infraestructura. Está desarrollado sobre la base del lenguaje Ruby DSL. Se utiliza para agilizar la tarea de configuración y gestión del servidor de la empresa. Tiene la capacidad de integrarse con cualquier tecnología en la nube.
En DevOps, utilizamos Chef para implementar y administrar servidores y aplicaciones internamente y en la nube.
Características del chef
Las siguientes son las características más destacadas de Chef:
Chef utiliza el lenguaje popular de Ruby para crear un lenguaje específico de dominio.
Chef no hace suposiciones sobre el estado actual de un nodo. Utiliza sus mecanismos para obtener el estado actual de la máquina.
Chef es ideal para implementar y administrar el servidor, el almacenamiento y el software en la nube.
Ventajas del Chef
Chef ofrece las siguientes ventajas:
Lower barrier for entry - Como Chef usa el lenguaje Ruby nativo para la configuración, un lenguaje de configuración estándar puede ser fácilmente elegido por cualquiera que tenga alguna experiencia en desarrollo.
Excellent integration with cloud- Con la utilidad de cuchillo, se puede integrar fácilmente con cualquiera de las tecnologías en la nube. Es la mejor herramienta para una organización que desea distribuir su infraestructura en un entorno de múltiples nubes.
Desventajas del Chef
Algunos de los principales inconvenientes de Chef son los siguientes:
Una de las grandes desventajas de Chef es la forma en que se controlan los libros de cocina. Necesita cuidados constantes para que las personas que trabajan no estropeen los libros de cocina de otros.
Solo Chef solo está disponible.
En la situación actual, solo es una buena opción para la nube de AWS.
No es muy fácil de aprender si la persona no está familiarizada con Ruby.
Aún falta documentación.
Componentes clave de Chef
Receta
Puede definirse como una colección de atributos que se utilizan para administrar la infraestructura. Estos atributos que están presentes en la receta se utilizan para cambiar el estado existente o configurar un nodo de infraestructura en particular. Se cargan durante la ejecución del cliente Chef y se comparten con el atributo existente del nodo (máquina). A continuación, llega al estado definido en el recurso de nodo de la receta. Es el principal caballo de batalla del libro de cocina.
Libro de cocina
Un libro de cocina es una colección de recetas. Son los bloques de construcción básicos que se cargan en el servidor Chef. Cuando se lleva a cabo la ejecución de Chef, se asegura de que las recetas presentes en su interior obtengan una infraestructura determinada al estado deseado como se indica en la receta.
Recurso
Es el componente básico de una receta que se utiliza para administrar la infraestructura con diferentes tipos de estados. Puede haber varios recursos en una receta, lo que ayudará a configurar y administrar la infraestructura. Por ejemplo
package - Gestiona los paquetes en un nodo.
service - Gestiona los servicios en un nodo
user - Gestiona los usuarios en el nodo.
group - Gestiona grupos
template - Administra los archivos con la plantilla Ruby incrustada
cookbook_file - Transfiere los archivos del subdirectorio de archivos en el libro de recetas a una ubicación en el nodo
file - Administra el contenido de un archivo en el nodo
directory - Administra los directorios en el nodo
execute - Ejecuta un comando en el nodo.
cron - Edita un archivo cron existente en el nodo
Atributo
Son básicamente escenarios. Se pueden considerar como un par de valores clave de cualquier cosa que uno quiera usar en el libro de cocina. Hay varios tipos diferentes de atributos que se pueden aplicar, con un nivel diferente de precedencia sobre la configuración final bajo la que opera el nodo.
Archivo
Es un subdirectorio dentro del libro de recetas que contiene cualquier archivo estático que se colocará en los nodos que usan los libros de recetas. Luego, una receta puede declararse como un recurso que mueve los archivos de ese directorio al nodo final.
Plantillas
Son similares a los archivos, pero no son estáticos. Los archivos de plantilla terminan con la extensión .ebr, lo que significa que contienen Ruby incrustado. Se utilizan principalmente para sustituir un valor de atributo en los archivos para crear la versión final del archivo que se colocará en el nodo.
Metadata.rb
Se utiliza para administrar los metadatos del paquete. Esto incluye detalles como el nombre y los detalles del paquete. También incluye cosas como información de dependencia que indica qué libros de cocina necesita este libro de cocina para funcionar. Esto permite que el servidor Chef cree la lista de ejecución del nodo correctamente y garantiza que todas las piezas se transfieran correctamente.
Estructura predeterminada del libro de recetas
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 - Tecnologías relacionadas
A continuación se muestra la lista de tecnologías relacionadas con Chef.
Marioneta
Puppet proporciona una forma estándar de entregar y operar software, sin importar dónde se ejecute. Es un motor administrativo automatizado para sistemas Linux, Unix y Windows que realiza tareas administrativas basadas en especificaciones centralizadas.
El primario features of Puppet son los siguientes:
- Implementar nuevos sistemas con una configuración uniforme.
- Actualización de los sistemas y actualización de los paquetes de software y seguridad.
- Incorporando nuevas funciones y agregando capacidades diestras.
- Personalización de configuraciones para garantizar la disponibilidad de fuentes de datos.
- Optimizando los recursos disponibles y minimizando el costo.
- Simplificar los roles y permitir que el equipo se concentre en los problemas centrales y productivos.
- Obtener una vista panorámica de la infraestructura disponible.
Ansible
Ansible es una plataforma de automatización de TI radicalmente simple que facilita la implementación de sus aplicaciones y sistemas. Evite escribir scripts o código personalizado para implementar y actualizar sus aplicaciones: automatice en un idioma que se acerque al inglés simple, utilizando SSH, sin agentes para instalar en sistemas remotos.
El primario features of Ansible son los siguientes:
- Sencillo y fácil de aprender
- Escrito en Python
- Agentless
- Playbooks basados en YAML
- Galaxia ansible
SaltStack
SaltStack se utiliza para la configuración basada en datos. Es un nuevo enfoque de gestión de infraestructura construido sobre bus de comunicación dinámica. Se utiliza para la orquestación basada en datos, la ejecución remota para cualquier infraestructura y la gestión de la configuración para cualquier pila de aplicaciones.
Tela
Fabric es un lenguaje de programación basado en Python, que se desarrolla como una API de Python que debe importarse en código Python para configurar y administrar una infraestructura.