andrelohmann.mailpit
mailpit
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
- 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>
ansible-galaxy install andrelohmann.mailpit