aniversario! 🎂 #
Hoy 2022-10-03 se cumplen exactamente 3 años desde el primer
commit del repo ansible_tools
1, y me ocupé de versionar una
serie de scripts que tenía dando vueltas para aprovechar la ocasión :)
todo comenzó algún tiempo atrás... #
Viendo el historial recordé cómo fue que todo comenzó, básicamente
estaba lidiando con la molesta tarea de actualizar la version
de cada
rol en el archivo requirements.yml
de un gran playbook de
ansible
2, y como eran demasiados roles
cada uno en en un
repositorio diferente, era muy engorroso estar viendo cuál era el último
release y realizar el cambio.
v0.1.0 requirements-version-update
#
Si definimos como tarea "actualizar la versión de cada rol al último tag disponible" es algo que se puede automatizar fácilmente. Bastó con dividir la tarea en 2 para rápidamente obtener un resultado exitoso.
Primero generé git-ls-remote-tags
que no hace otra cosa que listar los
tags
del repositorio actual de forma cronológica de modo que al
quedarse con el primer resultado, obtenemos el último tag.
Luego fue simplemente leer el YAML e ir reescribiéndolo con lo mismo
pero reemplazando version
con el último tag.
Y este script no solo permitió ahorrar tiempo, lo mejor fue ahorrar dolores de cabeza, luego con una revisión manual bastaba para ajustar alguna dependencia en particular (no siempre se desea la última versión).
v0.1.1 - v0.1.6
parches y mejoras #
Hubo pequeñas mejoras y parches, aunque apareció otra necesidad, la de
reescribir el origen de cada repositorio, básicamente convertir un
repo ssh
a una url https
, y esto fue necesario para clonar
repositorios en una red sin acceso por SSH.
v0.1.7
envolviendo awx-cli
#
Si bien el cli
de AWX 3 es muy completo, me vi con la necesidad
de extender ciertas funcionalidades, mayormente agregar validaciones y
automatizar algunas tareas repetitivas de ad-hoc
, asignaciones de
permisos, obtener valores de variables de hosts e inventories y
comenzar a recibir y enviar un jobtemplate de un entorno a otro.
v0.1.8
encerar y pulir #
Variedad de scripts pero mayormente hay cierta cosmética general, se
comienzan a unificar criterios y muchas mejoras gracias a las
sugerencias de shellcheck
4.
v0.2.0
happy gnu year #
Aprovecho el año nuevo para comenzar versionando para la posteridad una
serie de mejoras y nuevas funcionalidades para que no se pierdan al irme
de vacaciones XD
v0.3.0
automated deploy #
La mayor novedad es la posibilidad de generar un deploy desatendido
del repositorio awx
donde están todos los recursos en forma de
.json
, basta con ejecutar awx-deploy-revision
(con mínimas opciones)
y este script se ocupa de todo :)
Relacionado al deploy= ahora se puede generar un sumario de los
releases
en base a los tags y también se agregan varias utilidades
para obtener y actualizar variables de archivos YAML y algunas para
realizar comparaciones de variables entre diferentes groups de un
mismo inventory, esto resultó muy útil para unificar valores y mejorar
la precedencia.
Otros comandos útiles permiten lidiar con las diferentes formas de
escribir una variable vault
Creación y modificación de credenciales ssh
cifradas desde un
repositorio pass
o desde archivos en el directorio ~/.ssh/
.
mejora continua #
Hace 3 años no hubiese imaginado que las ansible tools
se iban a
convertir en mas de 270 scripts de uso diario y que hoy las considero
indispensables para interacturar con GitLab y AWX.
Seguramente, irán mejorando y en algún momento habrá que dar el salto a nuevas versiones de AWX y nuevas integraciones.