andrelohmann.nodesource
nodesource
Inhalt
Verwenden Sie diese Rolle, um nodejs aus dem nodesource-Repository auf Ihrem Ubuntu-Server zu installieren.
Anforderungen
Diese Rolle erfordert Ubuntu.
Rollenvariablen
Die standardmäßigen Variablen definieren die Node-Version und sollten idealerweise in group_vars/host_vars überschrieben werden.
nodesource_nodejs_version: '20'
Beispiel-Playbook
- hosts: nodesource
roles:
- { role: andrelohmann.nodesource }
Rollenentwicklung
Besonderer Zweck
Dieses Repository unterstützt die folgenden Funktionen für die Rollenentwicklung:
- yamllint
- ansible-lint
- molecule-test
- Github-Action
- automatische Versionserhöhung
- update ansible-galaxy
- Anzeige des Build-Status
- Testen innerhalb von Vagrant (für Entwicklungszwecke)
- Test mit Molecule (innerhalb oder außerhalb von Vagrant)
- Testen gegen Docker-Container
- Testen und Entwickeln in VSCode
Voraussetzungen
- Virtualbox + Vagrant installiert (nur erforderlich, wenn die Rolle auch mit Vagrant getestet werden soll)
- Docker Desktop
- VisualStudioCode + 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 Entwicklungskontainer, der alle Abhängigkeiten in Bezug auf notwendige Tools (Ansible, Linter, Molecule) löst.
Die Rolle wird in drei Ubuntu-Containern (bionic, focal, jammy) getestet.
Um die Molecule-Testcontainer aus dem Entwicklungskontainer zu starten, muss der Docker-Socket in den Entwicklungskontainer gemountet werden.
Wichtige Ordner und Dateien
.devcontainer
- Definiert die Dockerfile für den Entwicklungskontainer
- Konfiguriert den Start des Entwicklungskontainers (z. B. bind mount Docker-Socket)
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 Anforderungen, um Ansible gegen den abgeleiteten Container auszuführen
- Die Datei ist auf die Attribute der Plattformen in molecule/default/molecule.yml abgestimmt
- Für weitere Informationen - studieren Sie die Molecule-Dokumentation
Nutzung
Visual Studio Code
- Wechseln Sie in das Stammverzeichnis Ihrer Rolle und starten Sie VSCode
code .
- Aus dem Entwicklungskontainer können Sie die folgenden Befehle ausführen
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 durchzuführen.
Das Release-Management erfordert einige Einstellungen.
Schutz des Haupt-/Master-Branches
- Einstellungen -> Branches -> Hinzufügen einer Branch-Schutzregel
- Branch-Mustername -> main oder master (je nach Ihrem Standard-Branch)
- Geschützte übereinstimmende Branches -> aktivieren Sie "Erfordere eine Pull-Anfrage vor dem Zusammenführen"
- "Erfordere Genehmigungen" kann individuell behandelt werden, wie erforderlich
Lesende und schreibende Berechtigungen für GITHUB_TOKEN geben
- Einstellungen -> Aktionen -> Allgemein -> Workflow-Berechtigungen -> Lese- und Schreibberechtigungen
Commit-Nachrichten
Commit-Nachrichten sollten einem speziellen Format folgen, um ein Patch-, Minor- oder Major-Semantikunupdate 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 absolut wichtig, dass "BREAKING CHANGE: " in der zweiten+ Zeile erwähnt wird. Bei einzeiligen Commit-Nachrichten wird das Major-Update ignoriert.
GALAXY_API_KEY-Secret hinzufügen
- Authentifizieren Sie sich mit Ihrem GitHub-Konto unter https://galaxy.ansible.com/.
- Holen Sie sich den Galaxy-API-Schlüssel aus Einstellungen -> API-Schlüssel
- Öffnen Sie Ihr GitHub-Rollen-Repository
- Einstellungen -> Secrets und Variablen -> Aktionen -> Neues Repository-Secret
- 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) 2023
https://github.com/andrelohmann
Kontakt des Betreuers
- Andre Lohmann <lohmann.andre (at) gmail (dot) com>
ansible-galaxy install andrelohmann.nodesource