Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Ib txoj hauv kev IaC (Infrastructure li Code) tsis yog tsuas yog cov cai uas khaws cia hauv lub chaw cia khoom, tab sis kuj yog cov neeg thiab cov txheej txheem uas nyob ib puag ncig cov cai no. Puas yog nws muaj peev xwm rov siv dua los ntawm kev txhim kho software mus rau kev tswj hwm vaj tse thiab kev piav qhia? Nws yuav yog ib lub tswv yim zoo kom khaws lub tswv yim no hauv siab thaum koj nyeem tsab xov xwm.

English version

Qhov no yog ib daim ntawv teev npe ntawm kuv kev ua yeeb yam rau DevopsConf 2019-05-28.

Slides thiab videos

Infrastructure li bash keeb kwm

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Piv txwv tias koj tuaj rau qhov project tshiab, thiab lawv hais rau koj: β€œpeb muaj Infrastructure li Code". Hauv kev muaj tiag nws hloov tawm Infrastructure li bash keeb kwm los yog piv txwv Cov ntaub ntawv raws li keeb kwm bash. Qhov no yog qhov xwm txheej tiag tiag, piv txwv li, ib qho xwm txheej zoo sib xws tau piav qhia los ntawm Denis Lysenko hauv kev hais lus Yuav ua li cas hloov tag nrho cov infrastructure thiab pib pw tsaug zog, nws hais li cas lawv tau txais kev sib koom ua ke rau qhov project los ntawm keeb kwm bash.

Nrog qee qhov kev ntshaw, peb tuaj yeem hais qhov ntawd Infrastructure li bash keeb kwm qhov no yog li code:

  1. kev yug dua tshiab: Koj tuaj yeem nqa keeb kwm bash, khiav cov lus txib los ntawm qhov ntawd, thiab koj tuaj yeem, los ntawm txoj kev, tau txais kev teeb tsa ua haujlwm raws li qhov tso tawm.
  2. versioning: koj paub leej twg tuaj thiab lawv tau ua dab tsi, dua, nws tsis yog qhov tseeb tias qhov no yuav coj koj mus rau kev teeb tsa ua haujlwm ntawm qhov tawm.
  3. keeb kwm: zaj dab neeg ntawm leej twg ua dab tsi. tsuas yog koj yuav tsis tuaj yeem siv nws yog tias koj poob lub server.

Kuv yuav ua li cas?

Infrastructure li Code

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Txawm li cas los txawv txawv li Infrastructure li bash keeb kwm koj tuaj yeem rub nws los ntawm pob ntseg Infrastructure li Code, tab sis thaum peb xav ua ib yam dab tsi nyuaj dua li qhov zoo qub LAMP server, peb yuav los xaus tias cov cai no yuav tsum tau hloov kho, hloov pauv, txhim kho. Tom ntej no peb xav xav txog cov parallels ntawm Infrastructure li Code thiab kev txhim kho software.

DRY

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Ntawm qhov kev tsim kho qhov system cia, muaj ib qho haujlwm ua haujlwm ib ntus configure SDS: peb tab tom tso tawm tshiab - nws yuav tsum tau muab dov tawm rau kev sim ntxiv. Txoj haujlwm yog qhov yooj yim heev:

  • nkag rau hauv no ntawm ssh thiab ua tiav cov lus txib.
  • luam cov ntaub ntawv ntawd.
  • kho qhov config ntawm no.
  • pib qhov kev pabcuam ntawd
  • ...
  • TSWV YIM!

