Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Approċċ IaC (Infrastructure as Code) tikkonsisti mhux biss mill-kodiċi li huwa maħżun fir-repożitorju, iżda wkoll min-nies u l-proċessi li jdawru dan il-kodiċi. Huwa possibbli li jerġgħu jintużaw approċċi mill-iżvilupp tas-softwer għall-ġestjoni u d-deskrizzjoni tal-infrastruttura? Tkun idea tajba li żżomm din l-idea f'moħħok waqt li taqra l-artiklu.

Verżjoni Maltija

Din hija traskrizzjoni tiegħi wirjiet fuq DevopsConf 2019-05-28.

Slajds u vidjows

Infrastruttura bħala storja bash

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Ejja ngħidu li tasal għal proġett ġdid, u jgħidulek: “għandna Infrastruttura bħala Kodiċi". Fir-realtà jirriżulta Infrastruttura bħala storja bash jew per eżempju Dokumentazzjoni bħala storja bash. Din hija sitwazzjoni reali ħafna, pereżempju, każ simili kien deskritt minn Denis Lysenko f'diskors Kif tissostitwixxi l-infrastruttura kollha u tibda torqod sew, huwa qal kif kisbu infrastruttura koerenti għall-proġett mill-istorja bash.

B’xi xewqa, nistgħu ngħidu hekk Infrastruttura bħala storja bash dan huwa bħal kodiċi:

  1. riproduċibbiltà: Tista' tieħu l-istorja tal-bash, tmexxi l-kmandi minn hemm, u tista', bil-mod, tikseb konfigurazzjoni ta' ħidma bħala output.
  2. verżjonijiet: taf min daħal u x'għamlu, għal darb'oħra, mhuwiex fatt li dan iwassalk għal konfigurazzjoni ta 'ħidma fil-ħruġ.
  3. istorja: l-istorja ta' min għamel xiex. biss int ma tkunx tista' tużah jekk titlef is-server.

X'għandek tagħmel?

Infrastruttura bħala Kodiċi

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Anke każ stramba bħal Infrastruttura bħala storja bash tista 'tiġbedha mill-widnejn Infrastruttura bħala Kodiċi, Imma meta rridu nagħmlu xi ħaġa aktar ikkumplikata mis-server LAMP antik tajjeb, se naslu għall-konklużjoni li dan il-kodiċi jeħtieġ li b'xi mod jiġi modifikat, mibdul, imtejjeb. Sussegwentement nixtiequ nikkunsidraw il-paralleli bejn Infrastruttura bħala Kodiċi u żvilupp ta' softwer.

D.R.Y.

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Fuq proġett ta 'żvilupp ta' sistema ta 'ħażna, kien hemm subtask perjodikament kkonfigurat SDS: qed noħorġu ħarġa ġdida - jeħtieġ li titnieda għal aktar ttestjar. Il-kompitu huwa estremament sempliċi:

  • idħol hawn permezz ssh u tesegwixxi l-kmand.
  • kopja l-fajl hemmhekk.
  • tikkoreġi l-konfigurazzjoni hawn.
  • tibda s-servizz hemmhekk
  • ...
  • QLIGĦ!

Għal-loġika deskritta, bash huwa aktar minn biżżejjed, speċjalment fl-istadji bikrija tal-proġett, meta għadu qed jibda. Dan mhux ħażin li tuża bash, iżda maż-żmien hemm talbiet biex tiġi skjerata xi ħaġa simili, iżda kemmxejn differenti. L-ewwel ħaġa li tiġi f'moħħna hija copy-paste. U issa diġà għandna żewġ skripts simili ħafna li jagħmlu kważi l-istess ħaġa. Maż-żmien, in-numru ta 'skripts kiber, u konna ffaċċjati bil-fatt li hemm ċerta loġika tan-negozju għall-iskjerament ta' installazzjoni li jeħtieġ li tkun sinkronizzata bejn skripts differenti, dan huwa pjuttost ikkumplikat.

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Jirriżulta li hemm prattika bħal D.R.Y. (Trepetix lilek innifsek). L-idea hija li terġa' tuża l-kodiċi eżistenti. Jidher sempliċi, iżda ma wasalniex għal dan mill-ewwel. Fil-każ tagħna, kienet idea banali: li tissepara l-konfigurazzjonijiet mill-iskripts. Dawk. loġika tan-negozju ta 'kif l-installazzjoni hija skjerata separatament, konfigurazzjonijiet separatament.

