andrelohmann.mailpit

mailpit

Letzter Test

Inhalt

Verwenden Sie diese Rolle, um mailpit zu installieren und es als Daemon im Hintergrund mit systemd auszuführen.

Anforderungen

Diese Rolle benötigt Ubuntu.

Rollenvariablen

Die Standardvariablen definieren die Einstellungen, mit denen mailpit gestartet wird.

mailpit_smtp_port: 1025
mailpit_web_port: 8025
mailpit_release: latest

Durch Setzen der folgenden zusätzlichen Variablen können Sie mailpit hinter Apache betreiben:

mailpit_proxy_apache: true
mailpit_proxy_domain: _your.mailpit.domain_
mailpit_proxy_port: 80

oder Nginx:

mailpit_proxy_nginx: true
mailpit_proxy_domain: _your.mailpit.domain_
mailpit_proxy_port: 80

Beispiel Playbook

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

Rollenausentwicklung

Besondere Funktionalität

Dieses Repository unterstützt folgende Funktionen zur Rollenausentwicklung:

  • yamllint
  • ansible-lint
  • molecule Test
  • Github-Aktion
  • automatische Versionsaktualisierung
  • Update von ansible-galaxy
  • Build-Status anzeigen
  • Tests innerhalb von Vagrant (zu Entwicklungszwecken)
  • Tests mit molecule (innerhalb oder außerhalb von Vagrant)
  • Tests gegen Docker-Container
  • Entwicklung und Tests in VSCode

Voraussetzungen

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

  • Virtualbox + Vagrant installiert (nur notwendig, wenn die Rolle auch mit Vagrant getestet werden soll)
  • Docker Desktop
  • Visual Studio Code + Remote-Extension-Pack (Abhängigkeiten sind in .vscode/extensions.json definiert)

Entwicklungs-Setup

Diese Ansible-Rolle wird mit Molecule für Tests entwickelt. Ihre Entwicklung basiert auf Visual Studio Code und einem entsprechenden Entwicklung Container, der alle Abhängigkeiten in Bezug auf benötigte Tools (Ansible, Linter, Molecule) löst.

Die Rolle wird in zwei Ubuntu-Containern (focal, jammy) getestet.

Um die Molecule-Testcontainer aus dem Entwicklung Container zu starten, muss der Docker-Socket in den Entwicklung Container gemountet werden.

Wichtigste Ordner und Dateien

.devcontainer
  • Definiert das Dockerfile für den Entwicklung Container
  • Konfiguriert den Start des Entwicklung Containers (z. B. Bind-Mount des Docker-Sockets)
molecule/default/Dockerfile.js
  • Wird als Vorlage für alle in molecule/default/molecule.yml definierten Plattformen verwendet
  • Bereitet die Umgebungen zur Unterstützung von systemd-Diensten vor (notwendig für einige Ansible-Rollen, die mit systemd arbeiten)
  • Installiert alle Anforderungen, um Ansible gegen den abgeleiteten Container auszuführen
  • Die Datei ist an die Merkmale der Plattformen in molecule/default/molecule.yml angepasst
  • Weitere Informationen - lesen Sie die Molecule-Dokumentation

Nutzung

Visual Studio Code

  • Wechseln Sie zum Stammverzeichnis Ihrer Rolle und starten Sie VSCode
code .
  • Aus dem Entwicklung Container können Sie die folgenden Befehle ausführen:
yamllint .
ansible-lint .
molecule create
molecule test

Vagrant + Virtualbox

  • Wechseln Sie zum Stammverzeichnis Ihrer Rolle
  • Wechseln Sie in den Vagrant-Ordner
  • Starten Sie die Vagrant-Maschine und betreten Sie diese
vagrant up
vagrant ssh
  • Wechseln Sie in den Rollenordner
cd /etc/ansible/roles/ansible-role- [tab]
  • Nun können Sie alle Tests ausführen
yamllint .
ansible-lint .
molecule create
molecule test

Build- und Release-Prozess

Die Ansible-Rolle definiert eine Reihe von Github-Workflows zum Ausführen von Molecule-Tests und Release-Management.

Das Release-Management erfordert einige Einstellungen.

Schutz des Master-/Main-Branchs

  • Einstellungen -> Branches -> Branch-Schutzregel hinzufügen
  • Branch-Pattern-Name -> main oder master (je nach Ihrem Standard-Branch)
  • Geschützte übereinstimmende Branches -> "Erforderlich, eine Pull-Request vor dem Zusammenführen" aktivieren
  • "Genehmigungen erforderlich" kann nach Bedarf behandelt werden

Leseberechtigungen und Schreibberechtigungen für GITHUB_TOKEN gewähren

  • Einstellungen -> Aktionen -> Allgemein -> Workflow-Berechtigungen -> Lese- und Schreibberechtigungen

Commit-Nachrichten

Commit-Nachrichten sollten einem speziellen Format folgen, um ein Patch-, Minor- oder Major-Semantisches Versionsupdate zu erreichen.

Patch

0.0.x

fix(einzelwort): Beschreibung
Minor

0.x.0

feat(einzelwort): Beschreibung
Major

x.0.0

perf(einzelwort): Beschreibung
BREAKING CHANGE: Beschreibung der brechenden Änderung

Es ist äußerst wichtig, dass "BREAKING CHANGE: " in der zweiten Zeile und darüber steht. Bei einer Einzeiligen Commit-Nachricht wird das Major-Version-Update ignoriert.

GALAXY_API_KEY-Geheimnis hinzufügen

  • Authentifizieren Sie sich mit Ihrem Github-Konto unter https://galaxy.ansible.com/.
  • Holen Sie den Galaxy API-Schlüssel unter Einstellungen -> API-Schlüssel
  • Öffnen Sie Ihr Github-Rollen-Repository
  • Einstellungen -> Geheimnisse und Variablen -> Aktionen -> Neues Repository-Geheimnis
  • Verwenden Sie "GALAXY_API_KEY" als Schlüssel und den kopierten Galaxy API-Schlüssel als Wert

Lizenz

MIT

Autor Informationen

© Andre Lohmann (und andere) 2024

https://github.com/andrelohmann

Kontakt des Betreuers

  • Andre Lohmann <lohmann.andre (at) gmail (dot) com>
Über das Projekt

ansible galaxy role to install mailpit

Installieren
ansible-galaxy install andrelohmann.mailpit
GitHub Repository
Lizenz
mit
Downloads
224
Besitzer