Rau cov lus piav qhia, bash yog ntau tshaj qhov txaus, tshwj xeeb tshaj yog nyob rau theem pib ntawm qhov project, thaum nws nyuam qhuav pib. Qhov no nws tsis phem uas koj siv bash, tab sis dhau sij hawm muaj kev thov kom xa tej yam zoo sib xws, tab sis txawv me ntsis. Thawj qhov uas los rau hauv siab yog luam-paste. Thiab tam sim no peb twb muaj ob tsab ntawv zoo sib xws uas yuav luag zoo ib yam. Sij hawm dhau mus, tus lej ntawm cov ntawv loj tuaj, thiab peb tau ntsib nrog qhov tseeb tias muaj qee yam kev lag luam logic rau kev siv lub installation uas yuav tsum tau synchronized ntawm cov ntawv sib txawv, qhov no yog qhov nyuaj heev.

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Nws hloov tawm tias muaj kev xyaum zoo li DRY (Tsis Txhob Rov Ua Koj Tus Kheej). Lub tswv yim yog rov siv cov cai uas twb muaj lawm. Nws suab yooj yim, tab sis peb tsis tuaj rau qhov no tam sim ntawd. Nyob rau hauv peb cov ntaub ntawv, nws yog ib lub tswv yim banal: cais configs los ntawm scripts. Cov. lag luam logic ntawm yuav ua li cas lub installation yog deployed nyias, configs nyias.

SOLID rau CFM

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Thaum lub sij hawm qhov project loj hlob thiab natural continuation yog qhov tshwm sim ntawm Ansible. Lub ntsiab yog vim li cas rau nws cov tsos yog hais tias muaj kev txawj ntse ntawm pab neeg thiab bash tsis yog tsim rau complex logic. Ansible kuj pib muaj cov logic nyuaj. Txhawm rau tiv thaiv tsis yooj yim logic los ntawm kev hloov mus rau hauv chaos, muaj cov hauv paus ntsiab lus rau kev teeb tsa cov cai hauv kev txhim kho software SOLID Tsis tas li ntawd, piv txwv li, Grigory Petrov hauv tsab ntawv tshaj tawm "Vim li cas tus kws tshaj lij IT xav tau lub npe ntawm tus kheej" tau tsa cov lus nug uas tus neeg tau tsim los ntawm txoj hauv kev uas nws yooj yim dua rau kev khiav lag luam nrog qee lub koom haum hauv zej zog, hauv kev txhim kho software. yog khoom. Yog tias peb muab ob lub tswv yim no thiab txuas ntxiv txhim kho lawv, peb yuav pom tias peb tuaj yeem siv tau SOLID ua kom yooj yim rau kev tswj hwm thiab hloov kho qhov kev xav no yav tom ntej.

Lub Luag Haujlwm Ib Leeg

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Txhua chav kawm tsuas ua ib txoj haujlwm xwb.

Tsis tas yuav sib xyaw cov cai thiab ua monolithic divine spaghetti monsters. Lub infrastructure yuav tsum muaj cov cib yooj yim. Nws hloov tawm tias yog tias koj faib Ansible playbook rau hauv me me, nyeem Ansible lub luag haujlwm, ces lawv yooj yim dua los tswj.

Txoj Cai Qhib Kaw

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Qhib/kaw txoj cai.

  • Qhib rau txuas ntxiv: txhais tau hais tias tus cwj pwm ntawm ib lub koom haum tuaj yeem txuas ntxiv los ntawm kev tsim cov chaw tshiab.
  • Kaw rau kev hloov pauv: Raws li kev nthuav dav ntawm tus cwj pwm ntawm ib lub koom haum, yuav tsum tsis txhob hloov pauv rau cov cai uas siv cov koom haum no.

Thaum xub thawj, peb tau xa cov qauv kev sim ntawm cov tshuab virtual, tab sis vim qhov tseeb tias kev lag luam logic ntawm kev xa tawm yog cais los ntawm kev siv, peb ntxiv dov tawm mus rau baremetall yam tsis muaj teeb meem.

Liskov hloov txoj cai

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Barbara Liskov txoj cai hloov pauv. cov khoom nyob rau hauv ib qho kev pab cuam yuav tsum tau hloov nrog piv txwv ntawm lawv cov subtypes yam tsis tau hloov qhov kev ua kom raug ntawm qhov kev pab cuam

