Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Kjo është transcripti i fjalimit në DevopsConf 2019-10-01 dhe SPbLUG 2019-09-25.

Kjo është historia e projektit, ku u përdor një sistem i personalizuar për menaxhimin e konfiguracioneve dhe pse kalimi në Ansible zgjati 18 muaj.

Dita № -XXX: Para fillimit

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Fillimisht infrastruktura përbëhej nga shumë hoste të veçanta nën menaxhimin e Hyper-V. Krijimi i një makine virtuale kërkonte shumë veprime: vendosjen e disqeve në vendin e duhur, konfigurimin e DNS, rezervimin e DHCP, vendosjen e konfiguracionit të VM në një depo git. Ky proces ishte pjesërisht mekanizuar, por për shembull, VM-të shpërndaheshin mes hosteve me duar. Megjithatë, zhvilluesit mund të aplikonin ndryshimet në konfiguracionin e VM në git duke e ribërë atë pas një rindezjeje të VM.

Zgjidhje e Personalizuar për Menaxhimin e Konfiguracioneve

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Ideja fillestare, besoj, ishte menduar si IaC: shumĂ« VM stateless, tĂ« cilat pas rindezjes resetonin gjendjen e tyre. ÇfarĂ« pĂ«rfshinte menaxhimi i konfiguracioneve tĂ« VM? Duket e thjeshtĂ« nĂ« katror:

  1. Për VM-të ishte vendosur MAC statik.
  2. VM-të ishin lidhur me ISO me CoreOS dhe diskun e ngarkesës.
  3. CoreOS ekzekuton skripti i personalizimit duke e shkarkuar atë nga serveri WEB në bazë të IP-së së tij.
  4. Skripti shkarkon përmes SCP konfigurimin e VM duke u bazuar në adresën IP.
  5. Aktivizohet një sërë skedarësh unit systemd dhe një sërë skriptesh bash.

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Ky zgjidhje kishte shumë probleme të dukshme:

  1. ISO në CoreOS ishte e hequr.
  2. Shumë veprime të komplikuara automatizimi dhe magji gjatë migrimit/krijimit të VM.
  3. Vështirësi me përditësimin dhe kur kërkohej një version i caktuar të softuerit. Akoma më argëtuese me modulet e bërthamës.
  4. VM-të nuk rezultonin aq të pa të dhëna, dmth. u shfaqën VM me një disk të montuar me të dhëna përdoruesi përveç.
  5. Dikush gjithmonë gabonte me varësitë e unit systemd dhe në ri-nisjen CoreOS ngadalësohej. Ishte problem për të zbuluar këtë me mjetet ekzistuese në CoreOS.
  6. Menaxhimi i sekreteve.
  7. CM nuk ekzistonte faktikisht. Kishim bash dhe konfigurimet YML të CoreOS.

Për të aplikuar konfigurimin e VM-së duhet ta ri-nisim, por ajo mund të mos ri-niset. Megjithëse dukej si një problem i dukshëm, nuk kishte disqe persistente - nuk kishte ku të ruheshin log-et. Po mire, le të përpiqemi të shtojmë opsionet e ngarkimit të bërthamës për të dërguar log-et. Por jo, sa e vështirë është gjithçka.

Dita e parë: Pranimi i problemit

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Ishte një infrastrukturë e zakonshme zhvillimi: jenkins, mjedise testimi, monitorime, registry. CoreOS ishte menduar për hostimin e klastereve k8s, domethënë, problemi ishte se si përdorej CoreOS. Hapi i parë ishte seçja e stekës. Ne vendosëm për:

  1. CentOS si distribucionin bazë, pasi është distribucioni më i afërt me mjediset e prodhimit.
  2. Ansible për menaxhimin e konfiguracioneve, pasi kishte një ekspertizë të gjerë.
  3. Jenkins si një kornizë automatizimi të proceseve ekzistuese, pasi ishte përdorur tashmë aktivisht për proceset e zhvillimit.
  4. Hyper-V si platformĂ« virtualizimi. Ka disa arsye qĂ« shkojnĂ« pĂ«rtej tregimit, por nĂ« mĂ«nyrĂ« tĂ« shkurtĂ«r — ne nuk mund tĂ« pĂ«rdorim cloud, duhet tĂ« pĂ«rdorim hardware-in tonĂ«.

