-- Leo's gemini proxy
-- Connecting to gmi.osiux.com:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini;lang=es_AR
AUTHOR: Osiris Alejandro Gomez
EMAIL: osiux@osiux.com
DATE: 2022-10-08 20:17
[1]
Instalar y configurar equipos usando `ansible` ^1[2] es muy cómodo, pero siempre se puede mejorar y a gran escala, cuando es necesario lidiar con cientos o miles de *servers* y *workstations* es conveniente utilizar *AWX* ^2[3] ya que permite organizar, registrar y monitorear el *deploy* en paralelo sin perder ningún detalle.
*Ansible* cuenta con módulos `tower_*` ^3[4] (*collections* en las versiones nuevas) que permiten crear y/o modificar los diferentes recursos de una instancia de *AWX* (*Ansible Tower*) e inicialmente creé un rol `ansible_role_tower_cli` que tomaba las definiciones de desde archivos *YAML* para crear y/o modificar *projects*, *job~templates~*.
A medida que pasaron los días y en el apuro de varios *deploys*, ejecutar el rol no resultó práctico, porque estaba pensado para actualizar el histórico de recursos completos de *AWX*.
Luego de probar diferentes alternativas de trabajo con *AWX*, crear un *job~template~* manualmente en la instancia de desarrollo (`awx-dev`) y exportar la plantilla a un archivo `.json` usando `awx-cli` ^4[5] para luego importarla en la instancia productiva (`awx-prd`) resultó muy práctico.
Versionar los recursos de *AWX* en un repositorio `awx.git` ^5[6] surgió naturalmente para obtener reproducibilidad entre diferentes instancias, generar *releases*, verificar diferencias y aplicar correcciones.
El repositorio `awx.git` impulsó la creación de nuevos *scripts* de `ansible_tools` ^6[7], para interactuar con *AWX*, obtener dependencias, validar recursos, otorgar permisos y obtener valores de variables de la una instancia.
Teniendo todos los recursos versionados en un repositorio `git`, era inevitable automatizar el *deploy* de una revisión de *AWX*, al principio `awx-deploy-revision` ^7[8] se ejecutaba manualmente y permitía reproducir el *deploy* de un *release* en diferentes instancias, asegurando la integridad de cada componente detectando inconsistencias y asegurando los mismos permisos.
Invocando reglas de `Makefile` ^8[9], fue posible ejecutar `awx-deploy-revision` desde `.gitlab-ci.yml` ^9[10] de modo desatendido y aprovechando todas las ventajas de las *Pipelines* ahora es posible iniciar el desarrollo de un *job~template~* directamente desde el repositorio `awx.git` monitoreando la salida de los *jobs* de *GitLab* sin necesidad de ingresar a *AWX*.
Sin entrar en detalles, la secuencia de pasos automatizada es la siguiente:
1. La persona hoy conicida como *DevOps* ejecuta `git push`
2. *GitLab* recibe los cambios y ejecuta `json-lint`
3. Luego se configura el entorno definido en `AWX_ENV` mediante `awx-config`
4. Se envían los *teams* usando `awx-cli send team`
5. Se envían los *projects* usando `awx-cli send project`
6. Se actualizan los *projects* enviados usando `awx-cli update project`
7. Se envían los *inventories sources* usando `awx-cli send inventory_source`
8. Se envían los *inventories* usando `awx-cli send inventory`
9. Se actualizan los *inventories sources* usando `awx-cli pdate inventory_source`
10. Se envían los *job templates* usando `awx-cli send job_template`
11. Se envían los *workflows* usando `awx-cli send workflow`
12. Se otorgan permisos para todos los recursos usando `awx-cli grant`
Si no hubo ningún error, se obtiene *Pipeline Success* y la revisión en curso queda disponible para ejecutar en *AWX* `:)`
Si hubo algún error, basta con observar la salida del *Job* fallido y realizar los cambios necesarios en el repositorio `awx.git`, efectuar un *commit* y al ejecutar nuevamente `git push`, *GitLab* se ocupará del *deploy*.
Si fue exitoso el *deploy* en `awx-dev`, en otro *stage* se realiza el mismo *deploy* en otra instancia de *AWX*.
*Ansible Tools* `v0.3.0`[11]
Ansible/AWX tools[12]
`2022-11-13 20:39`[13] agregar y actualizar tags OpenGraph
`2022-10-10 15:54`[14] remove Leaked GitLab Token from ChangeLog :S
`2022-10-10 13:04`[15] corregir links de `.gitlab-ci.yml` y `Makefile` en *Automatizar la implementación de los recursos de AWX con GitLab CI/CD y Ansible Tools*
`2022-10-08 23:02`[16] Agregar Automatizar la implementación de los recursos de AWX con GitLab CI/CD y Ansible Tools
-- Response ended
-- Page fetched on Fri May 17 04:43:17 2024