Yog tias koj saib nws ntau dua, nws tsis yog qhov tshwj xeeb ntawm ib qho haujlwm tshwj xeeb uas tuaj yeem siv rau ntawd SOLID, nws yog feem ntau hais txog CFM, piv txwv li, ntawm lwm qhov project nws yog ib qho tsim nyog yuav tsum xa ib lub thawv Java daim ntawv thov nyob rau sab saum toj ntawm ntau yam Java, daim ntawv thov servers, databases, OS, thiab lwm yam. Siv qhov piv txwv no, kuv yuav xav txog cov hauv paus ntsiab lus ntxiv SOLID

Nyob rau hauv peb cov ntaub ntawv, muaj kev pom zoo nyob rau hauv lub infrastructure pab neeg uas yog hais tias peb tau nruab lub imbjava los yog oraclejava lub luag hauj lwm, ces peb muaj ib tug java binary executable. Qhov no yog qhov tsim nyog vim Upstream lub luag hauj lwm nyob ntawm tus cwj pwm no; lawv xav tias java. Nyob rau tib lub sijhawm, qhov no tso cai rau peb los hloov ib qho kev siv java / version nrog rau lwm yam yam tsis hloov daim ntawv thov kev xa tawm logic.

Qhov teeb meem ntawm no yog nyob rau hauv qhov tseeb hais tias nws yog tsis yooj yim sua kom siv tau qhov no nyob rau hauv Ansible, vim hais tias ntawm ib co kev pom zoo tshwm sim nyob rau hauv pab neeg.

Lub ntsiab cai ntawm kev sib cais ntawm Interface

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Interface cais txoj cai: "Muaj ntau tus neeg siv khoom tshwj xeeb cuam tshuam zoo dua li ib lub hom phiaj dav dav.

Thaum pib, peb tau sim muab tag nrho cov kev hloov pauv ntawm daim ntawv thov xa mus rau hauv Ansible playbook, tab sis nws nyuaj rau kev txhawb nqa, thiab txoj hauv kev thaum peb muaj kev sib txuas sab nraud (tus neeg siv xav tau chaw nres nkoj 443), tom qab ntawd cov txheej txheem tuaj yeem sib sau los ntawm tus kheej. bricks rau ib qho kev siv tshwj xeeb.

Txoj Cai Dependency Inversion

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Lub hauv paus ntsiab lus ntawm dependency inversion. Modules ntawm qib siab yuav tsum tsis txhob nyob ntawm cov modules ntawm qib qis. Ob hom ntawm modules yuav tsum nyob ntawm abstractions. Abstractions yuav tsum tsis txhob nyob ntawm cov ntsiab lus. Cov ntsiab lus yuav tsum yog nyob ntawm abstractions.

Ntawm no tus piv txwv yuav yog raws li ib tug antipattern.

  1. Ib tug ntawm cov neeg muas zaub tau ib tug private huab.
  2. Peb xaj cov tshuab virtual hauv huab.
  3. Tab sis vim qhov xwm txheej ntawm huab, daim ntawv thov xa tawm tau khi rau qhov twg hypervisor lub VM tau nyob.

Cov. High-theem daim ntawv thov xa cov logic ntws nrog dependencies mus rau theem qis ntawm hypervisor, thiab qhov no txhais tau tias muaj teeb meem thaum rov siv cov logic no. Tsis txhob ua li no.

sis

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Infrastructure li code tsis yog tsuas yog hais txog code, tab sis kuj hais txog kev sib raug zoo ntawm code thiab tib neeg, txog kev sib cuam tshuam ntawm infrastructure developers.

Bus factor

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Cia peb xav tias koj muaj Vasya ntawm koj qhov project. Vasya paub txhua yam txog koj cov vaj tse, yuav ua li cas yog Vasya dheev ploj mus? Qhov no yog qhov xwm txheej tiag tiag, vim nws tuaj yeem raug tsheb npav. Qee zaum nws tshwm sim. Yog tias qhov no tshwm sim thiab kev paub txog cov cai, nws cov qauv, nws ua haujlwm li cas, qhov tshwm sim thiab cov passwords tsis raug faib rau hauv pab pawg, ces koj yuav ntsib ntau qhov xwm txheej tsis zoo. Txhawm rau txo cov kev pheej hmoo no thiab faib kev paub hauv pab pawg, koj tuaj yeem siv ntau txoj hauv kev

