Wer hat gesagt, dass sich Eigenschaftendateien und Umgebungsvariablen gegenseitig ausschließen?
Es ist zu unterscheiden zwischen "Wo speichere ich meine App-Konfiguration?" Und " Woher bezieht meine App die Konfiguration?"
Das wahrscheinlichste Ergebnis ist, dass jeder als Speichermechanismus einfach so weitermachen sollte , wie er es mit Konfigurationsdateien tut (denken Sie an einen langfristigen, beständigen Zustand, solange die Umgebung existiert).
Anstatt diese Konfigurationsdatei in den Anwendungskontext abzulegen und ausführen zu lassen, sollte die Anwendung jedoch nur erwarten können, dass diese Variablen beim Start bereits in der Umgebung verfügbar sind.
Dies bedeutet, dass Sie zwei Bereitstellungsworkflows benötigen:
- Ich stelle möglicherweise eine Anwendung in einer Umgebung bereit, indem ich den X-Änderungskontrollprozess durchlaufe und Y-Überprüfungen mit dem Z-Tool durchführe, was auch immer.
- Ich stelle meine Umgebungskonfiguration in einer Umgebung bereit, indem ich den A-Änderungskontrollprozess durchlaufe und B-Überprüfungen mit dem C-Tool durchführe, denselben Prozess, unterschiedliche Ergebnisse.
Um ein Beispiel für die Verwaltung von Umgebungsvariablen als Schlüsselwertpaare in einem Tool wie consul zu verwenden, wenn Sie Konfigurationsdateien in git speichern, verwenden Sie Tools wie git2consul, um diese Konfiguration bei der Aktualisierung in die Umgebung zu übertragen.
Wenn Sie eine App haben, die erwartet, dass die Konfiguration als Konfigurationsdatei verfügbar ist, können Sie vermeiden, dass mehrere Kopien der Konfigurationsdatei mit der App versendet werden, indem Sie einen Bereitstellungsprozess mit so etwas wie einer Konsul-Vorlage erstellen, die die Möglichkeit bietet, Ihre Konfiguration zu ändern consul-Werte zurück in eine Datei.