andrelohmann.mailhog

mailhog

Última prueba

Contenido

Usa este rol para instalar mailhog y ejecutarlo como un daemon en segundo plano usando systemd.

Requisitos

Este rol requiere Ubuntu.

Variables del Rol

El conjunto de variables por defecto define la configuración con la que se iniciará mailhog:

mailhog_smtp_port: 1025
mailhog_web_port: 8025
mailhog_path: /opt/mailhog
mailhog_release: v1.0.1

Al establecer las siguientes variables adicionales, puedes usar mailhog detrás de Apache:

mailhog_proxy_apache: true
mailhog_proxy_domain: _tu.dominio.mailhog_
mailhog_proxy_port: 80

o Nginx:

mailhog_proxy_nginx: true
mailhog_proxy_domain: _tu.dominio.mailhog_
mailhog_proxy_port: 80    

Ejemplo de Playbook

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

Desarrollo del Rol

Propósito especial

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

  • yamllint
  • ansible-lint
  • pruebas con molecule
  • acción de github
  • auto actualizaciones de versión
  • actualizar ansible-galaxy
  • mostrar estado de la construcción
  • probar dentro de vagrant (con fines de desarrollo)
  • probar con molecule (dentro o fuera de vagrant)
  • probar contra contenedores de Docker
  • probar y desarrollar dentro de vscode

Prerrequisitos

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

  • Virtualbox + Vagrant instalados (solo necesario si el rol debe ser probado también con vagrant)
  • Docker Desktop
  • VisualStudioCode + paquete de extensión remota (las dependencias están definidas en .vscode/extensions.json)

Configuración de Desarrollo

Este rol de ansible se desarrolla usando molecule para las pruebas. Su desarrollo se basa en Visual Studio Code y un contenedor de desarrollo correspondiente, resolviendo todas las dependencias en términos de herramientas necesarias (ansible, linter, molecule).

El rol se probará en dos contenedores de Ubuntu (focal, jammy).

Para iniciar los contenedores de prueba de molecule desde el contenedor de desarrollo, es necesario montar el socket de Docker 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, montaje del socket de docker)
molecule/default/Dockerfile.js
  • Se usa como plantilla para todas las plataformas definidas en molecule/default/molecule.yml
  • Prepara los entornos para soportar servicios de 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 el 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 de 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 Liberación

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 según se requiera.

Dar permisos de lectura y escritura a GITHUB_TOKEN

  • Configuración -> Acciones -> General -> Permisos de 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 patch, minor o major.

patch

0.0.x

fix(single_word): descripción
minor

0.x.0

feat(single_word): descripción
major

x.0.0

perf(single_word): descripción
CAMBIO DRÁSTICO: describir el cambio drástico

Es absolutamente importante que "CAMBIO DRÁSTICO: " sea mencionado en la segunda línea o posteriores. En mensajes de confirmación en una sola línea, la actualización de versión mayor será ignorada.

Agregar la clave secreta 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 del 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 mailhog

Instalar
ansible-galaxy install andrelohmann.mailhog
Licencia
mit
Descargas
1.3k
Propietario