Ko es uzzinÄju, pÄrbaudot 200 000 infrastruktÅ«ras koda lÄ«niju
Pieeja IaC (InfrastruktÅ«ra kÄ kods) sastÄv ne tikai no koda, kas tiek glabÄts repozitorijÄ, bet arÄ« no cilvÄkiem un procesiem, kas ieskauj Å”o kodu. Vai ir iespÄjams atkÄrtoti izmantot pieejas no programmatÅ«ras izstrÄdes lÄ«dz infrastruktÅ«ras pÄrvaldÄ«bai un aprakstam? BÅ«tu laba ideja paturÄt Å”o domu prÄtÄ, lasot rakstu.
PieÅemsim, ka jÅ«s nonÄkat pie jauna projekta, un viÅi jums saka: āMums ir InfrastruktÅ«ra kÄ kods". RealitÄtÄ izrÄdÄs InfrastruktÅ«ra kÄ bash vÄsture vai piemÄram DokumentÄcija kÄ bash vÄsture. TÄ ir ļoti reÄla situÄcija, piemÄram, lÄ«dzÄ«gu gadÄ«jumu savÄ runÄ aprakstÄ«ja Deniss Lisenko KÄ nomainÄ«t visu infrastruktÅ«ru un sÄkt mierÄ«gi gulÄt, viÅÅ” pastÄstÄ«ja, kÄ viÅi ieguva saskaÅotu infrastruktÅ«ru projektam no bash history.
Ar zinÄmu vÄlmi mÄs to varam teikt InfrastruktÅ«ra kÄ bash vÄsture tas ir kÄ kods:
reproducÄjamÄ«ba: Varat Åemt bash vÄsturi, palaist komandas no turienes, un, starp citu, kÄ izvadi var iegÅ«t darba konfigurÄciju.
versiju veidoÅ”ana: jÅ«s zinÄt, kas ieradÄs un ko viÅi darÄ«ja, atkal nav fakts, ka tas novedÄ«s pie darba konfigurÄcijas pie izejas.
stÄsts: stÄsts par to, kurÅ” ko izdarÄ«ja. tikai jÅ«s to nevarÄsit izmantot, ja pazaudÄsit serveri.
Ko darīt?
InfrastruktÅ«ra kÄ kods
Pat tÄds dÄ«vains gadÄ«jums kÄ InfrastruktÅ«ra kÄ bash vÄsture var vilkt aiz ausÄ«m InfrastruktÅ«ra kÄ kods, bet tad, kad gribÄsim izdarÄ«t ko sarežģītÄku par veco labo LAMP serveri, nonÄksim pie slÄdziena, ka Å”is kods ir kaut kÄ jÄpÄrveido, jÄmaina, jÄuzlabo. TÄlÄk mÄs vÄlÄtos apsvÄrt paralÄles starp InfrastruktÅ«ra kÄ kods un programmatÅ«ras izstrÄde.
D.R.Y.
UzglabÄÅ”anas sistÄmas izstrÄdes projektÄ bija apakÅ”uzdevums periodiski konfigurÄjiet SDS: mÄs izlaižam jaunu laidienu ā tas ir jÄizlaiž turpmÄkai pÄrbaudei. Uzdevums ir ÄrkÄrtÄ«gi vienkÄrÅ”s:
piesakieties Ŕeit, izmantojot ssh, un izpildiet komandu.
kopÄjiet failu tur.
labojiet konfigurÄciju Å”eit.
sÄkt pakalpojumu tur
...
IENÄKUMS!
AprakstÄ«tajai loÄ£ikai ar bash ir vairÄk nekÄ pietiekami, it Ä«paÅ”i projekta sÄkuma stadijÄ, kad tas tikai sÄkas. Å is nav slikti, ka lieto bash, taÄu laika gaitÄ parÄdÄs pieprasÄ«jumi izvietot kaut ko lÄ«dzÄ«gu, bet nedaudz atŔķirÄ«gu. PirmÄ lieta, kas nÄk prÄtÄ, ir copy-paste. Un tagad mums jau ir divi ļoti lÄ«dzÄ«gi skripti, kas veic gandrÄ«z vienu un to paÅ”u. Laika gaitÄ skriptu skaits pieauga, un mÄs saskÄrÄmies ar faktu, ka instalÄcijas izvietoÅ”anai ir noteikta biznesa loÄ£ika, kas jÄsinhronizÄ starp dažÄdiem skriptiem, tas ir diezgan sarežģīti.
IzrÄdÄs, ka ir tÄda prakse kÄ D.R.Y. (NeatkÄrtojiet sevi). Ideja ir atkÄrtoti izmantot esoÅ”o kodu. Tas izklausÄs vienkÄrÅ”i, bet mÄs to nenonÄcÄm uzreiz. MÅ«su gadÄ«jumÄ tÄ bija banÄla ideja: atdalÄ«t konfigurÄcijas no skriptiem. Tie. biznesa loÄ£ika par to, kÄ instalÄcija tiek izvietota atseviŔķi, konfigurÄcijas atseviŔķi.
CIETS. par CFM
Laika gaitÄ projekts pieauga un dabisks turpinÄjums bija Ansible parÄdÄ«Å”anÄs. Galvenais tÄs parÄdÄ«Å”anÄs iemesls ir tas, ka komandai ir zinÄÅ”anas un ka bash nav paredzÄts sarežģītai loÄ£ikai. Ansible sÄka ietvert arÄ« sarežģītu loÄ£iku. Lai sarežģīta loÄ£ika nepÄrvÄrstos haosÄ, programmatÅ«ras izstrÄdÄ ir izstrÄdÄti koda organizÄÅ”anas principi CIETS. TÄpat, piemÄram, Grigorijs Petrovs referÄtÄ āKÄpÄc IT speciÄlistam vajadzÄ«gs personÄ«gais zÄ«molsā izvirzÄ«ja jautÄjumu, ka cilvÄks ir veidots tÄ, lai viÅam bÅ«tu vieglÄk operÄt ar kÄdÄm sociÄlÄm vienÄ«bÄm, programmatÅ«ras izstrÄdÄ Å”Ä«s ir objekti. Ja Ŕīs divas idejas apvienosim un turpinÄsim tÄs attÄ«stÄ«t, pamanÄ«sim, ka varam arÄ« izmantot CIETS. lai turpmÄk bÅ«tu vieglÄk uzturÄt un modificÄt Å”o loÄ£iku.
VienotÄs atbildÄ«bas princips
Katra klase veic tikai vienu uzdevumu.
Nav nepiecieÅ”ams jaukt kodu un veidot monolÄ«tus dieviŔķus spageti monstrus. InfrastruktÅ«rai vajadzÄtu sastÄvÄt no vienkÄrÅ”iem Ä·ieÄ£eļiem. IzrÄdÄs, ja Ansible rotaļu grÄmatu sadala mazos gabaliÅos, izlasa Ansible lomas, tad tÄs ir vieglÄk uzturÄt.
AtvÄrtais slÄgtais princips
AtvÄrts/slÄgts princips.
AtvÄrts paplaÅ”inÄÅ”anai: nozÄ«mÄ, ka entÄ«tijas darbÄ«bu var paplaÅ”inÄt, izveidojot jaunus entÄ«tiju veidus.
SlÄgts izmaiÅÄm: entÄ«tijas darbÄ«bas paplaÅ”inÄÅ”anas rezultÄtÄ nevajadzÄtu veikt nekÄdas izmaiÅas kodÄ, kas izmanto Ŕīs entÄ«tijas.
SÄkotnÄji mÄs izvietojÄm testa infrastruktÅ«ru virtuÄlajÄs maŔīnÄs, taÄu, tÄ kÄ izvietoÅ”anas biznesa loÄ£ika bija noŔķirta no ievieÅ”anas, mÄs bez problÄmÄm pievienojÄm izvÄrÅ”anu baremetall.
Liskova aizstÄÅ”anas princips
Barbaras Liskovas aizstÄÅ”anas princips. objektiem programmÄ jÄbÅ«t aizvietojamiem ar to apakÅ”tipu gadÄ«jumiem, nemainot pareizu programmas izpildi
Ja skatÄs plaÅ”Äk, tad tÄ nav neviena konkrÄta projekta iezÄ«me, ko tur varÄtu pielietot CIETS., tas parasti ir par CFM, piemÄram, citÄ projektÄ ir nepiecieÅ”ams izvietot kastÄ ievietotu Java lietojumprogrammu virs dažÄdÄm Java, lietojumprogrammu serveriem, datu bÄzÄm, OS utt. Izmantojot Å”o piemÄru, es apsvÄrÅ”u turpmÄkos principus CIETS.
MÅ«su gadÄ«jumÄ infrastruktÅ«ras komandÄ ir vienoÅ”anÄs, ka, ja esam instalÄjuÅ”i imbjava vai oraclejava lomu, tad mums ir java binÄrais izpildÄmais fails. Tas ir nepiecieÅ”ams, jo IepriekÅ”ÄjÄs lomas ir atkarÄ«gas no Ŕīs uzvedÄ«bas; viÅi sagaida Java. TajÄ paÅ”Ä laikÄ tas ļauj aizstÄt vienu Java ievieÅ”anu/versiju ar citu, nemainot lietojumprogrammas izvietoÅ”anas loÄ£iku.
ProblÄma Å”eit slÄpjas apstÄklÄ«, ka Ansible to nav iespÄjams realizÄt, kÄ rezultÄtÄ komandas iekÅ”ienÄ rodas kaut kÄdas vienoÅ”anÄs.
Interfeisa segregÄcijas princips
Interfeisa atdalÄ«Å”anas princips: āDaudzas klientam specifiskas saskarnes ir labÄkas nekÄ viena vispÄrÄja pielietojuma saskarne.
SÄkotnÄji mÄÄ£inÄjÄm visu lietojumprogrammu izvietoÅ”anas mainÄ«gumu salikt vienÄ Ansible rokasgrÄmatÄ, taÄu to bija grÅ«ti atbalstÄ«t, un pieeja, kad mums ir norÄdÄ«ts ÄrÄjais interfeiss (klients sagaida portu 443), tad infrastruktÅ«ru var salikt no individuÄlajÄm Ä·ieÄ£eļi konkrÄtai Ä«stenoÅ”anai.
Atkarības inversijas princips
AtkarÄ«bas inversijas princips. AugstÄkÄ lÄ«meÅa moduļiem nevajadzÄtu bÅ«t atkarÄ«giem no zemÄka lÄ«meÅa moduļiem. Abiem moduļu veidiem jÄbÅ«t atkarÄ«giem no abstrakcijÄm. AbstrakcijÄm nevajadzÄtu bÅ«t atkarÄ«gÄm no detaļÄm. Detaļai jÄbÅ«t atkarÄ«gai no abstrakcijÄm.
TaÄu mÄkoÅa rakstura dÄļ lietojumprogrammu izvietoÅ”ana bija saistÄ«ta ar to, kurÅ” hipervizors bija ieslÄgts virtuÄlajÄ maŔīnÄ.
Tie. Augsta lÄ«meÅa lietojumprogrammu izvietoÅ”anas loÄ£ika plÅ«da ar atkarÄ«bÄm uz zemÄkiem hipervizora lÄ«meÅiem, un tas nozÄ«mÄja problÄmas, atkÄrtoti izmantojot Å”o loÄ£iku. Nedariet to Å”ÄdÄ veidÄ.
Mijiedarbība
InfrastruktÅ«ra kÄ kods ir ne tikai kods, bet arÄ« attiecÄ«bas starp kodu un cilvÄkiem, mijiedarbÄ«ba starp infrastruktÅ«ras izstrÄdÄtÄjiem.
Autobusu faktors
PieÅemsim, ka jÅ«su projektÄ ir Vasja. Vasja zina visu par jÅ«su infrastruktÅ«ru, kas notiks, ja Vasja pÄkÅ”Åi pazudÄ«s? TÄ ir ļoti reÄla situÄcija, jo viÅu var notriekti autobuss. Dažreiz tas notiek. Ja tÄ notiek un zinÄÅ”anas par kodu, tÄ struktÅ«ru, kÄ tas darbojas, izskatu un parolÄm netiek izplatÄ«tas starp komandu, tad var rasties vairÄkas nepatÄ«kamas situÄcijas. Lai samazinÄtu Å”os riskus un izplatÄ«tu zinÄÅ”anas komandÄ, varat izmantot dažÄdas pieejas
PÄris Devopsing
Tas nav kÄ kÄ joks, ka admini dzÄra alu, mainÄ«ja paroles un pÄru programmÄÅ”anas analogu. Tie. divi inženieri apsÄžas pie viena datora, vienas tastatÅ«ras un kopÄ sÄk izveidot infrastruktÅ«ru: izveidot serveri, rakstÄ«t Ansible lomu utt. IzklausÄs jauki, bet mums tas nederÄja. TaÄu Ŕīs prakses Ä«paÅ”ie gadÄ«jumi darbojÄs. AtnÄk jauns darbinieks, viÅa mentors kopÄ ar viÅu uzÅemas reÄlu uzdevumu, strÄdÄ un nodod zinÄÅ”anas.
VÄl viens Ä«paÅ”s gadÄ«jums ir incidenta izsaukums. ProblÄmas laikÄ tiek savÄkta dežurÄtÄju un iesaistÄ«to grupa, tiek iecelts viens vadÄ«tÄjs, kurÅ” dalÄs ar savu ekrÄnu un izsaka domu gÄjienu. Citi dalÄ«bnieki seko lÄ«dera domÄm, izspiego konsoles trikus, pÄrbauda, āāvai nav palaiduÅ”i garÄm nevienu rindiÅu žurnÄlÄ, un uzzina jaunas lietas par sistÄmu. Å Ä« pieeja darbojÄs biežÄk nekÄ nÄ.
Kodu pÄrskatÄ«Å”ana
SubjektÄ«vi bija efektÄ«vÄk izplatÄ«t zinÄÅ”anas par infrastruktÅ«ru un tÄs darbÄ«bu, izmantojot kodu pÄrskatÄ«Å”anu:
InfrastruktÅ«ra ir aprakstÄ«ta ar kodu repozitorijÄ.
Å eit galvenais bija tas, ka recenzentus atlasÄ«ja pa vienam, pÄc grafika, t.i. ar zinÄmu varbÅ«tÄ«bas pakÄpi jÅ«s iekÄpsiet jaunÄ infrastruktÅ«ras daļÄ.
Koda stils
Ar laiku apskatu laikÄ sÄka parÄdÄ«ties Ä·ildas, jo... recenzentiem bija savs stils, un recenzentu rotÄcija tos kÄrtoja ar dažÄdiem stiliem: 2 atstarpes vai 4, camelCase vai snake_case. To nebija iespÄjams Ä«stenot uzreiz.
PirmÄ doma bija ieteikt izmantot linteri, galu galÄ visi ir inženieri, visi ir gudri. Bet dažÄdi redaktori, OS, nav Ärti
Tas attÄ«stÄ«jÄs par robotprogrammu, kas rakstÄ«ja, lai katras problemÄtiskÄs darbÄ«bas gadÄ«jumÄ atslÄbtu, un pievienoja lintera izvadi. TaÄu vairumÄ gadÄ«jumu bija daudz svarÄ«gÄkas lietas, ko darÄ«t, un kods palika nelabots.
ZaļÄs celtniecÄ«bas meistars
Laiks iet, un mÄs esam nonÄkuÅ”i pie secinÄjuma, ka saistÄ«bas, kas neiztur noteiktus pÄrbaudÄ«jumus, nevar ielaist meistarÄ. Voila! MÄs izgudrojÄm Green Build Master, kas programmatÅ«ras izstrÄdÄ tiek praktizÄts jau ilgu laiku:
AtseviÅ”Ä·Ä filiÄlÄ notiek izstrÄde.
Å ajÄ pavedienÄ tiek veikti testi.
Ja testi neizdodas, kods nenonÄks galvenajÄ versijÄ.
Å Ä« lÄmuma pieÅemÅ”ana bija ļoti sÄpÄ«ga, jo... izraisÄ«ja daudz strÄ«du, bet tas bija tÄ vÄrts, jo... Atsauksmes sÄka saÅemt apvienoÅ”anÄs pieprasÄ«jumus bez stila atŔķirÄ«bÄm, un laika gaitÄ problemÄtisko jomu skaits sÄka samazinÄties.
IaC testÄÅ”ana
Papildus stila pÄrbaudei varat izmantot arÄ« citas lietas, piemÄram, lai pÄrbaudÄ«tu, vai jÅ«su infrastruktÅ«ra patieÅ”Äm var tikt izvietota. Vai arÄ« pÄrbaudiet, vai infrastruktÅ«ras izmaiÅas neradÄ«s naudas zaudÄjumus. KÄpÄc tas varÄtu bÅ«t vajadzÄ«gs? JautÄjums ir sarežģīts un filozofisks, labÄk atbildÄt ar stÄstu, ka Powershell kaut kÄ bija automÄtiskais mÄrogoÅ”anas lÄ«dzeklis, kas nepÄrbaudÄ«ja robežnosacÄ«jumus => tika izveidots vairÄk VM nekÄ nepiecieÅ”ams => klients iztÄrÄja vairÄk naudas nekÄ plÄnots. Tas nav Ä«paÅ”i patÄ«kami, taÄu bÅ«tu pilnÄ«gi iespÄjams pieÄ·ert Å”o kļūdu agrÄkos posmos.
VarÄtu jautÄt, kÄpÄc sarežģīto infrastruktÅ«ru padarÄ«t vÄl sarežģītÄku? InfrastruktÅ«ras pÄrbaudes, tÄpat kÄ kods, nav saistÄ«tas ar vienkÄrÅ”oÅ”anu, bet gan par to, kÄ zinÄt, kÄ jÅ«su infrastruktÅ«rai jÄdarbojas.
IaC testÄÅ”anas piramÄ«da
IaC testÄÅ”ana: statiskÄ analÄ«ze
Ja vienlaikus izvietojat visu infrastruktÅ«ru un pÄrbaudÄt, vai tÄ darbojas, iespÄjams, atklÄsiet, ka tas aizÅem daudz laika un prasa daudz laika. TÄpÄc pamatam ir jÄbÅ«t tÄdam, kas darbojas Ätri, to ir daudz, un tas aptver daudz primitÄ«vu vietu.
BaŔs ir viltīgs
ApskatÄ«sim triviÄlu piemÄru. atlasiet visus failus paÅ”reizÄjÄ direktorijÄ un kopÄjiet uz citu vietu. PirmÄ lieta, kas nÄk prÄtÄ:
for i in * ; do
cp $i /some/path/$i.bak
done
Ko darÄ«t, ja faila nosaukumÄ ir atstarpe? Nu, labi, mÄs esam gudri, mÄs zinÄm, kÄ izmantot pÄdiÅas:
for i in * ; do cp "$i" "/some/path/$i.bak" ; done
Labi padarÄ«ts? NÄ! Ko darÄ«t, ja direktorijÄ nekÄ nav, t.i. globÄÅ”ana nedarbosies.
find . -type f -exec mv -v {} dst/{}.bak ;
Tagad labi izdarÄ«ts? NÄ... Aizmirsu, kas var bÅ«t faila nosaukumÄ n.
touch x
mv x "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir
StatiskÄs analÄ«zes rÄ«ki
ProblÄma no iepriekÅ”ÄjÄ soļa varÄtu tikt pieÄ·erta, kad mÄs aizmirsÄm citÄtus, jo dabÄ ir daudz lÄ«dzekļu, lai to novÄrstu Shellcheck, kopumÄ to ir daudz, un, visticamÄk, zem sava IDE varat atrast lÄ«nijpÄrvadÄtÄju savai stekam.
KÄ redzÄjÄm no iepriekÅ”ÄjÄ piemÄra, lÄ«kumi nav visvareni un nevar norÄdÄ«t visas problÄmzonas. TurklÄt, pÄc analoÄ£ijas ar testÄÅ”anu programmatÅ«ras izstrÄdÄ, mÄs varam atsaukt atmiÅÄ vienÄ«bu testus. Kas uzreiz nÄk prÄtÄ, ir Å”unÄ«ts, junit, rspec, pytest. Bet ko darÄ«t ar ansible, chef, saltstack un citiem viÅiem lÄ«dzÄ«giem?
PaÅ”Ä sÄkumÄ mÄs runÄjÄm par CIETS. un ka mÅ«su infrastruktÅ«rai ir jÄsastÄv no maziem Ä·ieÄ£eļiem. ViÅu laiks ir pienÄcis.
InfrastruktÅ«ra ir sadalÄ«ta mazos Ä·ieÄ£eļos, piemÄram, Ansible lomas.
Ir izvietota sava veida vide, neatkarÄ«gi no tÄ, vai tÄ ir doka vai virtuÄlÄ maŔīna.
Å ajÄ testa vidÄ mÄs izmantojam savu Ansible lomu.
MÄs pÄrbaudÄm, vai viss strÄdÄja, kÄ mÄs gaidÄ«jÄm (mÄs veicam testus).
MÄs izlemjam labi vai nÄ.
IaC testÄÅ”ana: vienÄ«bu testÄÅ”anas rÄ«ki
JautÄjums, kÄdi ir CFM testi? Varat vienkÄrÅ”i palaist skriptu vai Å”im nolÅ«kam varat izmantot gatavus risinÄjumus:
PiemÄrs testinfra, pÄrbaudot, ka lietotÄji test1, test2 pastÄv un ir grupÄ sshusers:
def test_default_users(host):
users = ['test1', 'test2' ]
for login in users:
assert host.user(login).exists
assert 'sshusers' in host.user(login).groups
Ko izvÄlÄties? JautÄjums ir sarežģīts un neskaidrs, Å”eit ir piemÄrs izmaiÅÄm projektos github 2018.ā2019. gadam:
IaC testÄÅ”anas ietvari
Rodas jautÄjums: kÄ to visu apvienot un palaist? Var Åem un dari pats ja ir pietiekams skaits inženieru. Vai arÄ« varat izmantot gatavus risinÄjumus, lai gan to nav ļoti daudz:
25-35 lomÄm tas strÄdÄja 40-70 minÅ«tes, kas bija ilgi.
NÄkamais solis bija pÄreja uz jenkins/docker/ansible/molecule. IdioloÄ£iski viss ir vienÄds
Lint rotaļu grÄmatas.
SakÄrtojiet lomas.
Palaist konteineru
Izmantojiet Ansible lomas.
Palaist testinfra.
PÄrbaudiet idempotenci.
40 lomu pildÄ«Å”ana un duci pÄrbaudÄ«jumi sÄka aizÅemt apmÄram 15 minÅ«tes.
Tas, ko izvÄlÄties, ir atkarÄ«gs no daudziem faktoriem, piemÄram, izmantotÄ kaudzes, komandas pieredzes utt. Å”eit katrs pats izlemj, kÄ aizvÄrt vienÄ«bas pÄrbaudes jautÄjumu
IaC testÄÅ”ana: integrÄcijas testi
NÄkamais solis infrastruktÅ«ras testÄÅ”anas piramÄ«dÄ bÅ«s integrÄcijas testi. Tie ir lÄ«dzÄ«gi vienÄ«bas testiem:
InfrastruktÅ«ra ir sadalÄ«ta mazos Ä·ieÄ£eļos, piemÄram, Ansible lomas.
Ir izvietota sava veida vide, neatkarÄ«gi no tÄ, vai tÄ ir doka vai virtuÄlÄ maŔīna.
Uz Å”o testa vidi attiecas daudz IespÄjamÄs lomas.
MÄs pÄrbaudÄm, vai viss strÄdÄja, kÄ mÄs gaidÄ«jÄm (mÄs veicam testus).
MÄs izlemjam labi vai nÄ.
Aptuveni runÄjot, mÄs nepÄrbaudÄm atseviŔķa sistÄmas elementa veiktspÄju kÄ vienÄ«bu testos, mÄs pÄrbaudÄm, kÄ serveris ir konfigurÄts kopumÄ.
IaC testÄÅ”ana: testi no beigÄm lÄ«dz beigÄm
PiramÄ«das augÅ”pusÄ mÅ«s sagaida testi no gala lÄ«dz beigÄm. Tie. MÄs nepÄrbaudÄm atseviŔķa servera, atseviŔķa skripta vai atseviŔķas infrastruktÅ«ras elementa veiktspÄju. MÄs pÄrbaudÄm, vai daudzi serveri ir savienoti kopÄ, mÅ«su infrastruktÅ«ra darbojas tÄ, kÄ mÄs to sagaidÄm. DiemžÄl es nekad neesmu redzÄjis gatavus kastes risinÄjumus, iespÄjams, tÄpÄc... InfrastruktÅ«ra bieži ir unikÄla, un to ir grÅ«ti izveidot un izveidot testÄÅ”anas sistÄmu. RezultÄtÄ katrs rada savus risinÄjumus. PieprasÄ«jums ir, bet atbildes nav. TÄpÄc es jums pastÄstÄ«Å”u, kas ir, lai pamudinÄtu citus padomÄt vai ieberzÄtu degunu par to, ka viss ir izdomÄts jau sen pirms mums.
Projekts ar bagÄtu vÄsturi. To izmanto lielÄs organizÄcijÄs, un, iespÄjams, katrs no jums ir ar to netieÅ”i krustojuÅ”ies. Lietojumprogramma atbalsta daudzas datu bÄzes, integrÄcijas utt. Zinot, kÄ infrastruktÅ«ra varÄtu izskatÄ«ties, ir daudz docker-compose failu, un zinot, kurus testus palaist un kurÄ vidÄ ir Jenkins.
Å Ä« shÄma darbojÄs diezgan ilgu laiku, lÄ«dz ietvaros pÄtniecÄ«ba mÄs neesam mÄÄ£inÄjuÅ”i to pÄrsÅ«tÄ«t uz Openshift. Konteineri paliek tie paÅ”i, bet palaiÅ”anas vide ir mainÄ«jusies (labdien, D.R.Y. vÄlreiz).
PÄtÄ«juma ideja devÄs tÄlÄk, un Openshift viÅi atrada tÄdu lietu kÄ APB (Ansible Playbook Bundle), kas ļauj konteinerÄ apkopot zinÄÅ”anas par infrastruktÅ«ras izvietoÅ”anu. Tie. ir atkÄrtojams, pÄrbaudÄms zinÄÅ”anu punkts par infrastruktÅ«ras izvietoÅ”anu.
Tas viss izklausÄ«jÄs labi, lÄ«dz mÄs nokļuvÄm neviendabÄ«gÄ infrastruktÅ«rÄ: mums bija nepiecieÅ”ams Windows testiem. RezultÄtÄ zinÄÅ”anas par to, ko, kur, kÄ izvietot un pÄrbaudÄ«t, ir jenkins.