Pair Devopsing

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Nws tsis zoo li raws li kev tso dag, tias admins haus npias, hloov passwords, thiab ib qho analogue ntawm khub programming. Cov. ob tug engineers zaum ntawm ib lub computer, ib lub keyboard thiab pib teeb tsa koj cov infrastructure ua ke: teeb tsa lub server, sau lub luag haujlwm Ansible, thiab lwm yam. Nws suab zoo, tab sis nws tsis ua haujlwm rau peb. Tab sis tshwj xeeb ntawm qhov kev coj ua no tau ua haujlwm. Ib tus neeg ua haujlwm tshiab tuaj, nws tus kws cob qhia yuav ua haujlwm tiag tiag nrog nws, ua haujlwm thiab hloov kev paub.

Lwm qhov tshwj xeeb yog qhov xwm txheej hu. Thaum muaj teeb meem, ib pab pawg ntawm cov neeg ua haujlwm thiab cov neeg koom nrog sib sau ua ke, ib tus thawj coj raug xaiv, uas qhia nws lub vijtsam thiab hais lub tsheb ciav hlau ntawm kev xav. Lwm tus neeg koom ua raws li tus thawj coj txoj kev xav, soj ntsuam ntawm kev dag ntxias los ntawm lub console, xyuas tias lawv tsis tau plam ib txoj kab hauv lub cav, thiab kawm txog yam tshiab ntawm lub kaw lus. Txoj kev no tau ua haujlwm ntau dua li tsis tau.

Saib Xyuas Cai

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Subjectively, nws tau zoo dua los tshaj tawm kev paub txog kev tsim kho vaj tse thiab nws ua haujlwm li cas siv kev tshuaj xyuas cov cai:

  • Infrastructure yog piav qhia los ntawm code nyob rau hauv lub repository.
  • Kev hloov pauv tshwm sim hauv ib ceg.
  • Thaum thov kev sib koom ua ke, koj tuaj yeem pom cov delta ntawm kev hloov pauv hauv cov txheej txheem.

Qhov tseem ceeb ntawm no yog tias cov neeg tshuaj xyuas tau xaiv ib qho los ntawm ib qho, raws li lub sijhawm teem tseg, piv txwv li. nrog qee qhov kev tshwm sim koj yuav nce mus rau hauv ib qho tshiab ntawm cov txheej txheem.

code style

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Thaum lub sij hawm, squabbles pib tshwm thaum lub sij hawm xyuas, vim hais tias ... Cov neeg tshuaj xyuas muaj lawv tus kheej style thiab kev sib hloov ntawm cov neeg tshuaj xyuas tau muab lawv sib txawv: 2 qhov chaw lossis 4, camelCase lossis snake_case. Nws tsis tuaj yeem ua qhov no tam sim ntawd.

  • Thawj lub tswv yim yog xav kom siv linter, tom qab tag nrho, txhua leej txhua tus yog engineer, txhua leej txhua tus yog ntse. Tab sis txawv editors, OS, tsis yooj yim
  • Qhov no tau hloov zuj zus mus rau hauv ib lub bot uas tau sau rau slack rau txhua qhov teeb meem ua txhaum cai thiab txuas cov khoom tso tawm. Tab sis feem ntau muaj ntau yam tseem ceeb uas yuav tsum tau ua thiab cov cai tseem tsis tau kho.

Green Build Master

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Lub sij hawm dhau mus, thiab peb tau los txog qhov kev txiav txim siab uas tsis dhau qee qhov kev xeem tsis tuaj yeem tso cai rau tus tswv. Voila! Peb tau tsim Green Build Master, uas tau xyaum hauv kev txhim kho software rau lub sijhawm ntev:

  • Txoj kev loj hlob tab tom ua hauv ib ceg.
  • Cov kev ntsuam xyuas tau khiav ntawm kab lus no.
  • Yog tias qhov kev xeem tsis ua tiav, tus lej yuav tsis ua rau tus tswv.

