Puesta en producción de un servicio con Ansible

Poner en producción un servicio mediante playbooks y roles que conforman el proyecto config, es la culminación de un largo proceso que en condiciones normales inició con la apertura de un issue y pasó por la exploración de opciones, intercambio con compañeros de equipo y pruebas (muchas pruebas).

Esta breve entrada de la wiki busca protocolizar esta etapa final, para registrar cierta información de utilidad futura.

Normalmente, automatizar el montaje y aprovisionamiento de un nuevo servicio a través de nuestro proyecto Ansible consiste de dos elementos principales: una conjunto de modificaciones al proyecto config en sí (playbook/s, host_vars, inventario, etc) y la incorporación de, al menos, un role encargado de aprovisionar lo relativo al servicio en cuestión.

Considerando que en muchas ocasiones se llevan a producción varias instancias de un mismo servicio, mejorando detalles y agregando características en cada iteración a roles y playbooks, es de mucha utilidad contar con un registro de desde "dónde" fue aprovisionado cada uno. De este modo, ante la necesidad de depurar el comportamiento de un servicio para solucionar errores, podremos saber exactamente como fue creado y configurado, aunque posteriormente se haya sumado mejoras al código.

Una forma práctica e inequívoca de hacerlo es documentar el hash del commit correspondiente a la versión de config y de los roles independietes (versionados fuera del repositorio config) que intervinieron al lanzar la ejecución Ansible. El mejor lugar para documentar estos hashes es como un nuevo comentario al dar por finalizado el issue que motivó la tarea. Y es precisamente éste el procedimiento que buscamos naturalizar, con el fin tener disponible rápidamente esta información para todos los servicios.