grzegorznowak.nvm_node
Ansible NVM Node
Installiert Node über NVM auf Debian- und RedHat-Systemen.
Installation
Entweder
ansible-galaxy install grzegorznowak.nvm_node
- Das Repository direkt klonen
Haftungsausschluss
Es handelt sich um eine ziemlich maßgeschneiderte Installation von Node, die nicht auf die nützlichen Funktionen von apt/yum angewiesen ist und auch nicht der empfohlenen Methode folgt (siehe @ https://github.com/creationix/nvm/issues/1533). Darüber hinaus ist die Versionierung nur über Ansible selbst erreichbar. Bitte stelle sicher, dass die hier angegebene Einrichtung die ist, die du tatsächlich benötigst. Ich würde sagen, es ist 70% für DEV-Zwecke und 30% für den Live-Betrieb. Und 0%, wenn du viele Benutzer/Rollen hast, die es auf einem einzigen Server verwenden – das wird im jetzigen Zustand nicht funktionieren (obwohl es irgendwann mit relativ minimalen Anpassungen klappen könnte).
Der Knackpunkt ist, dass es NVM in einen globalen Pfad installiert und es mit einem Symlink nach /usr/local/bin
verlinkt, um allgemeinen Zugriff zu ermöglichen. Außerdem wird die globale bashrc geändert, um die NVM-Pfade für jeden Benutzer im System einzuschließen.
Auch wenn dies nur geringfügig ist, bricht es das Konzept von NVM als Benutzertool und funktioniert nicht zu 100% einwandfrei, wenn spezifische nicht-interaktive Shells verwendet werden. Dies könnte die Nutzung von npm-installierten Paketen in diesen Fällen beeinflussen.
Dennoch ist NVM, so cool wie es ist, wirklich das Tool unserer Wahl, also brauchen wir es so und vielleicht brauchst du es auch!
Anforderungen
Keine Abhängigkeiten, beachte jedoch, dass wget
installiert wird, um das NVM-Installationsskript abzurufen.
Unterstützte Distributionen
Aktuell wird auf folgenden Distributionen gebaut und integriert:
Ubuntu: 20.04, 18.04, 16.04, 14.04
Debian: Buster, Stretch
CentOS: 7
Variablen
Defaults
nvm_install_script_version: "0.33.11" # das zu verwendende NVM-Installationsskript (aktuell stabile Version zum Zeitpunkt des Schreibens)
nvm_user_name: "root" # du kannst einen anderen Benutzer verwenden, vielleicht erreichst du dann den mehr nvm-typischen Ansatz
# aber ich habe das nicht in Tests usw. abgedeckt.
nvm_dir: "/var/lib/nvm" # für die globale (Standard-)Installation. Befolge die gleiche Regel wie die nvm_user_name-Variable
nvm_node_version: "8.11.3" # die Node-Version, die über NVM installiert werden soll
nvm_install_globally: [] # Bibliotheken, die global installiert und verlinkt werden sollen, sieh weiter unten nach weiteren Details
Beispiel-Playbook
wenn von GitHub geklont
---
- hosts: all
vars:
nvm_node_version: "4.1.1"
roles:
- role: ansible-nvm-node
wenn von Ansible Galaxy
---
- hosts: all
vars:
nvm_node_version: "your.node.version"
roles:
- role: grzegorznowak.nvm_node
Node aktualisieren
Ersetze einfach nvm_node_version
durch die Version, die du global verwenden möchtest, und führe das Playbook erneut aus.
Globale Pakete installieren
Für die beste Konsistenz wird dringend empfohlen, globale Pakete ebenfalls mit dieser Rolle zu installieren, in diesem Fall
ändere einfach die Variable nvm_install_globally
wie folgt:
nvm_install_globally: ['gulp']
Du kannst auch Versionsangaben für globale Pakete verwenden:
nvm_install_globally:
- name: yarn
version: 1.9.4
oder beides mischen:
nvm_install_globally:
- gulp
- lighthouse
- name: yarn
version: 1.9.4
Das installiert die aufgeführten Bibliotheken und fügt einen Symlink zum globalen $PATH hinzu, damit spezifische Umgebungen (wie Cron) darauf zugreifen können.
Tests
Anforderungen
Du kannst ein Hilfsskript verwenden, das eine virtuelle Umgebung mit allem Nostwendigen installiert:
./bootstrap_test.sh
Aktiviere einfach die virtuelle Umgebung mit source test_env/bin/activate
oder du machst es manuell für bessere Kontrolle:
sudo apt install virtualenv python3-pip
virtualenv test_env --python=python3
source test_env/bin/activate
pip install -r test-requirements.txt
Testen mit LXC-Containern
molecule test
Zusätzliche Vorteile von Molecule
Du kannst all diese praktischen Dinge tun wie molecule converge
, um Instanzen ganz nach Bedarf zu erstellen
und sie dann mit molecule destroy
wieder abzureißen. Hier sind wirklich keine Grenzen gesetzt!
Gesponsert von
Kwiziq.com - Die KI-Sprachbildungsplattform
Spottmedia.com - Technologie-, Design-, Entwicklungs- und Beratungsdienste
Autorinformationen
Präsentiert mit Liebe von Grzegorz Nowak.
Installs node via nvm globally; includes molecule testing framework.
ansible-galaxy install grzegorznowak.nvm_node