Qhov kev txiav txim siab no mob heev, vim ... ua rau muaj kev sib cav ntau, tab sis nws tsim nyog nws, vim ... Kev tshuaj xyuas pib tau txais kev thov rau kev sib koom ua ke yam tsis muaj qhov sib txawv ntawm cov qauv, thiab lub sijhawm dhau los ntawm cov chaw teeb meem pib txo qis.

Kev xeem IaC

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Ntxiv nrog rau kev txheeb xyuas cov qauv, koj tuaj yeem siv lwm yam, piv txwv li, los xyuas tias koj qhov kev tsim kho tuaj yeem siv tau. Lossis xyuas tias kev hloov pauv hauv cov txheej txheem yuav tsis ua rau poob nyiaj. Vim li cas qhov no yuav xav tau? Cov lus nug yog complex thiab philosophical, nws yog zoo dua los teb nrog ib zaj dab neeg hais tias cas muaj ib tug auto-scaler ntawm Powershell uas tsis tau xyuas cov ciam teb tej yam kev mob => ntau VMs tau tsim ntau tshaj qhov tsim nyog => tus neeg siv nyiaj ntau dua li kev npaj. Qhov no tsis yog qhov qab ntxiag heev, tab sis nws yuav ua tau heev kom ntes tau qhov kev ua yuam kev ntawm theem ua ntej.

Ib tug yuav nug, yog vim li cas ua complex infrastructure txawm complex? Kev ntsuam xyuas rau kev tsim kho vaj tse, ib yam li cov cai, tsis yog hais txog kev ua kom yooj yim, tab sis hais txog kev paub txog tias koj cov infrastructure yuav tsum ua haujlwm li cas.

IaC Test Pyramid

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Kev Ntsuas IaC: Kev Ntsuam Xyuas Static

Yog tias koj xa tag nrho cov txheej txheem ib zaug thiab xyuas tias nws ua haujlwm, koj yuav pom tias nws siv sijhawm ntau thiab yuav tsum tau siv sijhawm ntau. Yog li ntawd, lub hauv paus yuav tsum yog ib yam dab tsi uas ua haujlwm sai, muaj ntau ntawm nws, thiab nws npog ntau qhov chaw qub.

Bash yog dag

Cia peb saib ib qho piv txwv tsis tseem ceeb. xaiv tag nrho cov ntaub ntawv hauv cov npe tam sim no thiab luam mus rau lwm qhov chaw. Thawj yam uas los rau hauv siab:

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

Yuav ua li cas yog tias muaj qhov chaw nyob hauv cov ntaub ntawv npe? Zoo, ok, peb ntse, peb paub siv cov lus hais:

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

Ua tau zoo? Tsis muaj! Yuav ua li cas yog tias tsis muaj dab tsi hauv phau ntawv qhia, i.e. globbing yuav tsis ua haujlwm.

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

Ua tau zoo tam sim no? Tsis yog... Tsis nco qab dab tsi tuaj yeem ua rau hauv cov ntaub ntawv npe n.

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

Cov cuab yeej tsom xam zoo li qub

Qhov teeb meem los ntawm cov kauj ruam dhau los tuaj yeem raug ntes tau thaum peb tsis nco qab cov lus hais, rau qhov no muaj ntau yam kev kho mob Shellcheck, feem ntau muaj ntau ntawm lawv, thiab feem ntau koj tuaj yeem nrhiav tau ib lub linter rau koj pawg hauv qab koj IDE.

lus
Tool

bash
Shellcheck

Ruby
RuboCop

nab hab sej
pylint

teb tau
Ansible Lint