S.O.L.I.D. għal CFM

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Maż-żmien il-proġett kiber u kontinwazzjoni naturali kien l-emerġenza ta 'Ansible. Ir-raġuni ewlenija għad-dehra tagħha hija li hemm kompetenza fit-tim u li bash mhux iddisinjat għal loġika kumplessa. Ansible wkoll beda jkun fih loġika kumplessa. Biex tevita li l-loġika kumplessa tinbidel f'kaos, hemm prinċipji għall-organizzazzjoni tal-kodiċi fl-iżvilupp tas-softwer S.O.L.I.D. Ukoll, pereżempju, Grigory Petrov fir-rapport "Għaliex speċjalista tal-IT għandu bżonn marka personali" qajjem il-mistoqsija li persuna hija mfassla b'tali mod li jkun aktar faċli għalih li jopera ma 'xi entitajiet soċjali, fl-iżvilupp tas-softwer dawn huma oġġetti. Jekk ngħaqqdu dawn iż-żewġ ideat u nkomplu niżviluppawhom, nindunaw li nistgħu nużaw ukoll S.O.L.I.D. biex ikun aktar faċli li tinżamm u tiġi mmodifikata din il-loġika fil-futur.

Il-Prinċipju ta' Responsabbiltà Unika

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Kull klassi twettaq kompitu wieħed biss.

M'hemmx għalfejn tħallat il-kodiċi u tagħmel monsters tal-ispagetti divini monolitiċi. L-infrastruttura għandha tikkonsisti minn briks sempliċi. Jirriżulta li jekk taqsam il-playbook Ansible f'biċċiet żgħar, aqra rwoli Ansible, allura huma aktar faċli biex jinżammu.

Il-Prinċipju Miftuħ Magħluq

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Prinċipju miftuħ/magħluq.

  • Miftuħ għall-estensjoni: ifisser li l-imġieba ta' entità tista' tiġi estiża billi jinħolqu tipi ġodda ta' entità.
  • Magħluq għall-bidla: Bħala riżultat tal-estensjoni tal-imġiba ta' entità, m'għandu jsir l-ebda tibdil fil-kodiċi li juża dawk l-entitajiet.

Inizjalment, aħna skjerati l-infrastruttura tat-test fuq magni virtwali, iżda minħabba l-fatt li l-loġika tan-negozju ta 'skjerament kienet separata mill-implimentazzjoni, aħna żidna rolling out għal baremetall mingħajr problemi.

Il-Prinċipju ta' Sostituzzjoni ta' Liskov

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Il-prinċipju tas-sostituzzjoni ta’ Barbara Liskov. oġġetti fi programm għandhom ikunu sostitwibbli b'istanzi tas-sottotipi tagħhom mingħajr ma tinbidel l-eżekuzzjoni korretta tal-programm

Jekk tħares lejha b'mod aktar wiesa ', mhijiex karatteristika ta' xi proġett partikolari li jista 'jiġi applikat hemmhekk S.O.L.I.D., ġeneralment huwa dwar CFM, pereżempju, fuq proġett ieħor huwa meħtieġ li tiskjera applikazzjoni Java f'kaxxa fuq diversi Java, servers ta 'applikazzjoni, databases, OS, eċċ. Billi nuża dan l-eżempju, se nikkunsidra aktar prinċipji S.O.L.I.D.

Fil-każ tagħna, hemm ftehim fi ħdan it-tim tal-infrastruttura li jekk installajna r-rwol imbjava jew oraclejava, allura għandna eżekutibbli binarju java. Dan huwa meħtieġ għaliex Rwoli upstream jiddependu fuq din l-imġieba; jistennew java. Fl-istess ħin, dan jippermettilna nissostitwixxu implimentazzjoni/verżjoni java waħda b'oħra mingħajr ma nibdlu l-loġika tal-iskjerament tal-applikazzjoni.

Il-problema hawnhekk tinsab fil-fatt li huwa impossibbli li dan jiġi implimentat f'Ansible, li b'riżultat tiegħu jidhru xi ftehimiet fi ħdan it-tim.

