
See esitluse tÔlgendus ja .
See on projekti lugu, kus kasutati kohandatud konfiguratsioonihalduse sĂŒsteemi ja miks ĂŒleminek Ansible'ile venis 18 kuud.
PĂ€ev â -ЄЄЄ: Enne algust

Algne infrastruktuur koosnes paljuski eraldiseisvatest hostidest, mida haldas Hyper-V. Virtuaalmachine'i loomine nÔudis palju samme: diskide paigutamine Ôigesse kohta, DNS-i seadistamine, DHCP reservatsioonide tegemine ja VM konfiguratsiooni salvestamine git-iga. See protsess oli osaliselt mehhaniseeritud, kuid nÀiteks VM-id jaotati hostide vahel kÀsitsi. Kuid arendajad said VM-i konfiguratsiooni git-iga muutes rakendada seda VM-i taaskÀivitamise kaudu.
Kohandatud konfiguratsioonihalduse lahendus

Algne idee, kahtlustan, oli mÔeldud nagu IaC: hulk staateless VM-e, mis lÀhtestavad oma oleku pÀrast taaskÀivitamist. Kuidas siis tundus VM-ide konfiguratsiooni haldamine? Skeemiliselt nÀeb see lihtne vÀlja:
- VM-idele mÀÀrati staatiline MAC.
- VM-ile ĂŒhendati ISO CoreOS ja kĂ€ivitusdisk.
- CoreOS kÀivitab kohandamise skripti, laadides selle alla veebiserverist vastavalt oma IP-le.
- Skript tÔmbab lÀbi SCP VM konfiguratsiooni, lÀhtudes IP-aadressist.
- KĂ€ivitub hulk systemd unit faile ja rida bash skripte.

Sellel lahendusel oli palju ilmselgeid probleeme:
- ISO CoreOS-is oli deprecated.
- Palju keerulisi automatiseeritud toiminguid ja maagia VM-ide migreerimisel/loomisel.
- Probleem uuendamisel ja kui vajalik on teatud versiooni tarkvara. Veelgi keerulisem oli tuumamoodulite puhul.
- VM-id ei olnud nii andmeteta, st ilmusid VM-id, millel oli lisaks monteeritud kettad kasutajate andmetega.
- Keegi eksis pidevalt systemd uniti sÔltuvustega ja CoreOS hangus taaskÀivitamisel. KÀesolevad vahendid CoreOS-is selle tabamiseks olid problemaatilised.
- Salajase haldamine.
- CM ei olnud sisuliselt olemas. Oli bash ja YML konfiguratsioonid CoreOS-is.
Kuna VM-i konfiguratsiooni rakendamiseks tuleb seda taaskĂ€ivitada, vĂ”is see mitte taaskĂ€ivituda. Tundub, et see on ilmne probleem, kuid pĂŒsiandmeid pole â logisid ei saa sĂ€ilitada. No hĂ€sti, proovime lisada kernelilaadimisvalikuid, et logid edastataks. Kuid ei, see on kĂ”ik nii keeruline.
PĂ€ev â0: Probleemi tunnustamine

See oli tavaline arenduste infrastruktuur: jenkins, testkeskkonnad, jÀlgimised, registrid. CoreOS oli mÔeldud k8s-klastrite majutamiseks, st probleem oli selles, kuidas CoreOS'i kasutati. Esimene samm oli steki valimine. Peatusime:
- CentOS kui pÔhijagamine, kuna see on kÔige lÀhemal tootmisreaktsioonidele.
- Ansible konfiguratsioonide haldamiseks, kuna selle kohta oli suur ekspertteave.
- Jenkinsile automaatika raamistikuna olemasolevate protsesside jaoks, kuna seda kasutati juba aktiivselt arendusprotsesside jaoks.
- Hyper-V virtualiseerimise platvormina. On mitmeid pĂ”hjuseid, mis ĂŒletavad jutustamise ulatust, kuid lĂŒhidalt - me ei saa kasutada pilvi, peame kasutama oma riistvara.
PĂ€ev nr 30: Fikseerime olemasolevad kokkulepped - Agreements as Code

Kui stek oli selge, algas ĂŒleviimise ettevalmistamine. Olemasolevate kokkulepetega koodina fikseerimine (Agreements as Code!). Ăleminek kĂ€sitöö -> mehhaniseerimine -> automaatika.
1. Konfigureeri VM-id

Ansible teeb selle töö suurepÀraselt Àra. Minimaalse vaevaga saab hallata VM-i konfiguratsioone:
- Loo git-repositoorium.
- Paigutame VM-ide nimekirja inventuuri, konfiguratsioonid mÀngude ja rollidena.
- Seadistame spetsiaalse jenkins slave'i, mille kaudu saab ansible'it kÀivitada.
- Loome töö, seadistame Jenkins'i.
Esimene protsess on valmis. Kokkulepped on fikseeritud.
2. Loo uus VM