IaC Test: Chav ntsuas

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Raws li peb tau pom los ntawm qhov piv txwv yav dhau los, linters tsis yog omnipotent thiab tsis tuaj yeem taw qhia txhua qhov teeb meem. Tsis tas li ntawd, los ntawm kev sib piv nrog kev sim hauv kev txhim kho software, peb tuaj yeem rov qab tau cov kev sim ntsuas. Qhov tam sim ntawd los rau hauv siab yog shunt, junit, rspec ua, pytest. Tab sis yuav ua li cas nrog ansible, kws ua zaub mov, saltstack thiab lwm tus nyiam lawv?

Thaum pib peb tham txog SOLID thiab tias peb cov infrastructure yuav tsum muaj cov cib me me. Lawv lub sijhawm twb los lawm.

  1. Cov txheej txheem tau muab faib ua cov cib me me, piv txwv li, Ansible lub luag haujlwm.
  2. Qee qhov chaw ib puag ncig raug xa mus, yog nws docker lossis VM.
  3. Peb siv peb lub luag haujlwm Ansible rau qhov chaw sim no.
  4. Peb xyuas tias txhua yam ua haujlwm raws li peb xav tau (peb khiav kev xeem).
  5. Peb txiav txim siab ok los tsis ok.

Kev Ntsuas IaC: Cov cuab yeej ntsuas ntsuas

Lo lus nug, qhov kev sim rau CFM yog dab tsi? Koj tuaj yeem khiav cov ntawv yooj yim, lossis koj tuaj yeem siv cov kev daws teeb meem npaj rau qhov no:

CFM
Tool

Ua tau zoo
Testinfra

lub taub hau
Tshuaj Ntsuas

lub taub hau
Serverspec

ntsev
Hais Kwv Txhiaj

Piv txwv li testinfra, xyuas cov neeg siv test1, test2 muaj nyob thiab nyob hauv ib pab pawg 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

Yuav xaiv dab tsi? Cov lus nug yog qhov nyuaj thiab tsis meej, ntawm no yog ib qho piv txwv ntawm kev hloov pauv hauv cov haujlwm ntawm github rau 2018-2019:

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

IaC Test Frameworks

Cov lus nug tshwm sim: yuav ua li cas muab tag nrho ua ke thiab tso tawm? Ua tau coj nws thiab ua koj tus kheej yog tias muaj ntau tus engineers txaus. Lossis koj tuaj yeem npaj cov kev daws teeb meem, txawm tias tsis muaj ntau ntawm lawv:

CFM
Tool

Ua tau zoo
molecule

lub taub hau
Chav ua mov

Terraform
Terrateest

Piv txwv ntawm kev hloov pauv hauv cov haujlwm ntawm github rau 2018-2019:

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Molecule vs. Chav ua noj

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Thaum xub thawj peb sim siv testkitchen:

  1. Tsim VM nyob rau hauv parallel.
  2. Siv cov luag haujlwm Ansible.
  3. Khiav kev tshuaj xyuas.

Rau 25-35 lub luag haujlwm nws ua haujlwm 40-70 feeb, uas yog ntev.

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Cov kauj ruam tom ntej yog kev hloov mus rau jenkins/docker/ansible/molecule. Idiologically txhua yam yog tib yam

  1. Lint playbooks.
  2. Kab ua haujlwm.
  3. Tua lub thawv
  4. Siv cov luag haujlwm Ansible.
  5. Khiav testinfra.
  6. Tshawb xyuas idempotency.

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Linting rau 40 lub luag haujlwm thiab kev sim rau lub kaum os pib siv sijhawm li 15 feeb.

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Yuav xaiv dab tsi nyob ntawm ntau yam, xws li pawg siv, kev txawj ntse hauv pab pawg, thiab lwm yam. ntawm no txhua tus txiav txim siab rau lawv tus kheej yuav ua li cas kaw cov lus nug ntawm Chav Tsev