Il-Prinċipju tas-Segregazzjoni tal-Interface

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Prinċipju tas-separazzjoni tal-interface: "Ħafna interfaces speċifiċi għall-klijent huma aħjar minn interface wieħed għal skopijiet ġenerali.

Inizjalment, ippruvajna npoġġu l-varjabbiltà kollha tal-iskjerament tal-applikazzjoni f'playbook wieħed Ansible, iżda kien diffiċli li nappoġġjaw, u l-approċċ meta jkollna interface estern speċifikat (il-klijent jistenna l-port 443), allura infrastruttura tista 'tiġi mmuntata minn individwali briks għal implimentazzjoni speċifika.

Il-Prinċipju tal-Inverżjoni tad-Dipendenza

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Il-prinċipju tal-inverżjoni tad-dipendenza. Moduli f'livelli ogħla m'għandhomx jiddependu fuq moduli f'livelli aktar baxxi. Iż-żewġ tipi ta 'moduli għandhom jiddependu fuq astrazzjonijiet. L-astrazzjonijiet m'għandhomx jiddependu fuq id-dettalji. Id-dettalji għandhom jiddependu fuq l-astrazzjonijiet.

Hawnhekk l-eżempju se jkun ibbażat fuq antipattern.

  1. Wieħed mill-klijenti kellu sħab privat.
  2. Ordnajna magni virtwali ġewwa s-sħaba.
  3. Iżda minħabba n-natura tas-sħab, l-iskjerament tal-applikazzjoni kien marbut ma' liema hypervisor kien fuq il-VM.

Dawk. Il-loġika tal-iskjerament tal-applikazzjoni ta 'livell għoli waslet b'dipendenzi għal livelli aktar baxxi tal-hypervisor, u dan fisser problemi meta terġa' tintuża din il-loġika. M'għandekx tagħmel dan il-mod.

Interazzjoni

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

L-infrastruttura bħala kodiċi mhix biss dwar il-kodiċi, iżda wkoll dwar ir-relazzjoni bejn il-kodiċi u n-nies, dwar l-interazzjonijiet bejn l-iżviluppaturi tal-infrastruttura.

Fattur tax-xarabank

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Ejja nassumu li għandek Vasya fuq il-proġett tiegħek. Vasya jaf kollox dwar l-infrastruttura tiegħek, x'se jiġri jekk Vasya tisparixxi f'daqqa? Din hija sitwazzjoni reali ħafna, għax jista’ jintlaqat minn xarabank. Xi drabi jiġri. Jekk jiġri dan u l-għarfien dwar il-kodiċi, l-istruttura tiegħu, kif jaħdem, id-dehriet u l-passwords ma jitqassmux fost it-tim, allura tista 'tiltaqa' ma 'numru ta' sitwazzjonijiet spjaċevoli. Biex timminimizza dawn ir-riskji u tqassam l-għarfien fi ħdan it-tim, tista 'tuża diversi approċċi

Par Devopsing

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Mhuwiex simili bħala ċajta, li l-amministraturi xorbu birra, bidlu l-passwords, u analogu ta 'programmazzjoni ta' par. Dawk. żewġ inġiniera joqogħdu bilqegħda fuq kompjuter wieħed, tastiera waħda u jibdew iwaqqfu l-infrastruttura tiegħek flimkien: iwaqqfu server, jiktbu rwol Ansible, eċċ. Jidher sabiħ, imma ma ħadmitx għalina. Iżda każijiet speċjali ta 'din il-prattika ħadmu. Jiġi impjegat ġdid, il-parrinu tiegħu jieħu biċċa xogħol reali flimkien miegħu, jaħdem u jittrasferixxi l-għarfien.

Każ speċjali ieħor huwa sejħa għall-inċident. Waqt problema, jinġabar grupp ta’ dawk li jkunu qed jaħdmu u dawk involuti, jinħatar mexxej wieħed, li jaqsam l-iskrin tiegħu u jsemm il-linja tal-ħsieb. Parteċipanti oħra jsegwu l-ħsibijiet tal-mexxej, jispy tricks mill-console, jiċċekkjaw li ma tilfux linja fil-log, u jitgħallmu affarijiet ġodda dwar is-sistema. Dan l-approċċ ħadem aktar spiss milli le.