Dita №30: Fiksimi i marrĂ«veshjeve ekzistuese — Agreements as Code

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Kur u kuptua steka, filloi përgatitja për kalimin. Fiksimi i marrëveshjeve ekzistuese në formën e kodit (Agreements as Code!). Kalimi punë parapërgatitore -> mekanizimi -> automatizimi.

1. Konfiguroni VM-të

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Ansible e menaxhon këtë detyrë shumë mirë. Me pak përpjekje, mund të nxjerrim nën kontroll konfiguracionet e VM-ve:

  1. Krijoni një repozitor git.
  2. Krijtojmë listën e VM-ve në inventory, konfigurimet në playbooks dhe role.
  3. Konfigurojmë një slave të veçantë të jenkins nga i cili mund të ekzekutojmë ansible.
  4. Krijojmë një punë, konfigurojmë Jenkins.

Procesi i parë është gati. Marrëveshjet janë fixuar.

2. Krijo VM të re

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Isha paksa i pakënaqur. Nga Linux nuk ishte shumë e lehtë të krijoheshin VM në Hyper-V. Një nga përpjekjet për të mekanizuar këtë proces ishte:

  1. Ansible lidhet përmes WinRM me hostin windows.
  2. Ansible ekzekuton skenarin powershell.
  3. Skenari powershell krijon një VM të re.
  4. Me mjetet Hyper-V/ScVMM gjatë krijimit të VM-së në sistemin e ftuar, konfigurohet hostname.
  5. VM-ja, gjatë përditësimit të DHCP lease, dërgon hostname-n e saj.
  6. Integrimi i standardizuar i ddns & dhcp në anën e Domain Controller konfiguron regjistrimin DNS.
  7. Mund të shtoni VM në inventory dhe ta konfiguroni atë me Ansible.

3. Krijo template VM

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

KĂ«tu nuk bĂ«mĂ« asgjĂ« origjinale — pĂ«rdorĂ«m packer.

  1. Në depozitën git vendosim konfigurimin e packer, kickstart.
  2. Konfigurojmë një slave të veçantë të jenkins me hyper-v dhe Packer.
  3. Krijojmë një punë, konfigurojmë Jenkins.

Si funksionon kjo lidhje:

  1. Packer krijon një VM të zbrazët, lidh ISO-n.
  2. VM-ja ngarkohet, Packer jep komandën për të përdorur skedarin tonë kickstart nga disku ose http.
  3. Anaconda nis me konfigurimin tonë, bëhet konfigurimi fillestar i OS.
  4. Packer pret deri sa VM-ja të bëhet e aksesueshme.
  5. Packer brenda VM запусĐșа ansible nĂ« modalitetin lokal.
  6. Ansible përdor të njëjtat role si në hapin nr. 1.
  7. Packer eksporton modelin e VM.

Dita nr. 75: Ristrukturojmë marrëveshjet pa thyer = Testo ansible + Testkitchen.

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