Kev xeem IaC: Kev xeem sib xyaw

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Cov kauj ruam tom ntej hauv kev sim kev tsim vaj tsev pyramid yuav yog kev sib koom ua ke. Lawv zoo ib yam li Unit Tests:

  1. Cov vaj tse tau muab faib ua cov cib me me, piv txwv li Ansible lub luag haujlwm.
  2. Qee qhov chaw ib puag ncig raug xa mus, yog nws docker lossis VM.
  3. Rau qhov kev xeem no siv tau coob leej Cov luag haujlwm tsis txaus ntseeg.
  4. Peb xyuas tias txhua yam ua haujlwm raws li peb xav tau (peb khiav kev xeem).
  5. Peb txiav txim siab ok los tsis ok.

Hais lus kwv yees, peb tsis kuaj xyuas qhov ua tau zoo ntawm ib tus neeg lub cev ntawm lub cev xws li hauv kev sim ntsuas, peb xyuas seb lub server tau teeb tsa li cas.

Kev xeem IaC: Xaus rau Kev Xeem Kawg

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Nyob rau sab saum toj ntawm lub pyramid peb tau txais tos los ntawm End to End xeem. Cov. Peb tsis kuaj xyuas qhov ua tau zoo ntawm cov neeg rau zaub mov sib cais, cov ntawv cais, lossis ib qho cib cais ntawm peb cov txheej txheem. Peb xyuas tias ntau lub servers txuas nrog ua ke, peb cov txheej txheem ua haujlwm raws li peb xav kom nws. Hmoov tsis zoo, kuv tsis tau pom cov kev daws teeb meem npaj txhij, tej zaum vim ... Cov txheej txheem feem ntau yog tshwj xeeb thiab nyuaj rau cov qauv thiab tsim lub hauv paus rau kev sim. Yog li ntawd, txhua tus tsim lawv tus kheej cov kev daws teeb meem. Muaj kev thov, tab sis tsis muaj lus teb. Yog li ntawd, kuv mam li qhia rau koj paub tias muaj dab tsi thiaj li yuav thawb lwm tus mus rau lub suab xav lossis rub kuv lub qhov ntswg ntawm qhov tseeb tias txhua yam tau tsim los ntev dhau los ua ntej peb.

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Ib qhov project nrog keeb kwm nplua nuj. Nws yog siv nyob rau hauv cov koom haum loj thiab tej zaum txhua tus ntawm koj tau indirectly hla txoj kev nrog nws. Daim ntawv thov txhawb ntau databases, kev koom ua ke, thiab lwm yam. Paub txog qhov kev tsim kho vaj tse yuav zoo li cas yog ntau cov ntaub ntawv docker-compose, thiab paub txog qhov kev xeem twg los khiav hauv qhov chaw twg yog Jenkins.

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Cov txheej txheem no tau ua haujlwm ntev heev, mus txog rau hauv lub moj khaum kev tshawb fawb peb tsis tau sim hloov qhov no mus rau Openshift. Cov thawv ntim tau zoo ib yam, tab sis qhov chaw tso tawm tau hloov pauv (nyob zoo DRY dua).

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Lub tswv yim tshawb fawb tau mus ntxiv, thiab hauv openshift lawv pom ib yam li APB (Ansible Playbook Bundle), uas tso cai rau koj ntim cov kev paub txog kev siv cov txheej txheem rau hauv lub thawv. Cov. muaj ib qho kev rov ua tau, sim ntsuas qhov kev paub txog yuav ua li cas siv cov txheej txheem.

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Tag nrho cov no tau zoo mus txog thaum peb tau khiav mus rau hauv cov txheej txheem sib txawv: peb xav tau Windows rau kev sim. Yog li ntawd, kev paub txog dab tsi, qhov twg, yuav siv li cas, thiab kev sim yog nyob rau hauv jenkins.

xaus

Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code

Infrastructure li Code yog

  • Code nyob rau hauv lub repository.
  • Tib neeg kev sib raug zoo.
  • Kev ntsuam xyuas kev tsim kho vaj tse.

mus

Tau qhov twg los: www.hab.com

Ntxiv ib saib