andrelohmann.maxmind
maxmind
Inhalt
Verwenden Sie diese Rolle, um geoip und die maxmind-Datenbank zu installieren.
Ein Maxmind-Konto ist erforderlich. Um ein Konto bei Maxmind zu erstellen, folgen Sie diesen Links:
Anforderungen
Diese Rolle benötigt Ubuntu.
Rollenvariablen
Setzen Sie die account_id, das license_key und die edition_ids:
maxmind_account_id: __IHRE_ACCOUNT_ID__
maxmind_license_key: __IHRES_LIZENZSCHLÜSSEL__
maxmind_edition_ids: GeoLite2-ASN GeoLite2-City GeoLite2-Country
maxmind_geoipupdate_run: true # geoipupdate während des Installationsprozesses ausführen
maxmind_geoipupdate_cron: true # einen Cron-Job erstellen, der regelmäßig geoipupdate ausführt
Beispiel-Playbook
- hosts: maxmind
roles:
- { role: andrelohmann.maxmind }
Rollenausentwicklung
Spezialzweck
Dieses Repository unterstützt die folgenden Funktionen für die Rollenausentwicklung:
- yamllint
- ansible-lint
- molekulartest
- Github-Aktion
- automatische Versionsaktualisierung
- Ansible-Galaxy aktualisieren
- Build-Status anzeigen
- Tests innerhalb von Vagrant (zu Entwicklungszwecken)
- Tests mit Molecule (innerhalb oder außerhalb von Vagrant)
- Tests gegen Docker-Container
- Entwickeln und Testen innerhalb von VSCode
Voraussetzungen
- Virtualbox + Vagrant installiert (nur erforderlich, wenn die Rolle auch mit Vagrant getestet werden soll)
- Docker Desktop
- Visual Studio Code + Remote-Erweiterungspaket (Abhängigkeiten sind in .vscode/extensions.json definiert)
Entwicklungsumgebung
Diese Ansible-Rolle wird mit Molecule für Tests entwickelt. Ihre Entwicklung basiert auf Visual Studio Code und einem zugehörigen Entwicklung Container, der alle Abhängigkeiten in Bezug auf notwendige Tools (Ansible, Linter, Molecule) löst.
Die Rolle wird auf Ubuntu Jammy getestet.
Um die Molecule-Testcontainer von innerhalb des Entwicklung Containers zu starten, muss der Docker-Socket in den Entwicklung Container eingebunden werden.
Wichtige Ordner und Dateien
.devcontainer
- Definiert die Docker-Datei für den Entwicklung Container
- Konfiguriert den Start des Entwicklung Containers (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 zur Unterstützung von Systemd-Diensten vor (notwendig für einige Ansible-Rollen, die auf Systemd wirken)
- Installiert alle Anforderungen, um Ansible gegen den abgeleiteten Container auszuführen
- Die Datei ist mit den Attributen der Plattformen in molecule/default/molecule.yml abgestimmt
- Weitere Informationen - die Molecule-Dokumentation studieren
Verwendung
Visual Studio Code
- Wechseln Sie in das Stammverzeichnis Ihrer Rolle und starten Sie VSCode
code .
- Von innerhalb des Entwicklung Containers können Sie die folgenden Ausführungsbefehle verwenden
yamllint .
ansible-lint .
molecule create
molecule test
Vagrant + Virtualbox
- Wechseln Sie in das Stammverzeichnis Ihrer Rolle
- Wechseln Sie in den Vagrant-Ordner
- Starten und betreten Sie die Vagrant-Maschine
vagrant up
vagrant ssh
- Wechseln Sie in den Rollenordner
cd /etc/ansible/roles/ansible-role- [tab]
- Jetzt 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, um Molecule-Tests und das Release-Management auszuführen.
Das Release-Management erfordert eine Handvoll Einstellungen.
Schutz des master/main-Branch
- Einstellungen -> Branches -> Schutzregel für Branch hinzufügen
- Branch-Mustername -> main oder master (je nach Ihrem Standard-Branch)
- Übereinstimmende Branches schützen -> "Erfordert einen Pull-Request vor dem Zusammenführen" aktivieren
- "Erforderliche Genehmigungen" können individuell 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-Version-Update 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 change
Es ist äußerst wichtig, dass "BREAKING CHANGE: " in der zweiten oder nachfolgenden Zeile erwähnt wird. Bei einzeiligen Commit-Nachrichten wird das Major-Update ignoriert.
Fügen Sie das GALAXY_API_KEY-Geheimnis hinzu
- Melden Sie sich mit Ihrem Github-Konto unter https://galaxy.ansible.com/ an.
- Holen Sie sich den Galaxy-API-Schlüssel aus den 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
Autoreninformationen
© Andre Lohmann (und andere) 2024
https://github.com/andrelohmann
Kontakt des Maintainers
- Andre Lohmann <lohmann.andre (at) gmail (dot) com>
ansible-galaxy install andrelohmann.maxmind