TĂ« fiksohesh marrĂ«veshjet nĂ« kod mund tĂ« mos mjaftojĂ«. Sepse nĂ«se nĂ« prapaskenĂ« dĂ«shiron tĂ« ndryshosh diçka — mund tĂ« thysh diçka. Prandaj nĂ« rastin e infrastrukturĂ«s, testimi i kĂ«saj infrastrukture paraqitet. PĂ«r tĂ« sinkronizuar njohuritĂ« brenda ekipit filluam tĂ« testojmĂ« rolet Ansible. Nuk do tĂ« thellojmĂ«, pasi ka njĂ« artikull qĂ« pĂ«rshkruan ngjarjet nĂ« atĂ« moment. MĂ« testoni nĂ«se mund tĂ« porositeni ose a Ă«ndĂ«rrojnĂ« programuesit YML pĂ«r testimin ansible?(spoiler, ky nuk ishte versioni pĂ«rfundimtar dhe mĂ« vonĂ« gjithçka u bĂ« mĂ« e komplikuar). Si tĂ« fillosh tĂ« testosh Ansible, tĂ« ristrukturosh projektin pĂ«r njĂ« vit dhe tĂ« mos bĂ«sh çmenduri.).

Dita nr. 130: Ndoshta CentOS + ansible nuk është i nevojshëm? ndoshta openshift?

Duhet tĂ« kuptohet se procesi i integrimit tĂ« infrastrukturĂ«s nuk ishte e vetmja dhe kishte projekte anĂ«sore. PĂ«r shembull, erdhi njĂ« kĂ«rkesĂ« pĂ«r ta drejtuar aplikacionin tonĂ« nĂ« openshift dhe kjo rezultoi nĂ« kĂ«rkime pĂ«r mĂ« shumĂ« se njĂ« javĂ«. Nisim njĂ« aplikacion nĂ« Openshift dhe krahasojmĂ« mjetet ekzistuese. Çka vonoi procesin e migrimit. Si rezultat, doli se Openshift nuk i plotĂ«son tĂ« gjitha nevojat, na nevojitet harduer i vĂ«rtetĂ«, ose tĂ« paktĂ«n mundĂ«sia pĂ«r tĂ« luajtur me kernelin.

Dita №170: Openshift nuk Ă«shtĂ« i pĂ«rshtatshĂ«m, a do tĂ« rrezikojmĂ« me Windows Azure Pack?

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Hyper-V nuk është shumë miqësor, SCVMM nuk e bën atë shumë më të mirë. Por ekziston një gjë e tillë, Windows Azure Pack, e cila është një shtresë mbi SCVMM dhe i ngjan Azure. Por në realitet, produkti duket si i braktisur: dokumentacioni me lidhje të prishura dhe mjaft i varfër. Megjithatë, brenda hulumtimit të mundësive për të lehtësuar jetën tonë në cloud, e kemi shqyrtuar edhe atë.

Dita №250: Windows Azure Pack nuk Ă«shtĂ« shumĂ«. QĂ«ndrojmĂ« me SCVMM.

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Windows Azure Pack dukej premtues, por u vendos të mos sjellim WAP me kompleksitetet e tij në sistem për shkak të veçorive të panevojshme dhe mbetëm me SCVMM.

Dita №360: Hame elefantin pjesĂ«-pjesĂ«.

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Vetëm një vit më vonë platforma ku duhej të migronim ishte gati dhe filloi procesi i migrimit. Për këtë, u vendos një detyrë S.M.A.R.T. Shkruam të gjitha VM-të dhe filluam të merremi me konfiguracionin, ta përshkruajmë atë në Ansible, ta mbulojmë me teste.

Dita №450: ÇfarĂ« sistemi Ă«shtĂ« arritur?

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

Procesi nuk është interesant. Ai është rutinë; mund të theksohet se shumica e konfigurimeve ishin relativisht të thjeshta ose izomorfe, dhe sipas parimit të Pareto, 80% e konfigurimeve kërkuan 20% të kohës. Po ashtu, 80% e kohës u shpenzuan për përgatitjen e transferimit dhe vetëm 20% për vetë transferimin.

Dita №540: Finale

Ansible: Migrimi i konfiguracionit të 120 VM nga CoreOS në CentOS brenda 18 muajve

ÇfarĂ« ndodhi gjatĂ« 18 muajve?

  1. Marrëveshjet u bënë kod.
  2. Punë manuale -> Mekanizim -> Automatizimi.

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster