Kto powiedział, że pliki właściwości i zmienne środowiskowe wykluczają się wzajemnie?
Należy rozróżnić „gdzie mam zapisać konfigurację mojej aplikacji?” I „gdzie moja aplikacja źródło to konfiguracja?”
Najbardziej prawdopodobnym rezultatem jest to, że wszyscy prawdopodobnie powinni po prostu robić to, co robią z plikami konfiguracyjnymi jako mechanizmem przechowywania (pomyśl długoterminowo, stan trwały, dopóki istnieje środowisko).
Jednak zamiast upuszczać ten plik konfiguracyjny do kontekstu aplikacji i pozwalać na jego uruchomienie, aplikacja powinna oczekiwać, że te zmienne będą już dostępne w środowisku podczas uruchamiania.
Oznacza to, że musisz mieć dwa przepływy pracy wdrażania -
- Wdrażam aplikację w środowisku, przechodząc przez proces kontroli zmian X i robiąc recenzje Y za pomocą narzędzia Z, cokolwiek.
- Wdrażam swoją konfigurację środowiska w środowisku, przechodząc przez proces kontroli zmiany A i wykonując recenzje B za pomocą narzędzia C, ten sam proces, inny wynik.
Aby użyć przykładu zarządzania zmiennymi środowiskowymi jako parami wartości klucza w narzędziu takim jak konsul, jeśli przechowujesz pliki konfiguracyjne w git, to narzędzia takie jak git2consul z uchwytem pobierają tę konfigurację do środowiska, gdy jest aktualizowana.
Jeśli masz aplikację, która spodziewa się, że będzie dostępna konfiguracja jako plik konfiguracyjny, możesz uniknąć wysyłania wielu kopii pliku konfiguracyjnego z aplikacją, budując proces wdrażania z czymś takim jak konsul-szablon, który ma możliwość zmiany twojego konsul wartości z powrotem do pliku.