Indlela yokusondela IaC (I-Infrastructure as Code) ayiquki kuphela ikhowudi egcinwe kwindawo yokugcina, kodwa kunye nabantu kunye neenkqubo ezijikeleze le khowudi. Ngaba kunokwenzeka ukuphinda usebenzise iindlela ukusuka kuphuhliso lwesoftware ukuya kulawulo lweziseko ezingundoqo kunye nenkcazo? Kuya kuba yinto efanelekileyo ukugcina le ngcamango engqondweni ngelixa ufunda inqaku.
Lo ngumbhalo wam
Izilayidi kunye neevidiyo
IsiNgesi Inguqulelo yesiRashiya - Ukubaleka okomileyo 2019-04-24
SpbLUG Ividiyo(RU) esuka kwiDevopsConf 2019-05-28 Ividiyo (RU) esuka kwi-DINS DevOps Evening 2019-06-20 iZilayidi
Iziseko zophuhliso njengembali ye-bash
Masithi uza kwiprojekthi entsha, kwaye bathi kuwe: "Siye Izibonelelo njengeKhowudi". Enyanisweni kuvela Iziseko zophuhliso njengembali ye-bash okanye umzekelo Uxwebhu njengembali ye-bash. Le yimeko yangempela, umzekelo, imeko efanayo yachazwa nguDenis Lysenko kwintetho
Ngomnqweno othile, sinokuthi Iziseko zophuhliso njengembali ye-bash oku kufana nekhowudi:
- ukuvelisa kwakhona: Ungathatha imbali ye-bash, sebenzisa imiyalelo ukusuka apho, kwaye unokuthi, ngendlela, ufumane uqwalaselo olusebenzayo njengemveliso.
- uguqulelo: uyazi ukuba ngubani ongenayo kunye nento abayenzayo, kwakhona, akusiyo inyani ukuba oku kuya kukukhokelela kuqwalaselo lokusebenza ekuphumeni.
- imbali: libali lokuba ngubani owenze ntoni. kuphela awuzukwazi ukuyisebenzisa ukuba ulahlekelwe ngumncedisi.
Yintoni endiyenzayo?
Izibonelelo njengeKhowudi
Nokuba imeko engaqhelekanga njenge Iziseko zophuhliso njengembali ye-bash ungayitsala ngeendlebe Izibonelelo njengeKhowudi, kodwa xa sifuna ukwenza into enzima ngakumbi kunomncedisi omdala we-LAMP, siya kufikelela kwisigqibo sokuba le khowudi kufuneka iguqulwe ngandlela-thile, iguqulwe, iphuculwe. Okulandelayo singathanda ukuqwalasela ungqamaniso phakathi Izibonelelo njengeKhowudi kunye nophuhliso lwesoftware.
YOMILE
Kwiprojekthi yophuhliso lwenkqubo yokugcina, bekukho umsebenzi ongaphantsi
- ngena apha nge ssh kwaye wenze umyalelo.
- khuphela ifayile apho.
- lungisa uqwalaselo apha.
- qala inkonzo apho
- ...
- INZUZO!
Kwi-logic echazwe, i-bash ingaphezulu kokwaneleyo, ngakumbi kwizigaba zokuqala zeprojekthi, xa iqala. Oku
Kuvela ukuba kukho umkhuba onjengo-DRY (Musa ukuziphindaphinda). Umbono kukusebenzisa kwakhona ikhowudi ekhoyo. Kuvakala kulula, kodwa asizange size kule nto ngoko nangoko. Kwimeko yethu, yayiyingcamango ye-banal: ukwahlula i-configs kwi-scripts. Ezo. ingqiqo yeshishini yendlela ufakelo olusetyenziswa ngayo ngokwahlukeneyo, luqwalasela ngokwahlukeneyo.
I-SOLID ye-CFM
Ekuhambeni kwexesha iprojekthi yakhula kwaye
UmGaqo woXanduva oluNye
Iklasi nganye yenza umsebenzi omnye kuphela.
Akukho mfuneko yokuxuba ikhowudi kwaye wenze izilo ze-spaghetti zaphezulu ze-monolithic. Isiseko kufuneka sibe nezitena ezilula. Kuyavela ukuba ukuba uyahlulahlula i-Ansible playbook ibe ngamaqhekeza amancinci, funda iindima ezifanelekileyo, ngoko kulula ukuzigcina.
I-Open Closed Principle
Umgaqo ovuliweyo/ovaliweyo.
- Vula ulwandiso: kuthetha ukuba ukuziphatha kwequmrhu kunokwandiswa ngokuyila iindidi ezintsha zequmrhu.
- Ivaliwe ukutshintsha: Ngenxa yokwandisa ukuziphatha kwequmrhu, akukho lutshintsho kufuneka lwenziwe kwikhowudi esebenzisa loo mibutho.
Ekuqaleni, sahambisa isiseko sovavanyo koomatshini ababonakalayo, kodwa ngenxa yokuba ingqiqo yeshishini lokusasaza yayahlukene nokuphunyezwa, songeze ukuqengqeleka kwi-baremetall ngaphandle kweengxaki.
I-Liskov Substitution Principle
Umgaqo wokuthatha indawo kaBarbara Liskov. Izinto ezikwinkqubo kufuneka zithathelwe indawo ngemizekelo yesubtypes zazo ngaphandle kokutshintsha uphumezo oluchanekileyo lwenkqubo.
Ukuba uyijonga ngokubanzi, ayilophawu lweprojekthi ethile enokusetyenziswa apho OKUQINISILEYO, ngokuqhelekileyo malunga neCFM, umzekelo, kwenye iprojekthi kuyimfuneko ukuhambisa isicelo sebhokisi yeJava phezu kweJava eyahlukeneyo, iiseva zesicelo, i-database, i-OS, njl. Ndisebenzisa lo mzekelo, ndiza kuqwalasela eminye imigaqo OKUQINISILEYO
Kwimeko yethu, kukho isivumelwano phakathi kweqela leziseko ezingundoqo ukuba ukuba sifake i-imbjava okanye indima ye-oraclejava, ngoko sine-java binary executable. Oku kuyimfuneko ngenxa yokuba Iindima eziphezulu zixhomekeke kule ndlela yokuziphatha; Kwangaxeshanye, oku kusivumela ukuba sithathe indawo yokuphunyezwa/uguqulelo lwejava enye ngaphandle kokutshintsha ingqiqo yokusasazwa kwesicelo.
Ingxaki apha ikhona kwinto yokuba akunakwenzeka ukuphumeza oku kwi-Ansible, ngenxa yoko ezinye izivumelwano zivela kwiqela.
I-Interface Segregation Principle
Umgaqo wokwahlulwa kojongano: “Ujongano oluninzi olungqale ngqo kubathengi lungcono kunojongano lwenjongo enye jikelele.
Ekuqaleni, sizame ukubeka lonke uguquko lokusasazwa kwesicelo kwincwadi yokudlala eAnsible, kodwa kwakunzima ukuxhasa, kunye nendlela xa sinojongano lwangaphandle olukhankanyiweyo (umxhasi ulindele izibuko 443), emva koko isiseko singahlanganiswa kumntu ngamnye. izitena zokuphunyezwa okuthile.
I-Dependency Inversion Principle
Umgaqo wokuxhomekeka kokuxhomekeka. Iimodyuli kumanqanaba aphezulu akufanele zixhomekeke kwiimodyuli kumanqanaba aphantsi. Zombini iintlobo zeemodyuli kufuneka zixhomekeke kwizinto ezithathwayo. Ukuthabatha akufuneki kuxhomekeke kwiinkcukacha. Iinkcukacha mazixhomekeke kwizinto ezithathwayo.
Apha umzekelo uya kusekelwa kwi-antipattern.
- Omnye wabathengi wayenelifu labucala.
- Saodola oomatshini bokwenene ngaphakathi kwilifu.
- Kodwa ngenxa yobume belifu, ukusasazwa kwesicelo kubotshelelwe apho i-hypervisor i-VM yayikhona.
Ezo. Ingqiqo yokusasazwa kwesicelo esikwinqanaba eliphezulu ihambe ngokuxhomekeke kumanqanaba asezantsi ehypervisor, kwaye oku kuthetha iingxaki xa kuphinda kusetyenziswe le ngqiqo. Musa ukuyenza ngolu hlobo.
Ukuxoxa
Iziseko zophuhliso njengekhowudi azikho nje ngekhowudi, kodwa nangobudlelwane phakathi kwekhowudi nabantu, malunga nokusebenzisana phakathi kwabaphuhlisi beziseko zophuhliso.
Umba webhasi
Makhe sicinge ukuba uneVasya kwiprojekthi yakho. UVasya uyazi yonke into malunga neziseko zakho, kuya kwenzeka ntoni ukuba uVasya uyanyamalala ngokukhawuleza? Le yimeko yokwenyani, kuba unokutshayiswa yibhasi. Ngamanye amaxesha kuyenzeka. Ukuba oku kwenzeka kunye nolwazi malunga nekhowudi, isakhiwo sayo, indlela esebenza ngayo, ukubonakala kunye neephasiwedi azihanjiswa phakathi kweqela, ngoko unokuhlangabezana nenani leemeko ezingathandekiyo. Ukunciphisa le mingcipheko kunye nokusabalalisa ulwazi ngaphakathi kweqela, ungasebenzisa iindlela ezahlukeneyo
I-Pair Devopsing
Akunjalo
Enye imeko ekhethekileyo kukufowunelwa kwesiganeko. Ngexesha lengxaki, iqela labo basemsebenzini kunye nabo babandakanyekayo bayahlangana, inkokeli enye yonyulwa, eyabelana ngesikrini sayo kwaye ivakalise uloliwe wengcinga. Abanye abathathi-nxaxheba balandela iingcamango zenkokeli, bahlole amaqhinga avela kwi-console, khangela ukuba abazange baphoswe ngumgca kwilogi, kwaye bafunde izinto ezintsha malunga nenkqubo. Le ndlela yayisebenza rhoqo kunokuba ingasebenzi.
Uphengululo lweKhowudi
Ngokufanelekileyo, bekusebenza ngakumbi ukusasaza ulwazi malunga neziseko zophuhliso kunye nendlela esebenza ngayo ngokuphononongwa kwekhowudi:
- Iziseko zophuhliso zichazwe ngekhowudi kwindawo yokugcina.
- Utshintsho lwenzeka kwicandelo elahlukileyo.
- Ngexesha lokudibanisa isicelo, unokubona i-delta yotshintsho kwisiseko.
Okugqwesileyo apha kukuba abahlaziyi bakhethwa ngabanye, ngokweshedyuli, oko kukuthi. ngeqondo elithile lokunokwenzeka uya kukhwela kwisiqwenga esitsha seziseko ezingundoqo.
Isimbo seKhowudi
Ngokuhamba kwexesha, ii-squabbles zaqala ukubonakala ngexesha lokuphononongwa, kuba ... ababuyekezi babenesitayile sabo kunye nokujikeleza kwabahlaziyi bapakishe ngeendlela ezahlukeneyo: izithuba ezi-2 okanye ezi-4, ikamela okanye inyoka_case. Kwakungenakwenzeka ukuphumeza oku ngoko nangoko.
- Umbono wokuqala wawukucebisa ukusebenzisa i-linter, emva kwayo yonke loo nto, wonke umntu uyinjineli, wonke umntu uhlakaniphile. Kodwa abahleli abahlukeneyo, i-OS, abafanelekanga
- Oku kuye kwavela kwi-bot eyabhala ukudelela kwisibophelelo ngasinye esiyingxaki kwaye yancamathela isiphumo se-linter. Kodwa kwiimeko ezininzi bekukho izinto ezibaluleke ngakumbi ekufuneka zenziwe kwaye ikhowudi yahlala ingalungiswanga.
Green Build Master
Ixesha lihamba, kwaye sifikelele kwisigqibo sokuba ukwenza ukuba ungaphumeleli iimvavanyo ezithile akunakuvunyelwa kwi-master. Voila! Siye sayila iGreen Build Master, ebisoloko isenziwa kuphuhliso lwesoftware ixesha elide:
- Uphuhliso luyaqhubeka kwisebe elahlukileyo.
- Uvavanyo luyaqhuba kulo msonto.
- Ukuba iimvavanyo zingaphumeleli, ikhowudi ayiyi kuyenza ibe yinkosi.
Ukwenza esi sigqibo kwakubuhlungu kakhulu, kuba... kubangele impikiswano eninzi, kodwa kwakufanelekile, kuba. Uphononongo lwaqala ukufumana izicelo zokudityaniswa ngaphandle kokungafani kwesitayela, kwaye ngokuhamba kwexesha inani leengxaki zengxaki zaqala ukuhla.
Uvavanyo lwe-IaC
Ukongeza ekujongeni isitayile, ungasebenzisa ezinye izinto, umzekelo, ukujonga ukuba isiseko sakho sinokuhambisa. Okanye khangela ukuba utshintsho kwiziseko zophuhliso aluyi kukhokelela ekulahlekelweni yimali. Kutheni oku kunokuba yimfuneko? Umbuzo uyinkimbinkimbi kunye nefilosofi, kungcono ukuphendula ngebali ukuba ngandlela-thile kwakukho i-auto-scaler kwi-Powershell engazange ihlolisise iimeko zomda => ii-VM ezininzi zenziwe kunokuba ziyimfuneko => umxhasi uchithe imali eninzi kunokuba icwangcisiwe. Oku akumnandanga kakhulu, kodwa kuyakwenzeka ukubamba le mpazamo kumanqanaba angaphambili.
Omnye unokubuza, kutheni ukwenza iziseko ezingundoqo zibe nzima ngakumbi? Uvavanyo lweziseko ezingundoqo, njengekhowudi, alukho malunga nokwenza lula, kodwa malunga nokwazi ukuba isiseko sakho kufuneka sisebenze njani.
IPiramidi yoVavanyo lwe-IaC
Uvavanyo lwe-IaC: Uhlalutyo lwe-Static
Ukuba uhambisa zonke iziseko zophuhliso ngaxeshanye kwaye ujonge ukuba ziyasebenza, unokufumanisa ukuba kuthatha ixesha elininzi kwaye kufuna ixesha elininzi. Ke ngoko, isiseko kufuneka sibe yinto esebenza ngokukhawuleza, ininzi, kwaye igubungela iindawo ezininzi zamandulo.
I-Bash inenkohliso
Makhe sijonge umzekelo ongabalulekanga. khetha zonke iifayile kulawulo lwangoku kwaye ukhuphele kwenye indawo. Into yokuqala ethi qatha engqondweni:
for i in * ; do
cp $i /some/path/$i.bak
done
Kuthekani ukuba kukho isithuba kwigama lefayile? Ewe, kulungile, silumkile, siyayazi indlela yokusebenzisa izicatshulwa:
for i in * ; do cp "$i" "/some/path/$i.bak" ; done
Wenze kakuhle? Hayi! Kuthekani ukuba akukho nto kwi-directory, i.e. iglobbing ayizukusebenza.
find . -type f -exec mv -v {} dst/{}.bak ;
Uhambe kakuhle ngoku? Hayi... Ulibele ukuba yintoni enokuba kwigama lefayile n
.
touch x
mv x "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir
Izixhobo zokuhlalutya okuzinzileyo
Ingxaki esuka kwinyathelo langaphambili inokubanjwa xa silibale ukucaphula, kuba oku kukho amayeza amaninzi kwindalo.
ulwimi
Isixhobo
ukutshatyalaliswa
ilitye elinqabileyo elibomvu
python
iyenzeka
Uvavanyo lwe-IaC: Iimvavanyo zeYunithi
Njengoko sibonile kumzekelo wangaphambili, ii-linters azikho amandla onke kwaye azikwazi ukukhomba zonke iinkalo zengxaki. Ngapha koko, ngokuthelekisa novavanyo kuphuhliso lwesoftware, sinokukhumbula iimvavanyo zeeyunithi. Yintoni efika ngokukhawuleza engqondweni
Ekuqaleni sithethe ngayo OKUQINISILEYO nokuba iziseko zethu ezingundoqo kufuneka zibe nezitena ezincinci. Lifikile ixesha labo.
- Iziseko zophuhliso zihlulwe zibe zizitena ezincinci, umzekelo, iindima ze-Ansible.
- Olunye uhlobo lokusingqongileyo luyasetyenziswa, nokuba yidocker okanye iVM.
- Sisebenzisa indima yethu yeAnsible kule ndawo yovavanyo.
- Sijonga ukuba yonke into isebenze njengoko besilindele (siqhuba iimvavanyo).
- Sigqibe kwelokuba kulungile okanye hayi kulungile.
Uvavanyo lwe-IaC: Izixhobo zoVavanyo lweyunithi
Umbuzo, zithini iimvavanyo zeCFM? Ungaqhuba ngokulula iskripthi, okanye ungasebenzisa izisombululo esezenziwe ngoku:
CFM
Isixhobo
Efanelekileyo
intloko
intloko
ityuwa
Umzekelo we-testinfra, ukujonga ukuba abasebenzisi test1
, test2
zikhona kwaye zikwiqela 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
Khetha ntoni? Umbuzo unzima kwaye unzima, nanku umzekelo wotshintsho kwiiprojekthi kwi-github ye-2018-2019:
Izikhokelo zoVavanyo lwe-IaC
Umbuzo uvela: njani ukuhlanganisa konke kunye nokuyisungula? Ngaba
CFM
Isixhobo
Efanelekileyo
intloko
Terraform
Umzekelo wotshintsho kwiiprojekthi kwi-github ye-2018-2019:
Imolekyuli vs. Testkitchen
Ekuqaleni thina
- Yenza iVM ngokunxuseneyo.
- Sebenzisa iindima ezifanelekileyo.
- Qhuba uhlolo.
Kwiindima ze-25-35 zasebenza imizuzu engama-40-70, eyayide.
Isinyathelo esilandelayo yayiyinguqu kwi-jenkins / docker / i-ansible / molekyuli. Ngokwe-Idiologically yonke into iyafana
- Lint iincwadi zokudlala.
- Yenza uluhlu lweendima.
- Qalisa isikhongozeli
- Sebenzisa iindima ezifanelekileyo.
- Qhuba testinfra.
- Qwalasela ukungabi namandla.
Ukubamba iindima ezingama-40 kunye novavanyo lweshumi elinesibini kwaqala ukuthatha malunga nemizuzu eli-15.
Yintoni ongayikhetha kuxhomekeke kwizinto ezininzi, ezifana ne-stack esetyenzisiweyo, ubuchule kwiqela, njl. apha wonke umntu uthatha isigqibo ngokwakhe ukuba uwuvala njani umbuzo wovavanyo lweYunithi
Uvavanyo lwe-IaC: Iimvavanyo zokudibanisa
Isinyathelo esilandelayo kwiphiramidi yovavanyo lweziseko zophuhliso iya kuba luvavanyo lokudibanisa. Ziyafana novavanyo lweYunithi:
- Iziseko zophuhliso zohlulwe zibe zizitena ezincinci, umzekelo iindima ezibambekayo.
- Olunye uhlobo lokusingqongileyo luyasetyenziswa, nokuba yidocker okanye iVM.
- Kule meko yovavanyo sebenza okuninzi kwe Iindima ezifanelekileyo.
- Sijonga ukuba yonke into isebenze njengoko besilindele (siqhuba iimvavanyo).
- Sigqibe kwelokuba kulungile okanye hayi kulungile.
Xa sithetha nje, asijongi ukusebenza kwento enye yenkqubo njengakuvavanyo lweyunithi, sijonga ukuba umncedisi uqwalaselwe njani xa iyonke.
Uvavanyo lwe-IaC: Iimvavanyo zokuphela kokuphela
Phezulu kwipiramidi sibuliswa yi-End to End iimvavanyo. Ezo. Asikhangeli ukusebenza komncedisi ohlukeneyo, iskripthi esahlukileyo, okanye isitena esahlukileyo sesiseko sethu. Sijonga ukuba uninzi lweeseva eziqhagamshelwe kunye, izixhobo zethu zokusebenza zisebenza njengoko silindele. Ngelishwa, andizange ndibone izisombululo zebhokisi esele zenziwe, mhlawumbi ngenxa yokuba ... Iziseko zophuhliso zihlala zizodwa kwaye kunzima ukwenza itemplate kwaye zenze isakhelo sovavanyo. Ngenxa yoko, wonke umntu udala izisombululo zakhe. Kukho imfuno, kodwa akukho mpendulo. Ke ngoko, ndiza kukuxelela into ekhoyo ukuze ndityhale abanye ukuba bavakalise iingcinga ezivakalayo okanye ndihlikihle impumlo yam kwinto yokuba yonke into yaqalwa kwakudala phambi kwethu.
Iprojekthi enembali etyebileyo. Isetyenziswa kwimibutho emikhulu kwaye mhlawumbi ngamnye wenu uye wawela indlela engangqalanga nayo. Isicelo sixhasa uvimba weenkcukacha ezininzi, udibaniso, njl. Ukwazi ukuba isiseko sinokujongeka njani kuninzi lweefayile zokuqamba i-docker, kunye nokwazi ukuba zeziphi iimvavanyo ekufuneka ziqhutywe kwindawo ekuyo iJenkins.
Esi sikimu sisebenze ixesha elide, kude kube ngaphakathi kwesakhelo
Ingcamango yophando yaqhubela phambili, kwaye kwi-openshift bafumana into efana ne-APB (i-Ansible Playbook Bundle), evumela ukuba upakishe ulwazi malunga nendlela yokuhambisa iziseko kwi-container. Ezo. kukho ulwazi oluphindaphindwayo, olunokuvavanywa ngendlela yokusasazwa kweziseko zophuhliso.
Konke oku kwavakala kukuhle de sabalekela kwiziseko ezingundoqo: sifuna iiWindows zovavanyo. Ngenxa yoko, ulwazi lwento, phi, njani ukuthunyelwa, kunye nokuvavanya kwi-jenkins.
isiphelo
Iziseko zophuhliso njengoko iKhowudi iyiyo
- Ikhowudi kwindawo yokugcina.
- Ukusebenzisana kwabantu.
- Uvavanyo lweziseko zophuhliso.
amakhonkco
I siNgesi Version Iposti yokuwela kwibhlog yomntu - Ukubaleka okomileyo 2019-04-24
SpbLUG Ividiyo(RU) esuka kwiDevopsConf 2019-05-28 Ividiyo (RU) esuka kwi-DINS DevOps Evening 2019-06-20 Izifundo eziFundiweyo ekuBhaleni Ngaphezu kwama-300,000 eMigqaliselo yeKhowudi yeziSeko ezinguNdoqo &inguqulelo yokubhaliweyo Ukuhlanganisa iziseko zoncedo njengeKhowudi kuMbhobho wokuHambisa ngokuQolekileyo Uvavanyo lweziseko zophuhliso njengekhowudi Uphuhliso olusebenzayo kunye nokugcinwa kweendima ezifanelekileyo Ansible ayikho bash!
umthombo: www.habr.com