Reviżjoni tal-Kodiċi

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Suġġettivament, kien aktar effettiv li xxerred l-għarfien dwar l-infrastruttura u kif taħdem bl-użu tar-reviżjoni tal-kodiċi:

  • L-infrastruttura hija deskritta bil-kodiċi fir-repożitorju.
  • Il-bidliet iseħħu f'fergħa separata.
  • Waqt talba għall-għaqda, tista' tara d-delta tal-bidliet fl-infrastruttura.

Il-qofol hawn kien li r-reviżuri ntgħażlu wieħed wieħed, skont skeda, i.e. b'ċertu grad ta' probabbiltà inti titla' f'biċċa infrastruttura ġdida.

Stil tal-Kodiċi

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Maż-żmien, squabbles bdew jidhru waqt reviżjonijiet, għaliex... reviżuri kellhom l-istil tagħhom stess u r-rotazzjoni tar-reviżuri f'munzelli bi stili differenti: 2 spazji jew 4, camelCase jew snake_case. Ma kienx possibbli li dan jiġi implimentat mill-ewwel.

  • L-ewwel idea kienet li tirrakkomanda l-użu ta 'linter, wara kollox, kulħadd huwa inġinier, kulħadd huwa intelliġenti. Iżda edituri differenti, OS, mhumiex konvenjenti
  • Dan evolva f'bot li kiteb għal slack għal kull impenn problematiku u mehmuż l-output tal-linter. Iżda fil-biċċa l-kbira tal-każijiet kien hemm affarijiet aktar importanti x'jagħmlu u l-kodiċi baqa' mhux iffissat.

Green Build Master

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Iż-żmien jgħaddi, u wasalna għall-konklużjoni li impenji li ma jgħaddux minn ċerti testijiet ma jistgħux jitħallew fil-kaptan. Voila! Ivvintajna Green Build Master, li ilu pprattikat fl-iżvilupp tas-softwer għal żmien twil:

  • L-iżvilupp għaddej f'fergħa separata.
  • It-testijiet qed isiru fuq dan il-ħajt.
  • Jekk it-testijiet ifallu, il-kodiċi ma jidħolx fil-kaptan.

It-teħid ta’ din id-deċiżjoni kien ta’ wġigħ kbir, għax... ikkawża ħafna kontroversja, iżda kien worth it, għax... Ir-reviżjonijiet bdew jirċievu talbiet għal amalgamazzjonijiet mingħajr differenzi fl-istil, u maż-żmien in-numru ta 'oqsma problematiċi beda jonqos.

Ittestjar IaC

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Minbarra l-iċċekkjar tal-istil, tista 'tuża affarijiet oħra, pereżempju, biex tivverifika li l-infrastruttura tiegħek tista' fil-fatt tuża. Jew iċċekkja li l-bidliet fl-infrastruttura mhux se jwasslu għal telf ta 'flus. Għaliex dan jista 'jkun meħtieġ? Il-mistoqsija hija kumplessa u filosofika, huwa aħjar li twieġeb bi storja li b'xi mod kien hemm auto-scaler fuq Powershell li ma ċċekkjax il-kundizzjonijiet tal-konfini => inħolqu aktar VMs milli meħtieġ => il-klijent nefaq aktar flus milli ppjanat. Dan mhux pjaċevoli ħafna, iżda jkun pjuttost possibbli li jinqabad dan l-iżball fi stadji preċedenti.

Wieħed jista' jistaqsi, għaliex tagħmel l-infrastruttura kumplessa saħansitra aktar kumplessa? It-testijiet għall-infrastruttura, l-istess bħal għall-kodiċi, mhumiex dwar is-simplifikazzjoni, iżda dwar li tkun taf kif għandha taħdem l-infrastruttura tiegħek.

IaC Ittestjar Piramida

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Ittestjar IaC: Analiżi Statika

Jekk tuża l-infrastruttura kollha f'daqqa u tiċċekkja li taħdem, tista' ssib li tieħu ħafna ħin u teħtieġ ħafna ħin. Għalhekk, il-bażi għandha tkun xi ħaġa li taħdem malajr, hemm ħafna minnha, u tkopri ħafna postijiet primittivi.

Bash huwa delikat

