Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

See on kõne ärakiri DevopsConf 2019 и SPbLUG 2019-09-25.

See on lugu projektist, mis kasutas ise kirjutatud konfiguratsioonihaldussüsteemi ja miks Ansible'i üleminek võttis aega 18 kuud.

Päev nr -ХХХ: Enne algust

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Algselt koosnes infrastruktuur paljudest eraldi hostidest, mis käitasid Hyper-V-d. Virtuaalse masina loomine nõudis mitmeid samme: ketaste õigesse kohta paigutamine, DNS registreerimine, DHCP reserveerimine, VM konfiguratsiooni git repositooriumisse panemine. See protsess oli osaliselt mehhaniseeritud, kuid näiteks VM-id jaotati hostide vahel käsitsi. Kuid näiteks võivad arendajad parandada VM-i konfiguratsiooni gitis ja rakendada seda VM-i taaskäivitamisega.

Kohandatud konfiguratsioonihalduslahendus

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Arvan, et algne idee loodi IaC-na: paljud olekuta VM-id, mis lähtestavad taaskäivitamisel oma oleku nulli. Mis oli VM-i konfiguratsioonihaldus? Skemaatiliselt tundub see lihtne:

  1. VM-i jaoks naelutati staatiline MAC.
  2. VM-iga ühendati CoreOS-iga ISO ja alglaadimisketas.
  3. CoreOS käivitab kohandamisskripti, laadides selle alla veebiserverist selle IP alusel.
  4. Skript laadib IP-aadressi põhjal alla VM-i konfiguratsiooni SCP kaudu.
  5. Käivitatakse systemd-üksuse failide jalalapp ja bash-skriptide jalalapp.

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Sellel lahendusel oli palju ilmseid probleeme:

  1. CoreOS ISO tugi on aegunud.
  2. VM-ide migreerimisel/loomisel palju keerulisi automatiseeritud toiminguid ja maagiat.
  3. Raskused värskendamisel ja kui on vaja teatud tarkvaraversiooni. Kerneli moodulitega veelgi lõbusam.
  4. VM-e ei saadud nii ilma andmeteta, st. VM-id ilmusid kettaga, millele oli paigaldatud täiendavad kasutajaandmed.
  5. Keegi keeras pidevalt süsteemiüksuse sõltuvusi üles ja CoreOS külmutas taaskäivitamisel. CoreOS-is saadaolevate tööriistade abil oli seda raske tabada.
  6. Saladuste haldamine.
  7. CM-i ei olnud. CoreOS-i jaoks olid bash ja YML konfiguratsioonid.

VM-i konfiguratsiooni rakendamiseks peate selle taaskäivitama, kuid see ei pruugi taaskäivitada. Tundub ilmselge probleem, kuid püsivaid kettaid pole - logisid pole kuhugi salvestada. Noh, ok, proovime lisada kerneli laadimise võimaluse, et logid saadetakse. Aga ei, kui keeruline see kõik on.

Päev nr 0: teadvustage probleem

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

See oli tavaline arendustaristu: jenkinid, testkeskkonnad, monitooring, register. CoreOS oli mõeldud k8s klastrite majutamiseks, st. probleem oli selles, kuidas CoreOS-i kasutati. Esimene samm oli virna valimine. Leppisime kokku:

  1. CentOS baasjaotusena, sest See on tootmiskeskkondadele lähim jaotus.
  2. Võimalik konfiguratsiooni haldamiseks, sest selle kohta tehti põhjalik uurimine.
  3. Jenkins raamistikuna olemasolevate protsesside automatiseerimiseks, sest seda on arendusprotsessides juba aktiivselt kasutatud
  4. Hyper-V virtualiseerimisplatvormina. On mitmeid põhjuseid, mis lähevad loo raamest välja, aga lühidalt – me ei saa kasutada pilvi, me peame kasutama oma riistvara.

Päev nr 30: Olemasolevate lepingute fikseerimine – Lepingud kui koodeks

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Kui stäkk selge, algasid kolimise ettevalmistused. Olemasolevate lepingute parandamine koodi kujul (Lepingud koodina!). Üleminek käsitsitöö -> mehhaniseerimine -> automatiseerimine.

1. VM-ide seadistamine

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Ansible saab sellega suurepäraselt hakkama. Minimaalsete kehaliigutustega saate VM-i konfiguratsioone juhtida.

  1. Looge git-hoidla.
  2. Panime VM-ide loendi inventari, konfiguratsioonid mänguraamatutesse ja rollidesse.
  3. Seadistame spetsiaalse jenkinsi orja, millest saate Ansible'i käivitada.
  4. Loome töökoha ja konfigureerime Jenkinsi.

Esimene protsess on valmis. Kokkulepped on fikseeritud.

