Konfigurazzjoni tal-varjabbli tal-ambjent
Werrej:
Sommarju
Kwistjoni
Irridu li l-applikazzjonijiet tagħna jkunu konfigurabbli lil hinn mill-artefatti/binaries/sors, b'tali mod li bini wieħed jista' jaġixxi b'mod differenti skont l-ambjent tad-deployment tiegħu.
Biex nilħqu dan, irridu nużaw konfigurazzjoni bil-varjabbli tal-ambjent.
Irridu nimmaniġġjaw il-konfigurazzjoni bl-użu ta' fajls li nistgħu nikkontrollaw il-verżjonijiet tagħhom.
Irridu nipprovdu xi ergonomija tal-esperjenza tal-iżviluppatur, bħal li wieħed ikun jaf x'jista' jiġi kkonfigurat u liema huma d-defaults rilevanti.
Deċiżjoni
Iddeċidejna fuq fajls .env b'fajl default relatat u fajl tal-iskema.
Stat
Deċiż. Miftuħin biex nikkunsidraw kapaċitajiet ġodda hekk kif jinqalgħu.
Dettalji
Suppożizzjonijiet
Nippreferu nifirdu l-kodiċi tal-applikazzjoni mill-kodiċi tal-ambjent. Nassumu li l-app teħtieġ taħdem b'mod differenti f'ambjenti differenti, bħal ambjent tal-iżvilupp, ambjent tat-test, ambjent tad-demo, ambjent tal-produzzjoni, eċċ.
Nippreferu l-prattika tal-industrija ta' "12 factor app" u saħansitra aktar il-prattika relatata ta' "15 factor app".
Ħafna mill-proġetti preċedenti tagħna użaw il-konvenzjoni ta' fajl .env jew direttorju simili .env. Hemm prattika tipika li dawn jinżammu barra mill-kontroll tal-verżjonijiet, u minflok jintuża mod ieħor biex jitqiegħdu, jiġu vverżjonati, u jiġu mmaniġġjati.
Restrizzjonijiet
Irridu nżommu s-sigrieti barra mis-sistema tal-kontroll tal-verżjonijiet (VCS) tal-ġestjoni tal-kodiċi sors (SCM) tagħna.
Irridu nimmiraw għall-kompatibbiltà ma' frameworks u librerijiet popolari tas-software. Pereżempju, Node għandu modulu "dotenv" biex jaqra l-konfigurazzjoni bil-varjabbli tal-ambjent.
Pożizzjonijiet
Ikkunsidrajna ftit approċċi:
Naħżnu l-konfigurazzjoni fl-app bħal f'fajl
config.js.Naħżnu l-konfigurazzjoni fl-ambjent bħal f'fajl
.env.Nirkupraw il-konfigurazzjoni minn post magħruf bħal server tal-liċenzji.
Argument
Għażilna l-approċċ ta' fajl .env għax:
Huwa popolari inkluż fost l-esperti.
Isegwi x-xejra ta' fajls
.envli t-timijiet tagħna użaw b'suċċess ħafna drabi f'ħafna proġetti.Huwa sempliċi. Notevolment, aħna tajbin għalissa mal-kompromessi sinifikanti li naraw, bħal nuqqas ta' kapaċitajiet ta' awditjar meta mqabbel ma' approċċ ta' server tal-liċenzji.
Implikazzjonijiet
Neħtieġu nsibu mod kif nifirdu l-konfigurazzjoni pubblika tal-varjabbli tal-ambjent mill-ġestjoni tas-sigrieti kollha.
Relatati
Deċiżjonijiet relatati
Nistennew li l-applikazzjonijiet tagħna kollha jużaw dan l-approċċ.
Se nippjanaw li naġġornaw kwalunkwe waħda mill-applikazzjonijiet tagħna li tuża approċċ inqas kapaċi, bħal hardcoding f'binary jew fil-kodiċi sors.
Se nħallu kif inhi kwalunkwe waħda mill-applikazzjonijiet tagħna li tuża approċċ aktar kapaċi, bħal server tal-liċenzjar.
Rekwiżiti relatati
Se nżidu kapaċitajiet devops għall-fajls, inklużi hooks, testijiet, u integrazzjoni kontinwa.
Neħtieġu nħarrġu lill-membri kollha tat-tim tal-iżvilupp dwar din id-deċiżjoni.
Artefatti relatati
Kull qasam fejn nagħmlu deployment se jeħtieġ il-fajl .env tiegħu stess u fajls relatati.
Prinċipji relatati
Faċilment riversibbli.
Noti
Fajl .env bħala eżempju:
NAME=Alice Anderson
EMAIL=alice@example.com
Fajl .env.defaults bħala eżempju:
NAME=Joe Doe
EMAIL=joe@example.com
Fajl .env.schema bħala eżempju bil-keys biss:
NAME
EMAIL