Este artículo narra la experiencia de Ruud van Asseldonk al construir una herramienta de despliegue personalizada, denominada Deptool, motivado por la frustración con las herramientas existentes y la búsqueda de mayor control y eficiencia en sus operaciones. La historia comienza con un intento de migrar un blog a una infraestructura europea, lo que revela la complejidad de gestionar la infraestructura y la necesidad de una solución más robusta que un simple script de Python.
La filosofía detrás de Deptool se centra en la creación de una herramienta que sea rápida, predecible, segura, simple, declarativa y de fácil configuración. Se inspira en herramientas como Ansible (aprendiendo de sus errores) y NixOS (aprovechando su enfoque declarativo y la gestión de versiones). El objetivo es desacoplar la generación de la configuración de su distribución, un concepto similar al utilizado en Unsible, una herramienta interna desarrollada en su trabajo. NixOS sirve como inspiración para almacenar artefactos generados en un lugar donde diferentes versiones pueden coexistir, simplificando la administración del sistema.
Deptool funciona pre-renderizando archivos de configuración para todo el clúster y almacenándolos en un repositorio Git, lo que permite realizar un seguimiento de los cambios y generar un plan de despliegue preciso. En los hosts, los archivos se materializan en un directorio aislado, permitiendo la coexistencia de múltiples versiones y facilitando el rollback automático en caso de fallos. El seguimiento de las versiones desplegadas en cada host permite calcular el plan de despliegue de forma offline y presentar los cambios en milisegundos. La herramienta evita la complejidad innecesaria, centrándose en la copia de archivos y la ejecución de un simple paso de activación. La simplicidad y la capacidad de generar archivos de configuración (aunque delegando esta tarea a otra herramienta) son pilares fundamentales del diseño de Deptool. En esencia, Deptool busca resolver un problema específico de despliegue de manera eficiente y segura, evitando la sobrecarga de herramientas de gestión de configuración más generales.