2. Looge uus VM

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Kõik siin ei olnud eriti mugav. Linuxist Hyper-V peal VM-e luua pole kuigi mugav. Üks katsetest seda protsessi mehhaniseerida oli:

  1. Ansbile ühendub WinRM-i kaudu Windowsi hostiga.
  2. Ansible käitab powershelli skripti.
  3. Powershelli skript loob uue VM-i.
  4. Kasutades Hyper-V/ScVMM-i, konfigureeritakse külaliste OS-is VM-i loomisel hostinimi.
  5. DHCP-liisingu värskendamisel saadab VM oma hostinime.
  6. Standardne ddns & dhcp integratsioon domeenikontrolleri poolel konfigureerib DNS-kirje.
  7. Saate lisada oma laoseisule VM-i ja konfigureerida selle rakendusega Ansible.

3. Looge VM-mall

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Nad ei leiutanud siin midagi - nad võtsid pakkija.

  1. Lisage pakkija, käivitage konfiguratsioon git-hoidlasse.
  2. Spetsiaalse jenkinsi orja seadistamine koos hyper-v ja Packeriga.
  3. Loome töökoha ja konfigureerime Jenkinsi.

Kuidas see link töötab:

  1. Packer loob tühja VM-i ja valib ISO.
  2. VM käivitub, Packer sisestab alglaadurisse käsu, et kasutada meie kickstart-faili disketilt või http-lt.
  3. Anaconda käivitatakse meie konfiguratsiooniga ja OS-i esialgne konfiguratsioon on tehtud.
  4. Packer ootab, kuni VM on saadaval.
  5. VM-i sees olev pakkija töötab kohalikus režiimis.
  6. Ansible kasutab täpselt samu rolle, mida ta töötab toimingus nr 1.
  7. Packer ekspordib VM-i malli.

75. päev: muutke kokkulepet rikkumata = katsetage võimalik + Testköök

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Konventsioonide hõivamisest koodis ei pruugi piisata. Lõppude lõpuks, kui protsessi läbi ja lõhki tahate midagi muuta, võite midagi katki teha. Seetõttu ilmneb infrastruktuuri puhul just selle infrastruktuuri testimine. Meeskonnas teadmiste sünkroonimiseks alustasime Ansible rollide testimist. Ma ei hakka süvenema, sest... on artikkel, mis kirjeldab sündmusi sel ajahetkel Testige mind, kas saate või unistavad YML-i programmeerijad Ansible testimisest?(spoiler, see ei olnud lõplik versioon ja hiljem muutus kõik keerulisemaks Kuidas Ansible testimist alustada, projekt aasta pärast ümber ja mitte hulluks minna).

Päev nr 130: võib-olla pole CentOS+ansible'i vaja? äkki openshift?

Peame mõistma, et taristu juurutamise protsess polnud ainuke ja seal oli kõrvalalaprojekte. Näiteks tuli taotlus käivitada meie rakendus openshiftis ja selle tulemuseks oli üle ühe nädala kestnud uurimistöö Käivitame rakenduse Openshiftis ja võrdleme olemasolevaid tööriistu mis aeglustas liikumisprotsessi. Tulemuseks selgus, et openshift ei kata kõiki vajadusi, vaja on päris riistvara või vähemalt kerneliga mängimise võimalust.

Päev #170: Openshift ei sobi, kas võtame võimaluse Windows Azure Packiga?

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Hyper-V ei ole väga sõbralik, SCVMM ei tee seda palju paremaks. Kuid on olemas selline asi nagu Windows Azure Pack, mis on SCVMM-i lisand ja jäljendab Azure'i. Kuid tegelikkuses näeb toode välja hüljatud: dokumentatsioonis on katkised lingid ja see on väga hõre. Kuid meie pilve eluea lihtsustamise võimaluste uurimise raames vaatasid nad ka seda.

Päev 250: Windows Azure Pack pole eriti hea. Jääme SCVMM-i juurde

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Windows Azure Pack tundus paljulubav, kuid otsustati mittevajalike funktsioonide huvides WAP-i koos selle keerukusega süsteemi tuua ja jäi SCVMM-i juurde.

Päev 360: elevandi söömine tükkhaaval

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Alles aasta hiljem oli kolimise platvorm valmis ja kolimisprotsess algas. Selleks paigaldati S.M.A.R.T. ülesanne. Vaatasime kõik VM-id üle ja hakkasime ükshaaval konfiguratsiooni välja mõtlema, Ansibles kirjeldama ja testidega katma.

Päev 450: Millise süsteemi sa said?

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Protsess ise pole huvitav. See on rutiinne, võib märkida, et enamik konfiguratsioone olid suhteliselt lihtsad või isomorfsed ja Pareto põhimõtte kohaselt nõudis 80% VM-i konfiguratsioonidest 20% ajast. Samal põhimõttel kulus 80% ajast kolimise ettevalmistamisele ja ainult 20% liikumisele endale.

Päev #540: finaal

Võimalik: 120 VM-i konfiguratsiooni migreerimine CoreOS-ist CentOS-i 18 kuu jooksul

Mis juhtus 18 kuu jooksul?

  1. Kokkulepetest sai koodeks.
  2. Käsitöö -> Mehhaniseerimine -> Automaatika.

Allikas: www.habr.com

Lisa kommentaar