KitchenCI – Prueba tu infraestructura

En este tutorial veremos cómo ser unos cocinillas en la gestión de nuestras infraestructuras.

Índice de contenidos

1. Introducción

Estamos en una época en la que cada vez más vivimos el desarrollo y la creación de infraestructuras como código.
Esto nos trae una serie de ventajas cómo:

  • Capacidad de replicar de forma fiable un entorno determinado.
  • Uso de herramientas de versionado para tener un control de la evolución del sistema en el tiempo.
  • Uso de las herramientas de integración continua para gestionar la evolución de la infraestructura de la misma forma que gestionamos la evolución del código.
  • Uso de prácticas del desarrollo del software para nuestra infraestructura, como el testing y uso de TDD.

En este tutorial se explica qué es Kitchen CI y cómo funciona su ciclo de vida.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro Retina 15′ (2.5 Ghz Intel Core I7, 16GB DDR3).
  • Sistema Operativo: Mac OS Sierra 10.12.6
  • KitchenCI 1.20.0

3. KitchenCI

3.1. ¿Qué es?

KitchenCI es un framework que te permite realizar testing unitarios para gestionar todo el ciclo de vida de tu infraestructura: creación, aprovisionamiento y testing.
Además esta creada de forma modular, permitiendo:

  • Probar tu infraestructura con distintas herramientas de virtualización (Vagrant, Docker).
  • Está preparada para distintos sistemas operativos (Ubuntu, Centos, Windows…)
  • Permite el uso de varios proveedores (Chef, Puppet, Ansible)
  • Permite el uso de varias herramientas para probar la infraestructura (InSpec, ServerSpec, RSpec, BATS)

3.2. Ciclo de vida

Entender el ciclo de vida de KitchenCI nos permitirá comprobar «Cómo prepara la cocina» para montar nuestra infraestructura y
cómo ayuda el tener una herramienta que gestione cada una de las fases de la prueba de forma que te permita parar en cualquier parte del proceso y ver el estado de la máquina.

Suponiendo que estamos utilizando Docker como herramienta de virtualización y Ansible como herramienta de aprovisionamiento;
cuando queremos probar que nuestra configuración de aprovisionamiento está correcta por ejemplo, en una máquina virtual seguimos los siguientes pasos:

  • Creamos el contenedor en el queremos probar nuestros playbooks.
  • Creamos la configuración de Ansible pertinente para instalar lo que deseemos.
  • Ejecutamos Ansible apuntando a nuestro contenedor.
  • Entramos en el contenedor y comprobamos que todo está a nuestro gusto.

KitchenCI usa un procedimiento parecido en el que gestiona y coordina gran parte de la configuración de estos pasos de forma automática.

Esta configuración se lee del fichero .kitchen.yml que contiene:

  • driver: la herramienta de virtualización que utilizaremos para nuestras pruebas.
  • transport: la comunicación entre el host y la máquina virtual (SSH/WinRM).
  • provisioner: herramienta de provisionamiento a utilizar, como Ansible, Puppet o Chef.
  • verifier: aquí ponemos el componente encargado de verificar que se ha provisionado correctamente el entorno, como InSpec.
  • platforms: listado de sistemas operativos donde realizamos las pruebas.
  • suites: batería de test que serán aplicados en estos entornos.

A partir de esta configuración KitchenCI creará un listado de contenedores a partir de la suite de test y las plataformas de ejecución que se podrán ver con el comando kitchen list
Cada una de estas instancias se corresponde con una máquina virtual en caso de Vagrant o un contenedor en caso de Docker o LXD, con un sistema operativo y un test. De forma que si nuestra suite de pruebas se conforma por un solo test y tenemos dos plataformas tendríamos dos instancias de nuestro driver, cada una con una plataforma.

Después crearíamos nuestra configuración con nuestra herramienta de provisionamiento preferida, asegurándonos de que nuestro .kitchen.yml esté bien configurado.

Para crear el contenedor se utiliza el comando kitchen create.

Para aplicar estos cambios en nuestras instancias ejecutamos el comando kitchen converge.

Para comprobar de forma manual que todo funciona podemos entrar de forma manual a la máquina con el comando kitchen login.

Si queremos confirmar que se ha provisionado de forma correcta, tenemos que crear el test con la herramienta de prueba que hayamos elegido. Para ello ejecutamos el comando kitchen verify.

Vemos como es muy sencillo ir paso por paso por las fases de probar la infraestructura. Ahora bien, si queremos ejecutar el ciclo de vida completo, podemos utilizar el comando kitchen test, donde se añaden el paso kitchen destroy tanto al principio como al final de forma que crea las instancias de cero si ya están creadas y al final las destruye.

4. Conclusiones

KitchenCI mejora muchísimo la gestión de la infraestructura a la hora de crear y gestionar pruebas de la infraestructura.
Además su diseño modular permite que se puedan añadir herramientas en cada uno de los ciclos de vida, dotándola de una gran capacidad de persistir a lo largo del tiempo debido a que no se casa con ninguna herramienta de provisionamiento.

En el siguiente tutorial comprobaremos cómo gestionar esta configuración en un ejemplo práctico.

5. Referencias

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos. Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación. Somos expertos en Java/Java EE

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

22/06/2026

Juan Antonio Jiménez Torres

Vamos a instrumentalizar un SDD para un microservicio bancario. En este artículo sobre SDD - Spec Driven Development, instrumentalizado sobre OpenSpec vamos a construir una PoC de algo más serio que una tabla periódica. Un microservicio bancario muy simplificado que gestione cuentas y permita hacer transferencias

16/06/2026

Juan Antonio Jiménez Torres

Este es el segundo artículo sobre SDD, Spec Driven Development, instrumentalizado sobre OpenSpec. Pero esta vez nos acercaremos usando softwere gratuito. Por un lado OpenCode en lugar de ClaudeCode y usando el modelo gratuito Gemma4 de Google en lugar de otros de pago.

08/06/2026

Juan Antonio Jiménez Torres

Aprenderemos sobre SDD – Spec Driven Development instrumentalizado sobre OpenSpec. Haremos un primer acercamiento usando ClaudeCode con Sonnet, para luego, en un artículo posterior pasarnos a la versión gratuita de OpenCode con Gemma4