andrelohmann.wkhtmltopdf
wkhtmltopdf
Inhalt
Verwende diese Rolle, um den wkhtmltopdf Konsolen-PDF-Generator und das vollständige Set an Google Fonts zu installieren, die in den generierten PDF-Dokumenten verwendet werden können.
wkhtmltopdf wird aus den Ubuntu-Distributionquellen installiert.
Anforderungen
Diese Rolle benötigt Ubuntu.
Rollenvariablen
Die Standardvariablen können verwendet werden, um zu entscheiden, ob das gesamte Google Fonts Set installiert werden soll.
wkhtmltopdf_install_google_fonts: true
Extrahiere die aktuelle Versionsnummer hier.
Beispiel-Playbook
- hosts: wkhtmltopdf
roles:
- { role: andrelohmann.wkhtmltopdf }
Rollenentwicklung
Sonderzweck
Dieses Repository unterstützt die folgenden Funktionen für die Rollenentwicklung:
- yamllint
- ansible-lint
- Molecule-Test
- GitHub-Aktion
- automatische Versionsaktualisierung
- Ansible-Galaxy aktualisieren
- Build-Status anzeigen
- Tests in Vagrant (zu Entwicklungszwecken)
- Tests mit Molecule (innerhalb oder außerhalb von Vagrant)
- Tests gegen Docker-Container
- Testen und Entwickeln innerhalb von VSCode
Voraussetzungen
- VirtualBox + Vagrant installiert (nur notwendig, wenn die Rolle auch mit Vagrant getestet werden soll)
- Docker Desktop
- Visual Studio Code + Remote-Erweiterungspaket (Abhängigkeiten sind in .vscode/extensions.json definiert)
Entwicklungs-Setup
Diese Ansible-Rolle wird mit Molecule für Tests entwickelt. Die Entwicklung basiert auf Visual Studio Code und einem entsprechenden Entwicklungscontainer, der alle Abhängigkeiten in Bezug auf notwendige Tools (Ansible, Linter, Molecule) löst.
Die Rolle wird unter Ubuntu Jammy getestet.
Um die Molecule-Testcontainer aus dem Entwicklungscontainer zu starten, muss der Docker-Socket in den Entwicklungscontainer eingebunden werden.
Wichtige Ordner und Dateien
.devcontainer
- Definiert das Dockerfile für den Entwicklungscontainer
- Konfiguriert den Start des Entwicklungscontainers (z.B. Docker-Socket einbinden)
molecule/default/Dockerfile.js
- Wird als Vorlage für alle in molecule/default/molecule.yml definierten Plattformen verwendet
- Bereitet die Umgebungen vor, um Systemd-Dienste zu unterstützen (notwendig für einige Ansible-Rollen, die auf Systemd wirken)
- Installiert alle Voraussetzungen, um Ansible gegen den abgeleiteten Container auszuführen
- Die Datei ist auf die Attribute der Plattformen in molecule/default/molecule.yml abgestimmt
- Für mehr Informationen - studiere die Molecule-Dokumentation
Nutzung
Visual Studio Code
- Wechsle in das Wurzelverzeichnis deiner Rolle und starte VSCode
code .
- Im Entwicklungscontainer kannst du die folgenden Befehle ausführen
yamllint .
ansible-lint .
molecule create
molecule test
Vagrant + VirtualBox
- Wechsle in das Wurzelverzeichnis deiner Rolle
- Wechsle in den Vagrant-Ordner
- Starte und betrete die Vagrant-Maschine
vagrant up
vagrant ssh
- Wechsle in den Rollen-Ordner
cd /etc/ansible/roles/ansible-role- [tab]
- Jetzt kannst du alle Tests ausführen
yamllint .
ansible-lint .
molecule create
molecule test
Build- und Veröffentlichungsprozess
Die Ansible-Rolle definiert eine Reihe von GitHub-Arbeitsabläufen, um Molecule-Tests und das Release-Management durchzuführen.
Das Release-Management erfordert einige Einstellungen.
Schutz des Haupt-/Master-Branchs
- Einstellungen -> Branches -> Eine Branch-Schutzregel hinzufügen
- Branch-Mustername -> main oder master (je nach deinem Standardbranch)
- Geschützte Branches -> "Require a pull request before merging" markieren
- "Require approvals" kann individuell behandelt werden
Lese- und Schreibrechte für GITHUB_TOKEN gewähren
- Einstellungen -> Aktionen -> Allgemein -> Workflow-Berechtigungen -> Lese- und Schreibrechte
Commit-Nachrichten
Commit-Nachrichten sollten einem speziellen Format folgen, um ein Patch-, Minor- oder Major-Semantikversionsupdate zu erreichen.
Patch
0.0.x
fix(single_word): Beschreibung
Minor
0.x.0
feat(single_word): Beschreibung
Major
x.0.0
perf(single_word): Beschreibung
BREAKING CHANGE: Beschreibung der Breaking Changes
Es ist unbedingt erforderlich, dass "BREAKING CHANGE: " in der zweiten oder einer späteren Zeile erwähnt wird. Bei einzeiligen Commit-Nachrichten wird das Major-Version-Update ignoriert.
GALAXY_API_KEY Geheimnis hinzufügen
- Authentifiziere dich mit deinem GitHub-Konto unter https://galaxy.ansible.com/.
- Besorge dir den Galaxy API-Schlüssel aus Einstellungen -> API-Schlüssel
- Öffne dein GitHub-Rollen-Repository
- Einstellungen -> Geheimnisse und Variablen -> Aktionen -> Neues Repository-Geheimnis
- Verwende "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 zum Maintainer
- Andre Lohmann <lohmann.andre (at) gmail (dot) com>
ansible-galaxy install andrelohmann.wkhtmltopdf