Siin polnud kĂ”ik vĂ€ga mugav. Linuxist oli ebamugav luua VM-e Hyper-V-s. Ăks katse selle protsessi mehhaniseerimiseks oli:
- Ansible ĂŒhendub WinRM kaudu Windowsi hostiga.
- Ansible kÀivitab powershell skripti.
- Powershell skript loob uue VM.
- Hyper-V/ScVMM vahenditega seadistatakse vm-i loomisel kĂŒlgoperatsioonis hostname.
- VM saadab uuendades DHCP lease oma hostname'i.
- Eramud integreerimine ddns & dhcp Domaanikontrolleri poole seadistab DNS-i kirje.
- VM-id saab lisada inventuuri ja nende anabse'it seadistada.
3. Loo VM-i mall

Siin ei hakatud midagi leiutama - vÔeti packer.
- Git-repositooriumisse paneme packer'i konfi ja kickstart'i.
- Seadistame spetsiaalse jenkins slave'i hyper-v ja Packer'iga.
- Loome töö, seadistame Jenkins'i.
Kuidas see kombinatsioon töötab:
- Packer loob tĂŒhja VM-i, ĂŒhendab ISO-d.
- VM kÀivitub, Packer annab laadimisprogrammile kÀsu kasutada meie kickstart faili diskettidelt vÔi http-st.
- Anaconda kÀivitub meie konfiguratsiooniga, tehakse algseadistus OS-ile.
- Packer ootab VM-i kÀttesaadavust.
- Packer kĂ€ivitab VM-is ansible'i kohalikus reĆŸiimis.
- Ansible kasutab samu rolle nagu 1. sammus.
- Packer ekspordib VM-i ĆĄablooni.
PĂ€ev â75: Refaktoreerime kokkuleppeid, rikkumata = Testi ansible + Testkitchen

Kokkulepete koodiks fikseerimine vĂ”ib olla ebapiisav. Kui sa tahad protsessi kĂ€igus midagi muuta â vĂ”id midagi purustada. SeetĂ”ttu ilmneb infrastruktuuri testimise vajadus. Meie tiimis, et teadmisi sĂŒnkroniseerida, hakkasime testima Ansible rolle. Ei hakka sĂŒvitsi minema, sest on artikkel, mis kirjeldab tol ajal toimunud sĂŒndmusi. (spoiler: see ei olnud lĂ”plik variant ja hiljem lĂ€ks kĂ”ik keerulisemaks) ).
PĂ€ev â130: Kas CentOS+ansible polegi vajalik? Ăkki openshift?
Tuleb mĂ”ista, et infrastruktuuri kaasamise protsess ei olnud ainus ja tekkis kĂ”rvalprojekte. NĂ€iteks saime taotluse meie rakenduse kĂ€ivitamiseks openshiftis ja see kujunes vĂ€lja uuringuteks, mis kestsid ĂŒle nĂ€dala. mis aeglustas ĂŒlemineku protsessi. Tulemuseks selgus, et openshift ei kata kĂ”iki vajadusi, vajalik on reaalne riistvara, vĂ”i vĂ€hemalt vĂ”imalus tuuma katsetamiseks.
PĂ€ev â170: Openshift ei sobi, kas riskime Windows Azure Packiga?

Hyper-V ei ole just sĂ”bralik, SCVMM ei tee seda palju paremaks. Kuid olemas on selline asi nagu Windows Azure Pack, mis on SCVMM-i pealiskonstruktsioon ja jĂ€ljendab Azure'i. Kuid tegelikkuses nĂ€eb toode vĂ€lja mahajĂ€etud: dokumentatsioon katkendlike linkidega ja ĂŒsna napp. Kuid meie pilve elu lihtsustamise valikute uurimise raames vaatasime ka seda.
PĂ€ev â250: Windows Azure Pack ei ole just parim. JÀÀme SCVMM-ile.

Windows Azure Pack nĂ€gi vĂ€lja paljutĂ”otav, kuid otsustati mitte tuua WAP-i oma sĂŒsteemi selle keerukustega tarbetute funktsioonide tĂ”ttu ja jÀÀda SCVMM-ile.
PĂ€ev â360: Sööme elevanti tĂŒkkide kaupa.

Alles aasta pĂ€rast oli platvorm, kuhu kolida, valmis ja algas ĂŒlemineku protsess. Selleks pandi paika S.M.A.R.T. ĂŒlesanne. KĂ”ik VM-id loetleti ja hakati ĂŒks haaval nende konfigureerimisega tegelema, kirjeldama seda Ansible'is ning katma testidega.
PĂ€ev â450: Milline sĂŒsteem vĂ€lja kujunes?

Protsess ise ei ole huvitav. See on rutiinne, vÔib mÀrkida, et enamik konfiguratsioone olid suhteliselt lihtsad vÔi isomorfsed ja Pareto printsiibi jÀrgi lÀks 80% konfiguratsioonide jaoks 20% ajast. Sama printsiibi kohaselt kulus 80% ajast koristustööde ettevalmistamiseks ja ainult 20% ise kolimiseks.
PĂ€ev nr 540: Finaal

Mis toimub 18 kuu jooksul?
- Kokkulepped muutusid koodiks.
- KÀsitöö -> Mehaaniseerimine -> Automatiseerimine.
Links
Allikas: habr.com