Ejja nħarsu lejn eżempju trivjali. agħżel il-fajls kollha fid-direttorju attwali u kkopja f'post ieħor. L-ewwel ħaġa li tiġi f'moħħna:

for i in * ; do 
    cp $i /some/path/$i.bak
done

X'jiġri jekk hemm spazju fl-isem tal-fajl? Ukoll, ok, aħna intelliġenti, nafu kif nużaw il-kwotazzjonijiet:

for i in * ; do cp "$i" "/some/path/$i.bak" ; done

Proset? Le! X'jiġri jekk ma jkun hemm xejn fid-direttorju, i.e. globbing mhux se jaħdem.

find . -type f -exec mv -v {} dst/{}.bak ;

Tajjeb issa? No... Insejt x'jista' jkun fl-isem tal-fajl n.

touch x
mv x  "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir

Għodod ta 'analiżi statika

Il-problema mill-pass preċedenti tista 'tinqabad meta nsejna l-kwotazzjonijiet, għal dan hemm ħafna rimedji fin-natura Shellcheck, B'mod ġenerali hemm ħafna minnhom, u x'aktarx tista 'ssib linter għall-munzell tiegħek taħt l-IDE tiegħek.

lingwa
Tool

bash
Shellcheck

Ruby
RuboCop

python
pilint

ansibbli
Ansible Lint

Testjar IaC: Testijiet tal-Unità

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Kif rajna mill-eżempju preċedenti, linters mhumiex omnipotenti u ma jistgħux jindikaw l-oqsma problematiċi kollha. Barra minn hekk, b'analoġija mal-ittestjar fl-iżvilupp tas-softwer, nistgħu nfakkru testijiet tal-unità. Dak li jiġi f’moħħi mill-ewwel hu shunit, junit, rspec, pytest. Imma x'għandek tagħmel ma 'ansible, chef, saltstack u oħrajn bħalhom?

Fil-bidu nett tkellimna dwarhom S.O.L.I.D. u li l-infrastruttura tagħna għandha tikkonsisti fi briks żgħar. Wasal iż-żmien tagħhom.

  1. L-infrastruttura hija maqsuma fi briks żgħar, per eżempju, rwoli Ansible.
  2. Xi tip ta 'ambjent huwa skjerat, kemm jekk docker jew VM.
  3. Aħna napplikaw ir-rwol tagħna Ansible għal dan l-ambjent tat-test.
  4. Aħna niċċekkjaw li kollox ħadem kif stennejna (nagħmlu testijiet).
  5. Niddeċiedu ok jew le ok.

IaC Testing: Għodod għall-Ittestjar tal-Unità

Mistoqsija, x'inhuma t-testijiet għal CFM? Tista 'sempliċement tmexxi l-iskrittura, jew tista' tuża soluzzjonijiet lesti għal dan:

CFM
Tool

Ansible
Testinfra

Chef
Spezzjoni

Chef
Serverspec

melħ
Goss

Eżempju għal testinfra, verifika li l-utenti test1, test2 jeżistu u qegħdin fi grupp 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

X'għandek tagħżel? Il-mistoqsija hija kumplessa u ambigwa, hawn eżempju ta 'bidliet fil-proġetti fuq github għall-2018-2019:

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Oqfsa tal-Ittestjar tal-IaC

Tqum il-mistoqsija: kif tpoġġiha kollha flimkien u tniediha? Can ħuha u agħmel it yourself jekk hemm numru suffiċjenti ta 'inġiniera. Jew tista 'tieħu soluzzjonijiet lesti, għalkemm ma tantx hemm ħafna minnhom:

CFM
Tool

Ansible
Molekula

Chef
Kċina tat-Test

Terraform
Terratest

Eżempju ta' bidliet fil-proġetti fuq github għall-2018-2019:

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Molekula vs. Testkitchen

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Inizjalment aħna ippruvajt tuża testkitchen:

  1. Oħloq VM b'mod parallel.
  2. Applika rwoli Ansible.
  3. Mexxi l-ispezzjoni.

Għal rwoli 25-35 ħadem 40-70 minuta, li kien twil.

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Il-pass li jmiss kien it-tranżizzjoni għal jenkins/docker/ansible/molecule. Idjoloġikament kollox huwa l-istess

  1. Lint playbooks.
  2. Allinja r-rwoli.
  3. Tnedija tal-kontenitur
  4. Applika rwoli Ansible.
  5. Mexxi testinfra.
  6. Iċċekkja l-idempotenza.

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Linting għal 40 rwol u testijiet għal tużżana bdew jieħdu madwar 15-il minuta.

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

