© saicle/Shutterstock.com
PHP Magazin
Konfiguration von Node.js-Prozessen mit Convict

Node.js-Module: Convict

Es gibt Konfigurationsinformationen, die auf keinen Fall ins Source Code Repository gelangen dürfen - sensible Log-in-Daten zum Beispiel. Mittels einzelner verschiedener Lösungen, wie beispielsweise der Verwendung von Umgebungsvariablen bei Node.js-Applikationen, können derartige Daten aus dem Repository herausgehalten werden. Oder man benutzt Bibliotheken wie Convict, die mehrere Lösungsoptionen aus einer Hand bieten.

Sebastian Springer


Wenn Sie schon die eine oder andere Applikation umgesetzt und erfolgreich deployt haben, kennen Sie bestimmt dieses Problem: Sie haben eine Konfiguration, die spezifisch für ihre Umgebung ist. Doch wohin damit? Im Zuge dieses Artikels werfen wir einen Blick auf die verschiedenen Möglichkeiten, die Ihnen zur Verfügung stehen, um umgebungsspezifische Konfigurationen vorzuhalten. Außerdem lernen Sie Hilfsmittel kennen, die Ihnen an dieser Stelle die meiste Arbeit bereits abnehmen.

Umgebungsspezifische Konfiguration in einer Applikation

Eine solche Konfiguration kann alles sein, vom Hostnamen eines Service, mit dem Ihre Applikation kommuniziert, über ein Flag, mit dem Sie ein Feature an- oder abschalten, bis hin zu Anmeldeinformationen für einen Datenbanknutzer. Manche dieser Konfigurationsinformationen sollen einfach nur für die jeweilige Umgebung korrekt gesetzt werden. Bei anderen ist es wichtig, dass sie unter keinen Umständen ins Source Code Repository gelangen. So haben beispielsweise der Benutzername und das Passwort des Datenbankbenutzers des Produktivsystems nichts im Quellcode verloren. In manchen Fällen ist diese Information nur der Betriebsmannschaft der Applikation vorbehalten und die Entwickler der Applikation dürfen aus sicherheitstechnischen Gründen keinen Zugriff auf diese Information haben.

In diesem Fall entfällt der Lösungsansatz, die Konfiguration innerhalb des Quellcodes der Applikation zu speichern. Bei dieser Variante würden Sie die Information direkt in den Quellcode integrieren, die aktuelle Umgebung abfragen und eine Variable mit dem gewünschten Wert belegen. Allerdings können Sie diesen Ansatz auch so erweitern, dass er die Anforderung erfüllt, sensible Informationen nur auf dem Zielsystem vorzuhalten. Hierfür speichern Sie die Informationen in einer Datei, die Sie über das Modulsystem einbinden, aber nicht ins Repository committen.

Richtig elegant ist dieser Ansatz allerdings nicht, also benötigen Sie eine Alternative. Etwas zusätzliche Flexibilität kann dabei auch nicht schaden.

Umgebungsvariablen nutzen

Ein Lösungsansatz, der sehr häufig bei Node.js-Applikationen anzutreffen ist, ist die Verwendung von Umgebungsvariablen, und sei es nur zur Identifikation der aktuellen Umgebung. Zu diesem Zweck werden auf dem System, auf dem die Applikation ausgeführt wird, Umgebungsvariablen gesetzt, auf die Sie in Ihrer Node.js-Applikation zugreifen können. Im folgenden Abschnitt sehen Sie eine einfache Demonstration dieses Sachverhalts:

$ export N...

PHP Magazin
Konfiguration von Node.js-Prozessen mit Convict

Node.js-Module: Convict

Es gibt Konfigurationsinformationen, die auf keinen Fall ins Source Code Repository gelangen dürfen - sensible Log-in-Daten zum Beispiel. Mittels einzelner verschiedener Lösungen, wie beispielsweise der Verwendung von Umgebungsvariablen bei Node.js-Applikationen, können derartige Daten aus dem Repository herausgehalten werden. Oder man benutzt Bibliotheken wie Convict, die mehrere Lösungsoptionen aus einer Hand bieten.

Sebastian Springer


Wenn Sie schon die eine oder andere Applikation umgesetzt und erfolgreich deployt haben, kennen Sie bestimmt dieses Problem: Sie haben eine Konfiguration, die spezifisch für ihre Umgebung ist. Doch wohin damit? Im Zuge dieses Artikels werfen wir einen Blick auf die verschiedenen Möglichkeiten, die Ihnen zur Verfügung stehen, um umgebungsspezifische Konfigurationen vorzuhalten. Außerdem lernen Sie Hilfsmittel kennen, die Ihnen an dieser Stelle die meiste Arbeit bereits abnehmen.

Umgebungsspezifische Konfiguration in einer Applikation

Eine solche Konfiguration kann alles sein, vom Hostnamen eines Service, mit dem Ihre Applikation kommuniziert, über ein Flag, mit dem Sie ein Feature an- oder abschalten, bis hin zu Anmeldeinformationen für einen Datenbanknutzer. Manche dieser Konfigurationsinformationen sollen einfach nur für die jeweilige Umgebung korrekt gesetzt werden. Bei anderen ist es wichtig, dass sie unter keinen Umständen ins Source Code Repository gelangen. So haben beispielsweise der Benutzername und das Passwort des Datenbankbenutzers des Produktivsystems nichts im Quellcode verloren. In manchen Fällen ist diese Information nur der Betriebsmannschaft der Applikation vorbehalten und die Entwickler der Applikation dürfen aus sicherheitstechnischen Gründen keinen Zugriff auf diese Information haben.

In diesem Fall entfällt der Lösungsansatz, die Konfiguration innerhalb des Quellcodes der Applikation zu speichern. Bei dieser Variante würden Sie die Information direkt in den Quellcode integrieren, die aktuelle Umgebung abfragen und eine Variable mit dem gewünschten Wert belegen. Allerdings können Sie diesen Ansatz auch so erweitern, dass er die Anforderung erfüllt, sensible Informationen nur auf dem Zielsystem vorzuhalten. Hierfür speichern Sie die Informationen in einer Datei, die Sie über das Modulsystem einbinden, aber nicht ins Repository committen.

Richtig elegant ist dieser Ansatz allerdings nicht, also benötigen Sie eine Alternative. Etwas zusätzliche Flexibilität kann dabei auch nicht schaden.

Umgebungsvariablen nutzen

Ein Lösungsansatz, der sehr häufig bei Node.js-Applikationen anzutreffen ist, ist die Verwendung von Umgebungsvariablen, und sei es nur zur Identifikation der aktuellen Umgebung. Zu diesem Zweck werden auf dem System, auf dem die Applikation ausgeführt wird, Umgebungsvariablen gesetzt, auf die Sie in Ihrer Node.js-Applikation zugreifen können. Im folgenden Abschnitt sehen Sie eine einfache Demonstration dieses Sachverhalts:

$ export N...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang