Indlela yokusondela IaC (Ingqalasizinda njengeKhodi) ayiqukethe kuphela ikhodi egcinwe endaweni yokugcina, kodwa futhi neyabantu nezinqubo ezizungeze le khodi. Kungenzeka yini ukuthi uphinde usebenzise izindlela kusukela ekuthuthukisweni kwesofthiwe kuya ekuphathweni kwengqalasizinda kanye nencazelo? Kungaba umqondo omuhle ukugcina lo mbono engqondweni ngenkathi ufunda isihloko.
Lokhu okulotshiweyo kwami
Amaslayidi namavidiyo
isiZulu version Inguqulo yesiRashiya - I-Dry run 2019-04-24
I-SpbLUG Ividiyo(RU) evela ku-DevopsConf 2019-05-28 Ividiyo(RU) evela ku-DINS DevOps EVENING 2019-06-20 futhi ama-Slides
Ingqalasizinda njengomlando we-bash
Ake sithi ufika kuphrojekthi entsha, bese bekutshela ukuthi: “Sikwenzile Ingqalasizinda njengeKhodi". Empeleni kuvela Ingqalasizinda njengomlando we-bash noma isibonelo Ukubhalwa njengomlando we-bash. Lesi yisimo sangempela, isibonelo, icala elifanayo lachazwa nguDenis Lysenko enkulumweni
Ngesifiso esithile, singasho lokho Ingqalasizinda njengomlando we-bash lokhu kufana nekhodi:
- ukukhiqiza kabusha: Ungathatha umlando we-bash, sebenzisa imiyalo kusukela lapho, futhi ungase, ngendlela, uthole ukucushwa okusebenzayo njengokuphumayo.
- ukwenza inguqulo: uyazi ukuthi ubani ongenile nokuthi benzeni, futhi, akulona iqiniso ukuthi lokhu kuzokuholela ekucushweni kokusebenza ekuphumeni.
- umlando: indaba yokuthi ubani wenzeni. kuphela ongeke ukwazi ukuyisebenzisa uma ulahlekelwa iseva.
Yini okufanele ngiyenze?
Ingqalasizinda njengeKhodi
Ngisho necala elingajwayelekile njenge Ingqalasizinda njengomlando we-bash ungayidonsa ngezindlebe Ingqalasizinda njengeKhodi, kodwa lapho sifuna ukwenza okuthile okuyinkimbinkimbi kuneseva enhle ye-LAMP endala, sizofika esiphethweni sokuthi le khodi idinga ukuguqulwa ngandlela-thile, ishintshwe, ithuthukiswe. Okulandelayo sithanda ukucabangela ukufana phakathi Ingqalasizinda njengeKhodi kanye nokuthuthukiswa kwesoftware.
YOMILE
Kuphrojekthi yokuthuthukisa isistimu yesitoreji, kube nomsebenzi omncane
- ngena lapha nge-ssh bese ukhipha umyalo.
- kopisha ifayela lapho.
- lungisa ukulungiselelwa lapha.
- qala inkonzo lapho
- ...
- INZUZO!
Ngomqondo ochaziwe, i-bash ingaphezu kokwanele, ikakhulukazi ezigabeni zokuqala zephrojekthi, lapho isanda kuqala. Lokhu
Kuvele ukuthi kukhona umkhuba onjengo-DRY (Ungaziphindaphindi). Umbono uwukusebenzisa kabusha ikhodi ekhona. Kuzwakala kulula, kodwa asizange size kulokhu ngokushesha. Esimweni sethu, bekungumbono ovinjelwe: ukuhlukanisa ama-configs kusuka kumaskripthi. Labo. umqondo webhizinisi wokuthi ukufakwa kusetshenziswa kanjani ngokuhlukene, kumiswa ngokwehlukana.
I-SOLID ye-CFM
Ngokuhamba kwesikhathi iphrojekthi yakhula futhi
Umgomo Wesibopho Esiwodwa
Ikilasi ngalinye lenza umsebenzi owodwa kuphela.
Asikho isidingo sokuxuba ikhodi futhi wenze izilo ze-spaghetti zaphezulu ze-monolithic. Ingqalasizinda kufanele ibe nezitini ezilula. Kuvela ukuthi uma uhlukanisa i-playbook Ansible ibe yizicucu ezincane, funda izindima ezifanelekile, khona-ke kulula ukuzinakekela.
Isimiso Esivuliwe Esivaliwe
Umgomo ovuliwe/ovaliwe.
- Vula kusandiso: kusho ukuthi ukuziphatha kwebhizinisi kunganwetshwa ngokudala izinhlobo ezintsha zebhizinisi.
- Kuvaliwe ekushintsheni: Njengomphumela wokwelula ukuziphatha kwebhizinisi, azikho izinguquko okufanele zenziwe kukhodi esebenzisa lezo zinhlangano.
Ekuqaleni, safaka ingqalasizinda yokuhlola emishinini ebonakalayo, kodwa ngenxa yokuthi umqondo webhizinisi wokuthunyelwa wawuhlukene nokuqaliswa, sengeze ukukhishwa ku-baremetall ngaphandle kwezinkinga.
I-Liskov Substitution Principle
Isimiso esikhundleni sikaBarbara Liskov. izinto ezikuhlelo kufanele zithathelwe indawo yizimo zezinhlobo zazo ezincanyana ngaphandle kokushintsha ukuqaliswa okulungile kohlelo.
Uma ubheka kabanzi, akusona isici sanoma iyiphi iphrojekthi ethile engasetshenziswa lapho OKUQINILE, ngokuvamile imayelana ne-CFM, isibonelo, kwenye iphrojekthi kuyadingeka ukuthi kusetshenziswe uhlelo lokusebenza lwe-Java olunebhokisi phezu kwe-Java ehlukahlukene, amaseva ohlelo lokusebenza, imininingwane yolwazi, i-OS, njll. Ngisebenzisa lesi sibonelo, ngizocabangela ezinye izimiso OKUQINILE
Esimweni sethu, kunesivumelwano phakathi kwethimba lengqalasizinda sokuthi uma sifake indima ye-imbjava noma ye-oraclejava, sizobe sesinokusebenzisa kanambambili kwe-java. Lokhu kuyadingeka ngoba Izindima ezikhuphukayo zincike kulokhu kuziphatha; Ngesikhathi esifanayo, lokhu kusivumela ukuthi simiselele ukuqaliswa/inguqulo eyodwa ye-java ngenye ngaphandle kokushintsha ingqondo yokuphakelwa kohlelo lokusebenza.
Inkinga lapha iwukuthi akunakwenzeka ukusebenzisa lokhu ku-Ansible, ngenxa yalokho ezinye izivumelwano zivela eqenjini.
I-Interface Segregation Principle
Umgomo wokuhlukanisa isixhumi esibonakalayo: “Izindawo eziningi zokusebenzelana eziqondene neklayenti zingcono kunokusebenzelana okukodwa kwenhloso evamile.
Ekuqaleni, sizame ukubeka konke ukuhlukahluka kokuthunyelwa kwesicelo kubhuku lokudlala elilodwa le-Ansible, kodwa bekunzima ukusekela, futhi indlela lapho sine-interface yangaphandle ecacisiwe (iklayenti lilindele i-port 443), bese ingqalasizinda ingahlanganiswa kusuka kumuntu ngamunye. izitini zokuqaliswa okuthile.
I-Dependency Inversion Isimiso
Umgomo wokuncika kokuncika. Amamojula emazingeni aphezulu akufanele ancike kumamojula asezingeni eliphansi. Zombili izinhlobo zamamojula kufanele zincike ezintweni ezingasho lutho. Izingcaphuno akufanele zincike emininingwaneni. Imininingwane kufanele incike ezintweni ezifushanisiwe.
Lapha isibonelo sizosekelwe ku-antipattern.
- Elinye lamakhasimende libe nefu eliyimfihlo.
- Sa-oda imishini ebonakalayo ngaphakathi kwefu.
- Kodwa ngenxa yemvelo yefu, ukuthunyelwa kwesicelo kwakuboshelwe lapho i-hypervisor i-VM yayikhona.
Labo. Ilogic yezinga eliphezulu yokusebenzisa uhlelo lokusebenza igeleze ngokuncika kumazinga aphansi we-hypervisor, futhi lokhu kwakusho izinkinga lapho kusetshenziswa kabusha lokhu kunengqondo. Ungakwenzi ngale ndlela.
Ukuxhumana
Ingqalasizinda njengekhodi ayigcini ngekhodi kuphela, kodwa futhi imayelana nobudlelwano phakathi kwekhodi nabantu, mayelana nokusebenzisana phakathi konjiniyela bengqalasizinda.
Isici sebhasi
Ake sicabange ukuthi unoVasya kuphrojekthi yakho. U-Vasya uyazi konke mayelana nengqalasizinda yakho, kuzokwenzekani uma u-Vasya enyamalala ngokuzumayo? Isimo sangempela lesi, ngoba angase ashayiswe ibhasi. Kwesinye isikhathi kuyenzeka. Uma lokhu kwenzeka kanye nolwazi mayelana nekhodi, isakhiwo sayo, ukuthi isebenza kanjani, ukubonakala kanye namaphasiwedi akusatshalaliswa phakathi kweqembu, khona-ke ungase uhlangabezane nezimo eziningi ezingemnandi. Ukuze unciphise lezi zingozi futhi usabalalise ulwazi eqenjini, ungasebenzisa izindlela ezihlukahlukene
I-Pair Devopsing
Akufani
Elinye icala elikhethekile wucingo lwesigameko. Ngesikhathi senkinga, iqembu lalabo abasemsebenzini kanye nalabo abahilelekile bayabuthana, kuqokwa umholi oyedwa, owabelana ngesikrini sakhe futhi azwakalise isitimela somcabango. Abanye ababambiqhaza balandela imicabango yomholi, bahlola amaqhinga avela kukhonsoli, bahlole ukuthi abaphuthelanga yini umugqa kulogi, futhi bafunde izinto ezintsha mayelana nohlelo. Le ndlela yasebenza kaningi kunokuba ingasebenzi.
Ukubuyekezwa Kwekhodi
Ngokuvumelana nalokho, kwaphumelela kakhulu ukusabalalisa ulwazi mayelana nengqalasizinda kanye nendlela esebenza ngayo kusetshenziswa ukubuyekezwa kwekhodi:
- Ingqalasizinda ichazwa ngekhodi endaweni yokugcina.
- Izinguquko zenzeka egatsheni elihlukile.
- Ngesikhathi sesicelo sokuhlanganisa, ungabona i-delta yezinguquko kwingqalasizinda.
Okugqamile lapha kwaba ukuthi ababuyekezi bakhethwa ngamunye ngamunye, ngokohlelo, i.e. ngokwezinga elithile lamathuba uzogibela engxenyeni entsha yengqalasizinda.
isitayela sekhodi
Ngokuhamba kwesikhathi, ama-squabbles aqala ukuvela ngesikhathi sokubuyekezwa, ngoba ... ababuyekezi babenesitayela sabo futhi ukuzungezisa kwababuyekezi kwakupakishwe ngezitayela ezahlukene: izikhala ezi-2 noma ezi-4, i-camelCase noma i-snake_case. Kwakungenakwenzeka ukwenza lokhu ngaso leso sikhathi.
- Umbono wokuqala bekuwukuncoma ukusebenzisa i-linter, phela wonke umuntu ungunjiniyela, wonke umuntu uhlakaniphile. Kodwa abahleli abahlukene, i-OS, abalungile
- Lokhu kuguqukele kwi-bot ebhale ukuxega ekuzinikeleni ngakunye okuyinkinga futhi yanamathisela okukhiphayo kwe-linter. Kodwa ezimweni eziningi kwakunezinto ezibaluleke kakhulu okufanele zenziwe futhi ikhodi yahlala ingalungisiwe.
I-Green Build Master
Isikhathi sihamba, futhi sesifinyelele esiphethweni sokuthi ukuzibophezela okungaphumeleli ukuhlolwa okuthile akukwazi ukuvunyelwa ku-master. Voila! Sakha iGreen Build Master, esenziwe ekuthuthukisweni kwesoftware isikhathi eside:
- Intuthuko iyaqhubeka egatsheni elihlukile.
- Ukuhlola kuyaqhubeka kulolu chungechunge.
- Uma izivivinyo zihluleka, ikhodi ngeke iphumelele.
Ukuthatha lesi sinqumo kwaba buhlungu kakhulu, ngoba... kubangele izingxabano eziningi, kodwa kwakufanelekile, ngoba. Ukubuyekezwa kwaqala ukuthola izicelo zokuhlanganisa ngaphandle kokuhluka kwesitayela, futhi ngokuhamba kwesikhathi inani lezindawo zezinkinga laqala ukwehla.
Ukuhlolwa kwe-IaC
Ngokungeziwe ekuhloleni isitayela, ungasebenzisa ezinye izinto, isibonelo, ukuhlola ukuthi ingqalasizinda yakho ingasebenza ngempela yini. Noma hlola ukuthi izinguquko kwingqalasizinda ngeke ziholele ekulahlekelweni yimali. Kungani lokhu kungase kudingeke? Umbuzo uyinkimbinkimbi futhi ifilosofi, kungcono ukuphendula ngendaba ukuthi ngandlela-thile kwakukhona i-auto-scaler ku-Powershell engazange ihlole izimo zomngcele => ama-VM amaningi adalwe kunalokho okudingekayo => iklayenti lisebenzise imali eningi kunalokho okwakuhleliwe. Lokhu akujabulisi kakhulu, kodwa kungenzeka ukubamba leli phutha ezigabeni zangaphambili.
Omunye angase abuze, kungani kwenziwa ingqalasizinda eyinkimbinkimbi nakakhulu? Ukuhlolwa kwengqalasizinda, njengekhodi, akuphathelene nokwenza lula, kodwa kumayelana nokwazi ukuthi ingqalasizinda yakho kufanele isebenze kanjani.
Iphiramidi Yokuhlola IaC
Ukuhlolwa kwe-IaC: Ukuhlaziywa Kwe-Static
Uma ufaka yonke ingqalasizinda ngesikhathi esisodwa futhi uhlola ukuthi iyasebenza, ungathola ukuthi kuthatha isikhathi esiningi futhi kudinga isikhathi esiningi. Ngakho-ke, isisekelo kufanele kube into esebenza ngokushesha, kuningi, futhi ihlanganisa izindawo eziningi zakudala.
I-Bash iyakhohlisa
Ake sibheke isibonelo esiwubala. khetha wonke amafayela ohlwini lwamanje bese ukopishela kwenye indawo. Into yokuqala efika engqondweni:
for i in * ; do
cp $i /some/path/$i.bak
done
Kuthiwani uma kunesikhala egameni lefayela? Hhayi-ke, kulungile, sihlakaniphile, siyayazi indlela yokusebenzisa izingcaphuno:
for i in * ; do cp "$i" "/some/path/$i.bak" ; done
Wenze kahle? Cha! Kuthiwani uma kungekho lutho ohlwini lwemibhalo, i.e. i-globbing ngeke isebenze.
find . -type f -exec mv -v {} dst/{}.bak ;
Wenze kahle manje? Cha... Ukhohlwe ukuthi yini engase ibe segameni lefayela n
.
touch x
mv x "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir
Amathuluzi okuhlaziya aqinile
Inkinga evela esinyathelweni esedlule ingabanjwa lapho sikhohlwa izingcaphuno, ngoba lokhu kukhona amakhambi amaningi emvelweni.
Ulimi
Ithuluzi
bash
Ruby
i-python
ansible
Ukuhlolwa kwe-IaC: Ukuhlolwa Kweyunithi
Njengoba sibonile esibonelweni sangaphambilini, ama-linters awanawo amandla onke futhi awakwazi ukukhomba zonke izindawo eziyinkinga. Ngokuqhubekayo, ngokufanisa nokuhlola ekuthuthukisweni kwesofthiwe, singakhumbula ukuhlolwa kweyunithi. Okufika ngokushesha emqondweni
Ekuqaleni saxoxa ngayo OKUQINILE nokuthi ingqalasizinda yethu kufanele ibe nezitini ezincane. Isikhathi sabo sesifikile.
- Ingqalasizinda ihlukaniswe yaba izitini ezincane, isibonelo, izindima Ansible.
- Uhlobo oluthile lwendawo luyasetshenziswa, kungaba yidokodo noma i-VM.
- Sisebenzisa indima yethu ye-Ansible kule ndawo yokuhlola.
- Siyahlola ukuthi konke kusebenze njengoba besilindele (siqhuba izivivinyo).
- Sinquma ukuthi kulungile noma cha kulungile.
Ukuhlolwa kwe-IaC: Amathuluzi okuhlola amayunithi
Umbuzo, yiziphi izivivinyo ze-CFM? Ungamane uqalise iskripthi, noma ungasebenzisa izixazululo esezakhiwe zalokhu:
CFM
Ithuluzi
Ansible
Umpheki
Umpheki
usawoti
Isibonelo se-testinfra, ukuhlola ukuthi abasebenzisi test1
, test2
zikhona futhi ziseqenjini 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
Yini okufanele uyikhethe? Umbuzo uyinkimbinkimbi futhi awucacile, nasi isibonelo sezinguquko kumaphrojekthi ku-github ka-2018-2019:
Izinhlaka zokuhlola ze-IaC
Umbuzo uphakama: kanjani ukuhlanganisa konke futhi uqalise? Angakwazi
CFM
Ithuluzi
Ansible
Umpheki
I-Terraform
Isibonelo sezinguquko kumaphrojekthi ku-github ka-2018-2019:
I-molecule vs. Testkitchen
Ekuqaleni thina
- Dala i-VM ngokuhambisana.
- Sebenzisa izindima ezifanele.
- Qalisa ukuhlola.
Ngezindima ezingu-25-35 zasebenza imizuzu engu-40-70, okwakude.
Isinyathelo esilandelayo kwaba ukushintshela ku-jenkins/docker/ansible/molecule. Ngokwe-Idiologically yonke into iyafana
- Lint playbooks.
- Hlela izindima.
- Yethula isiqukathi
- Sebenzisa izindima ezifanele.
- Gijimani testinfra.
- Hlola ukungabi namandla.
Ukuthola izindima ezingama-40 nokuhlolwa kweshumi nambili kwaqala ukuthatha cishe imizuzu eyi-15.
Ongakukhetha kuncike ezintweni eziningi, njengesitaki esisetshenzisiwe, ubuchwepheshe eqenjini, njll. lapha wonke umuntu uyazinqumela ukuthi uzowuvala kanjani umbuzo wokuhlolwa kweyunithi
Ukuhlolwa kwe-IaC: Ukuhlolwa Kokuhlanganisa
Isinyathelo esilandelayo sephiramidi yokuhlola ingqalasizinda kuzoba izivivinyo zokuhlanganisa. Ziyafana nokuhlolwa kweyunithi:
- Ingqalasizinda ihlukaniswe yaba izitini ezincane, isibonelo izindima Ansible.
- Uhlobo oluthile lwendawo luyasetshenziswa, kungaba yidokodo noma i-VM.
- Kulesi simo sokuhlola sebenza eziningi Izindima ezifanele.
- Siyahlola ukuthi konke kusebenze njengoba besilindele (siqhuba izivivinyo).
- Sinquma ukuthi kulungile noma cha kulungile.
Uma sikhuluma nje, asihloli ukusebenza kwento ngayinye yesistimu njengasekuhlolweni kweyunithi, sihlola ukuthi iseva imiswa kanjani iyonke.
Ukuhlolwa kwe-IaC: Ukuhlola Ukuqeda Ukuqeda
Phezulu kwephiramidi sibingelelwa ukuhlolwa kwe-End to End. Labo. Asihloli ukusebenza kweseva ehlukile, iskripthi esihlukile, noma isitini esihlukile sengqalasizinda yethu. Sihlola ukuthi amaseva amaningi axhumeke ndawonye, ingqalasizinda yethu isebenza ngendlela esilindele ukuthi isebenze ngayo. Ngeshwa, angikaze ngibone izixazululo ezenziwe ngamabhokisi esenziwe ngomumo, mhlawumbe ngoba... Ingqalasizinda ivamise ukuba iyingqayizivele futhi kunzima ukuyibonisa bese yenza uhlaka lokuhlola. Ngenxa yalokho, wonke umuntu udala izixazululo zakhe. Kukhona ukufunwa, kodwa ayikho impendulo. Ngakho-ke, ngizokutshela ukuthi yini ekhona ukuze ngiphushe abanye emicabangweni ezwakalayo noma ngihlikihle ikhala lami eqinisweni lokuthi yonke into yasungulwa kudala ngaphambi kwethu.
Iphrojekthi enomlando ocebile. Isetshenziswa ezinhlanganweni ezinkulu futhi cishe ngamunye wenu uye waphambana nayo ngokungaqondile. Uhlelo lokusebenza lusekela imininingwane eminingi, ukuhlanganiswa, njll. Ukwazi ukuthi ingqalasizinda ingase ibukeke kanjani amafayela amaningi e-docker-compose, nokwazi ukuthi yiziphi izivivinyo okufanele ziqhutshwe lapho i-Jenkins isendaweni.
Lolu hlelo lusebenze isikhathi eside, kuze kube ngaphakathi kohlaka
Umbono wocwaningo waqhubekela phambili, futhi ku-openshift bathola into efana ne-APB (Ansible Playbook Bundle), ekuvumela ukuthi upakishe ulwazi lwendlela yokufaka ingqalasizinda esitsheni. Labo. kukhona ulwazi oluphindaphindwayo, oluvivinywayo lokuthi ingqalasizinda isetshenziswa kanjani.
Konke lokhu kuzwakale kukuhle kwaze kwaba yilapho sihlangana nengqalasizinda ehlukahlukene: besidinga iWindows ukuze ihlolwe. Ngenxa yalokho, ulwazi lwalokho, kuphi, kanjani ukuthunyelwa, nokuhlola ku-jenkins.
Isiphetho
Ingqalasizinda njengoba Ikhodi injalo
- Ikhodi endaweni yokugcina.
- Ukusebenzisana kwabantu.
- Ukuhlolwa kwengqalasizinda.
links
English Version Phambana okuthunyelwe okuvela kubhulogi yomuntu siqu - I-Dry run 2019-04-24
I-SpbLUG Ividiyo(RU) evela ku-DevopsConf 2019-05-28 Ividiyo(RU) evela ku-DINS DevOps EVENING 2019-06-20 Izifundo Ezitholakala Ekubhaleni Imigqa Engaphezu Kwezi-300,000 Yekhodi Yengqalasizinda &inguqulo yombhalo Ukuhlanganisa Ingqalasizinda Njengekhodi ibe Ipayipi Eliqhubekayo Lokulethwa Ukuhlola ingqalasizinda njengekhodi Ukuthuthukiswa okuphumelelayo kanye nokugcinwa kwezindima ezithintekayo Ansible is not bash!
Source: www.habr.com