andrelohmann.nodesource

nodesource

Letzter Test

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

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

  • 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>
Über das Projekt

ansible galaxy role to install nodejs from nodesource

Installieren
ansible-galaxy install andrelohmann.nodesource
GitHub Repository
Lizenz
mit
Downloads
8.5k
Besitzer