X'għandek tagħżel jiddependi fuq ħafna fatturi, bħall-munzell użat, il-kompetenza fit-tim, eċċ. hawn kulħadd jiddeċiedi waħdu kif jagħlaq il-mistoqsija dwar l-Unit testing

Ittestjar IaC: Testijiet ta 'Integrazzjoni

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Il-pass li jmiss fil-piramida tal-ittestjar tal-infrastruttura se jkun it-testijiet tal-integrazzjoni. Huma simili għal testijiet tal-Unità:

  1. L-infrastruttura hija maqsuma fi briks żgħar, pereżempju rwoli Ansible.
  2. Xi tip ta 'ambjent huwa skjerat, kemm jekk docker jew VM.
  3. Għal dan l-ambjent tat-test japplikaw Sett ta ' Rwoli Ansible.
  4. Aħna niċċekkjaw li kollox ħadem kif stennejna (nagħmlu testijiet).
  5. Niddeċiedu ok jew le ok.

Bejn wieħed u ieħor, aħna ma niċċekkjawx il-prestazzjoni ta 'element individwali tas-sistema bħal fit-testijiet tal-unità, aħna niċċekkjaw kif is-server huwa kkonfigurat kollu kemm hu.

Testjar IaC: Testijiet minn tarf sa tarf

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Fil-quċċata tal-piramida aħna milqugħa minn testijiet End to End. Dawk. Aħna ma niċċekkjawx il-prestazzjoni ta 'server separat, skript separat, jew briks separat tal-infrastruttura tagħna. Aħna niċċekkjaw li ħafna servers konnessi flimkien, l-infrastruttura tagħna taħdem kif nistennewha. Sfortunatament, qatt ma rajt soluzzjonijiet fil-kaxxa lesti, probabbilment għax... L-infrastruttura ħafna drabi hija unika u diffiċli biex titfassal u toħloq qafas għall-ittestjar. Bħala riżultat, kulħadd joħloq is-soluzzjonijiet tiegħu. Hemm domanda, iżda m'hemm l-ebda risposta. Għalhekk, ngħidilkom x’hemm sabiex nimbotta lil ħaddieħor biex iħoss ħsibijiet jew togħrok imnieħri fil-fatt li kollox kien ivvintat ħafna ilu qabel magħna.

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Proġett bi storja rikka. Jintuża f'organizzazzjonijiet kbar u probabbilment kull wieħed minnkom qasmu magħha indirettament. L-applikazzjoni tappoġġja ħafna databases, integrazzjonijiet, eċċ. Li tkun taf kif tista' tidher l-infrastruttura hija ħafna fajls ta 'docker-compose, u li tkun taf liema testijiet għandhom isiru f'liema ambjent huwa Jenkins.

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Din l-iskema ħadmet għal żmien pjuttost twil, sa fi ħdan il-qafas riċerka ma ppruvajniex nittrasferixxu dan lil Openshift. Il-kontenituri jibqgħu l-istess, iżda l-ambjent tat-tnedija nbidel (bonjour D.R.Y. mill-ġdid).

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

L-idea tar-riċerka marret lil hinn, u fl-openshift sabu ħaġa bħal APB (Ansible Playbook Bundle), li tippermettilek tippakkja għarfien dwar kif tuża l-infrastruttura f'kontenitur. Dawk. hemm punt ta' għarfien li jista' jiġi ripetut u li jista' jiġi ttestjat dwar kif tintuża l-infrastruttura.

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Dan kollu kien jinstema’ tajjeb sakemm ilqajna ma’ infrastruttura eteroġenja: kellna bżonn Windows għat-testijiet. Bħala riżultat, l-għarfien ta 'x'inhu, fejn, kif jiġi skjerat, u t-test huwa f'jenkins.

konklużjoni

Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura

Infrastruttura kif Kodiċi hija

  • Kodiċi fir-repożitorju.
  • Interazzjoni umana.
  • Ittestjar tal-infrastruttura.

rabtiet

Sors: www.habr.com

Żid kumment