Å is ir stÄsts par projektu, kurÄ tika izmantota paÅ”rakstÄ«ta konfigurÄcijas pÄrvaldÄ«bas sistÄma, un kÄpÄc pÄreja uz Ansible ilga 18 mÄneÅ”us.
Diena Nr. -Š„Š„Š„: Pirms sÄkuma
SÄkotnÄji infrastruktÅ«ra sastÄvÄja no daudziem atseviŔķiem saimniekdatoriem, kuros darbojas Hyper-V. Lai izveidotu virtuÄlo maŔīnu, bija jÄveic vairÄkas darbÄ«bas: disku ievietoÅ”ana pareizajÄ vietÄ, DNS reÄ£istrÄÅ”ana, DHCP rezervÄÅ”ana, VM konfigurÄcijas ievietoÅ”ana git repozitorijÄ. Å is process bija daļÄji mehanizÄts, taÄu, piemÄram, virtuÄlÄs maŔīnas starp saimniekiem tika sadalÄ«tas ar roku. Bet, piemÄram, izstrÄdÄtÄji var labot VM konfigurÄciju git un lietot to, pÄrstartÄjot virtuÄlo maŔīnu.
Man ir aizdomas, ka sÄkotnÄjÄ ideja tika iecerÄta kÄ IaC: daudzas bezvalsts virtuÄlÄs maŔīnas, kas atiestata savu stÄvokli uz nulli, kad tÄs tiek restartÄtas. Kas bija VM konfigurÄcijas pÄrvaldÄ«ba? Shematiski tas izskatÄs vienkÄrÅ”i:
VirtuÄlajai maŔīnai tika izveidots statisks MAC.
VirtuÄlajai maŔīnai tika pievienots ISO ar CoreOS un sÄknÄÅ”anas disks.
CoreOS palaiž pielÄgoÅ”anas skriptu, lejupielÄdÄjot to no WEB servera, pamatojoties uz tÄ IP.
Skripts lejupielÄdÄ VM konfigurÄciju, izmantojot SCP, pamatojoties uz IP adresi.
Tiek palaists Systemd vienību failu un bash skriptu aizsargs.
Å im risinÄjumam bija daudzas acÄ«mredzamas problÄmas:
CoreOS ISO ir novecojis.
Daudz sarežģītu automatizÄtu darbÄ«bu un burvju, migrÄjot/veidojot virtuÄlÄs maŔīnas.
GrÅ«tÄ«bas ar atjauninÄÅ”anu un gadÄ«jumiem, kad ir nepiecieÅ”ama noteikta programmatÅ«ras versija. VÄl jautrÄk ar kodola moduļiem.
VM nebija tik iegÅ«ti bez datiem, t.i. Tika parÄdÄ«tas virtuÄlÄs maŔīnas ar disku ar pievienotiem papildu lietotÄja datiem.
KÄds pastÄvÄ«gi izjaukja sistÄmas vienÄ«bu atkarÄ«bas, un CoreOS pÄrstartÄÅ”anas laikÄ sastinga. Bija grÅ«ti to uztvert, izmantojot CoreOS pieejamos rÄ«kus.
NoslÄpumu pÄrvaldÄ«ba.
CM nebija. CoreOS bija bash un YML konfigurÄcijas.
Lai lietotu virtuÄlÄs maŔīnas konfigurÄciju, tÄ ir jÄrestartÄ, taÄu tÄ var netikt atsÄknÄta. Å Ä·iet, ka problÄma ir acÄ«mredzama, taÄu pastÄvÄ«gu disku nav - nav kur saglabÄt žurnÄlus. Nu labi, mÄÄ£inÄsim pievienot kodola ielÄdes opciju, lai žurnÄli tiktu nosÅ«tÄ«ti. Bet nÄ, cik tas viss ir sarežģīti.
0. diena: atpazÄ«stiet problÄmu
TÄ bija parastÄ izstrÄdes infrastruktÅ«ra: jenkins, testa vides, uzraudzÄ«ba, reÄ£istrs. CoreOS bija paredzÄts k8s klasteru mitinÄÅ”anai, t.i. problÄma bija tÄ, kÄ tika izmantota CoreOS. Pirmais solis bija kaudzes izvÄle. MÄs izlÄmÄm:
CentOS kÄ bÄzes sadalÄ«jums, jo Å is ir ražoÅ”anas vidÄm tuvÄkais izplatÄ«Å”anas veids.
IespÄjams konfigurÄcijas pÄrvaldÄ«bai, jo par to tika veikta plaÅ”a pÄrbaude.
Jenkins kÄ ietvaru esoÅ”o procesu automatizÄÅ”anai, jo tas jau ir aktÄ«vi izmantots izstrÄdes procesos
Hyper-V kÄ virtualizÄcijas platforma. Ir vairÄki iemesli, kas pÄrsniedz stÄsta jomu, bet Ä«sumÄ - mÄs nevaram izmantot mÄkoÅus, mums ir jÄizmanto sava aparatÅ«ra.
Kad steka bija skaidra, sÄkÄs gatavoÅ”anÄs gÄjienam. EsoÅ”o lÄ«gumu laboÅ”ana koda veidÄ (LÄ«gumi kÄ kodekss!). PÄreja roku darbs -> mehanizÄcija -> automatizÄcija.
1. VM konfigurÄÅ”ana
Ansible paveic lielisku darbu. Veicot minimÄlas Ä·ermeÅa kustÄ«bas, varat kontrolÄt virtuÄlÄs maŔīnas konfigurÄcijas:
Izveidojiet git repozitoriju.
MÄs ievietojam virtuÄlo maŔīnu sarakstu inventÄrÄ, konfigurÄcijas rokasgrÄmatÄs un lomÄs.
MÄs izveidojam Ä«paÅ”u jenkins vergu, no kura jÅ«s varat palaist Ansible.
MÄs izveidojam darbu un konfigurÄjam Dženkinsu.
Pirmais process ir gatavs. LÄ«gumi ir fiksÄti.
2. Izveidojiet jaunu virtuÄlo maŔīnu
Å eit viss nebija Ä«paÅ”i Ärti. Nav Ä«paÅ”i Ärti izveidot virtuÄlÄs maŔīnas uz Hyper-V no Linux. Viens no mÄÄ£inÄjumiem mehanizÄt Å”o procesu bija:
Ansbile savienojas ar Windows saimniekdatoru, izmantojot WinRM.
Ansible palaiž Powershell skriptu.
Powershell skripts izveido jaunu virtuÄlo maŔīnu.
Izmantojot Hyper-V/ScVMM, veidojot virtuÄlo maŔīnu viesa operÄtÄjsistÄmÄ, tiek konfigurÄts saimniekdatora nosaukums.
Atjauninot DHCP nomu, VM nosÅ«ta tÄ resursdatora nosaukumu.
Standarta ddns un dhcp integrÄcija domÄna kontrollera pusÄ konfigurÄ DNS ierakstu.
Varat pievienot VM savam krÄjumam un konfigurÄt to, izmantojot Ansible.
3. Izveidojiet VM veidni
ViÅi Å”eit neko neizgudroja - viÅi paÅÄma iepakotÄju.
130. diena: varbūt CentOS+ansible nav vajadzīgs? varbūt openshift?
JÄsaprot, ka infrastruktÅ«ras ievieÅ”anas process nebija vienÄ«gais un bija blakus apakÅ”projekti. PiemÄram, tika saÅemts pieprasÄ«jums palaist mÅ«su lietojumprogrammu Openshift, un tÄ rezultÄtÄ tika veikti pÄtÄ«jumi vairÄk nekÄ vienu nedÄļu MÄs palaižam lietojumprogrammu Openshift un salÄ«dzinÄm esoÅ”os rÄ«kus kas palÄninÄja pÄrvietoÅ”anÄs procesu. RezultÄts izrÄdÄ«jÄs, ka openshift neaptver visas vajadzÄ«bas, jums ir nepiecieÅ”ama Ä«sta aparatÅ«ra vai vismaz iespÄja spÄlÄt ar kodolu.
170. diena: Openshift nav piemÄrots, pieÅemsim iespÄju ar Windows Azure Pack?
Hyper-V nav Ä«paÅ”i draudzÄ«gs, SCVMM to Ä«paÅ”i nepadara. Bet ir tÄda lieta kÄ Windows Azure Pack, kas ir SCVMM papildinÄjums un atdarina Azure. Bet patiesÄ«bÄ produkts izskatÄs pamests: dokumentÄcijÄ ir bojÄtas saites, un tÄ ir ļoti maza. TaÄu viÅi to arÄ« aplÅ«koja, pÄtot mÅ«su mÄkoÅa darbÄ«bas vienkÄrÅ”oÅ”anas iespÄjas.
250. diena: Windows Azure pakotne nav ļoti laba. MÄs paliekam SCVMM
Windows Azure Pack izskatÄ«jÄs daudzsoloÅ”i, taÄu tika nolemts neienest sistÄmÄ WAP ar tÄs sarežģītÄ«bu, lai radÄ«tu nevajadzÄ«gas iespÄjas, un palika pie SCVMM.
360. diena: ziloÅa ÄÅ”ana pa gabalam
Tikai gadu vÄlÄk platforma pÄrcelÅ”anÄs vietai bija gatava un sÄkÄs pÄrvÄkÅ”anÄs process. Å im nolÅ«kam tika uzstÄdÄ«ts SMART uzdevums. MÄs pÄrbaudÄ«jÄm visas virtuÄlÄs maŔīnas un sÄkÄm izdomÄt konfigurÄciju pa vienam, aprakstÄ«t to Ansible un pÄrklÄt to ar testiem.
450. diena: kÄda veida sistÄmu jÅ«s ieguvÄt?
Pats process nav interesants. TÄ ir rutÄ«na, var atzÄ«mÄt, ka lielÄkÄ daļa konfigurÄciju bija salÄ«dzinoÅ”i vienkÄrÅ”as vai izomorfas un saskaÅÄ ar Pareto principu 80% VM konfigurÄciju prasÄ«ja 20% laika. PÄc tÄda paÅ”a principa 80% laika tika pavadÄ«ti gÄjiena sagatavoÅ”anai un tikai 20% paÅ”ai kustÄ«bai.