andrelohmann.maxmind

maxmind

Última prueba

Contenido

Utiliza este rol para instalar geoip y la base de datos de maxmind.

Es necesario tener una cuenta en maxmind. Para crear una cuenta, sigue estos enlaces:

Requisitos

Este rol requiere Ubuntu.

Variables del Rol

Establece el account_id, license_key y edition ids

maxmind_account_id: __TU_ID_DE_CUENTA__
maxmind_license_key: __TU_CLAVE_DE_LICENCIA__
maxmind_edition_ids: GeoLite2-ASN GeoLite2-City GeoLite2-Country
maxmind_geoipupdate_run: true # ejecutar geoipupdate durante el proceso de instalación
maxmind_geoipupdate_cron: true # crear un trabajo cron para ejecutar regularmente geoipupdate

Ejemplo de Playbook

- hosts: maxmind
  roles:
     - { role: andrelohmann.maxmind }

Desarrollo del Rol

Propósito Especial

Este repositorio soporta las siguientes características para el desarrollo del rol:

  • yamllint
  • ansible-lint
  • prueba de molecule
  • acción de GitHub
  • actualización automática de versiones
  • actualizar ansible-galaxy
  • mostrar estado de construcción
  • prueba dentro de vagrant (con propósito de desarrollo)
  • prueba con molecule (dentro o fuera de vagrant)
  • prueba contra contenedor de docker
  • prueba y desarrollo dentro de vscode

Requisitos Previos

https://thedatabaseme.de/2022/01/17/automated-testing-your-ansible-role-with-molecule-and-github-actions/

  • Virtualbox + Vagrant instalado (solo necesario si el rol debe ser probado con vagrant también)
  • Docker Desktop
  • VisualStudioCode + paquete de extensiones remotas (dependencias definidas dentro de .vscode/extensions.json)

Configuración de Desarrollo

Este rol de ansible es desarrollado usando molecule para pruebas. Su desarrollo se basa en visual studio code y un contenedor de desarrollo relacionado, resolviendo todas las dependencias en términos de herramientas necesarias (ansible, linter, molecule).

El rol será probado en Ubuntu Jammy.

Para iniciar los contenedores de prueba de molecule desde el contenedor de desarrollo, el socket docker necesita ser montado en el contenedor de desarrollo.

Carpetas y Archivos Importantes

.devcontainer
  • Define el Dockerfile para el contenedor de desarrollo
  • Configura el inicio del contenedor de desarrollo (por ejemplo, montando el socket de docker)
molecule/default/Dockerfile.js
  • Usado como plantilla para todas las plataformas definidas en molecule/default/molecule.yml
  • Prepara los entornos para soportar servicios systemd (necesario para algunos roles de ansible que actúan sobre systemd)
  • Instala todos los requisitos para ejecutar ansible contra el contenedor derivado
  • El archivo está alineado con los atributos de las plataformas en molecule/default/molecule.yml
  • Para más información, estudia la documentación de molecule

Uso

Visual Studio Code

  • Cambia al directorio raíz de tu rol y abre vscode
code .
  • Desde dentro del contenedor de desarrollo, puedes usar los siguientes comandos
yamllint .
ansible-lint .
molecule create
molecule test

Vagrant + Virtualbox

  • Cambia al directorio raíz de tu rol
  • Cambia a la carpeta de vagrant
  • Inicia y entra en la máquina vagrant
vagrant up
vagrant ssh
  • Cambia a la carpeta del rol
cd /etc/ansible/roles/ansible-role- [tab]
  • Ahora puedes ejecutar todas las pruebas
yamllint .
ansible-lint .
molecule create
molecule test

Proceso de Construcción y Lanzamiento

El rol de ansible define una serie de flujos de trabajo de github para ejecutar pruebas de molecule y gestión de lanzamientos.

La gestión de lanzamientos requiere un conjunto de configuraciones.

Proteger la rama master/main

  • Configuración -> Ramas -> Agregar regla de protección de rama
  • Nombre del patrón de rama -> main o master (dependiendo de tu rama predeterminada)
  • Proteger ramas coincidentes -> marcar "Requerir una solicitud de extracción antes de fusionar"
  • "Requerir aprobaciones" puede manejarse individualmente si es necesario

Dar permisos de lectura y escritura a GITHUB_TOKEN

  • Configuración -> Acciones -> General -> Permisos del flujo de trabajo -> permisos de lectura y escritura

Mensajes de confirmación

Los mensajes de confirmación deben seguir un formato especial para lograr una actualización de versión semántica de parche, menor o mayor.

parche

0.0.x

fix(single_word): descripción
menor

0.x.0

feat(single_word): descripción
mayor

x.0.0

perf(single_word): descripción
CAMBIO ROMPEDOR: describiendo el cambio rompedor

Es absolutamente importante que se mencione "CAMBIO ROMPEDOR: " en la segunda línea o posterior. En los mensajes de confirmación de una sola línea, se ignorará la actualización de la versión mayor.

Agregar secreto GALAXY_API_KEY

  • Autentícate con tu cuenta de github en https://galaxy.ansible.com/.
  • Obtén la clave api de galaxy desde Preferencias -> Clave API
  • Abre tu repositorio de rol en github
  • Configuración -> Secretos y variables -> Acciones -> Nuevo secreto de repositorio
  • Usa "GALAXY_API_KEY" como clave y la clave api de galaxy copiada como valor

Licencia

MIT

Información del Autor

© Andre Lohmann (y otros) 2024

https://github.com/andrelohmann

Contacto del Mantenedor

  • Andre Lohmann <lohmann.andre (en) gmail (punto) com>
Acerca del proyecto

ansible galaxy role to install maxmind geoip database

Instalar
ansible-galaxy install andrelohmann.maxmind
Licencia
mit
Descargas
112
Propietario