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

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

Ky është një përmbledhje e fjalimit në DevopsConf 2019-10-01 dhe SPbLUG 2019-09-25.

Kjo është historia e projektit, në të cilin u përdor një sistem i shkruar nga vetë për menaxhimin e konfigurimeve dhe si u zgjat kalimi në Ansible për 18 muaj.

Dita № -XXX: Para fillimit

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

Fillimisht, infrastruktura përbënte një numër hostesh të veçuar 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 i mekanizuar, por për shembull, makinat virtuale shpërndaheshin midis hosteve manualisht. Megjithatë, për shembull, zhvilluesit mund të modificonin konfigurimin e VM në git dhe ta aplikonin duke rinisur VM.

Zgjidhje e Personalizuar për Menaxhimin e Konfigurimeve

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

Ideja fillestare, e dyshoj, ishte menduar si IaC: shumë VM pa gjendje, të cilat, pas rinisjes, e rikthenin gjendjen e tyre në null. Si dukej menaxhimi i konfigurimeve të VM? Schematisht duket thjeshtë:

  1. Për VM, u vendos një MAC statik.
  2. VM-at u lidhën me ISO me CoreOS dhe diskun e bërë për t'u ngarkuar.
  3. CoreOS nis një skript personalizimi duke e shkarkuar atë nga një server 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. Nisin një sërë skedarësh systemd unit dhe një sërë skriptesh bash.

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

Ky zgjidhje kishte shumë probleme të dukshme:

  1. ISO në CoreOS ishte e deprecated.
  2. Shumë veprime dhe magji të ndërlikuara gjatë migrimit/krijimi të VM.
  3. Vështirësi në përditësim dhe kur është e nevojshme të ketë një version të caktuar të softuerit. Edhe më zbavitëse me modulet e bërthamës.
  4. VM-të nuk ishin aq pa të dhëna, pra, dolën VM që patën disqe të montuara me të dhëna nga përdoruesit përveç kësaj.
  5. Përherë dikush bënte gabime me varësitë e unit systemd dhe në rinisjen e CoreOS ngeciste. Ishte problematike të kapje këtë me mjetet ekzistuese në CoreOS.
  6. Menaxhimi i sekreteve.
  7. CM pothuajse nuk kishte. Kishim bash dhe konfigurime YML të CoreOS.

PĂ«r tĂ« aplikuar konfigurimin e VM, ishte e nevojshme ta rinisje, por ajo mund tĂ« mos rinisej. Dukej si njĂ« problem i qartĂ«, por nuk kishte disqe tĂ« vazhdueshme — nuk kishte ku tĂ« ruhej logun. MirĂ«, le tĂ« pĂ«rpiqemi tĂ« shtojmĂ« opsione tĂ« ngarkesĂ«s sĂ« bĂ«rthamĂ«s qĂ« logjet tĂ« dĂ«rgoheshin. Por jo, sa e komplikuar ishte gjithçka.

Dita №0: Pranimi i problemit

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

Ishte një infrastrukturë e zakonshme zhvillimi: jenkins, ambientet testuese, monitorimet, registry. CoreOS ishte menduar për hostimin e klastereve k8s, pra problemi ishte se si përdorej CoreOS. Hapi i parë ishte zgjedhja e stack-ut. Ne u ndalëm tek:

  1. CentOS si distribucion bazik, pasi është distribuicioni më i afërt me ambientet e prodhimit.
  2. Ansible për menaxhimin e konfigurimeve, pasi kishte një ekspertizë të gjerë për të.
  3. Jenkins si një framework automatik për proceset ekzistuese, pasi ishte tashmë aktivisht i përdorur për proceset e zhvillimit.
  4. Hyper-V si platformĂ« virtualizimi. Ka disa arsye, tĂ« cilat dalin pĂ«rtej tregimit, por nĂ«se e pĂ«rmbledhim — nuk mund tĂ« pĂ«rdorim cloud, duhet tĂ« pĂ«rdorim harduerin tonĂ«.

Dita №30: FiksojmĂ« marrĂ«veshjet ekzistuese — Agreements as Code

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

Kur u kuptua stack-u, filloi përgatitja për transferimin. Fiksimi i marrëveshjeve ekzistuese në formën e kodit (Agreements as Code!). Kalimi punë manuale -> makinazhuar -> automatizimi.

1. Konfiguro VMs

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

Ansible e bën këtë detyrë mjaft mirë. Me minimumin e lëvizjeve mund të marrim në menaxhim konfigurimet e VM-ve:

  1. Krijojmë një repository git.
  2. Vendosim listën e VM-ve në inventory, konfigurimet në playbooks dhe role.
  3. Konfigurojmë një jenkins slave të veçantë nga e cila mund të nisnim ansible.
  4. Krijojmë një job, konfigurojmë Jenkins.

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

2. Krijo VM të re

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

Këtu nuk ishte shumë e lehtë. Nga Linux nuk është shumë e lehtë të krijosh VM në Hyper-V. Një nga përpjekjet për të makinizuar këtë proces ishte:

  1. Ansible lidhet përmes WinRM me hostin windows.
  2. Ansible ekzekuton skriptin powershell.
  3. Skripti Powershell krijon një VM të re.
  4. Me mjete Hyper-V/ScVMM gjatë krijimit të VM-së në OS të mysafirëve, konfiguroni hostname.
  5. VM në azhurnimin e DHCP lease dërgon hostname-in e saj.
  6. Integrimi i zakonshëm ddns & dhcp në anën e Domain Controller konfiguron regjistrin DNS.
  7. Mund të shtoni VM në inventar dhe të konfiguroni Ansible për të.

3. Krijo template të VM

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

KĂ«tu nuk u shpik asgjĂ« — morĂ«m packer.

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

Si funksionon ky bashkëpunim:

  1. Packer krijon një VM bosh, lidh ISO.
  2. VM ngarkohet, Packer fut në ngarkues komandën për të përdorur skedarin tonë kickstart nga disku ose http.
  3. Anaconda me konfigurimin tonë nis inicializimin e OS.
  4. Packer pret në dispozicionin e VM-së.
  5. Packer brenda VM-së nis ansible në modin lokal.
  6. Ansible pĂ«rdor tĂ« njĂ«jtat role si nĂ« hapin №1.
  7. Packer eksporton ŃˆĐ°Đ±Đ»ĐŸĐœin e VM.

Dita №75: RiorganizojmĂ« marrĂ«veshjet pa prishur = Testo ansible + Testkitchen

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

Të ngulisim marrëveshjet në kod mund të mos jetë e mjaftueshme. Në fund të fundit, nëse në thellësi të procesit dëshiron të ndryshosh diçka, mund të prishësh diçka. Prandaj, në rastin e infrastrukturës kemi nevojë për testimin e kësaj infrastrukture. Për të sinkronizuar njohuritë brenda ekipit filluam të testonim rolet e Ansible. Nuk do të thellohem sepse ekziston një artikel që përshkruan ngjarjet në atë kohë. Më testo nëse mundesh ose ëndërrojnë YML programuesit për testimin e ansible?(spoiler, kjo nuk ishte versione përfundimtare dhe më vonë gjithçka u bë më komplekse) Si të fillojmë të testojmë Ansible, të riorganizojmë projektin pas një viti dhe të mos dalim nga mendja.).

Dita №130: A Ă«shtĂ« CentOS + ansible i panevojshĂ«m? Ndoshta openshift?

Duhet të kuptojmë se procesi i integrimit të infrastrukturës nuk ishte i vetmi dhe kishte projekte anësore. Për shembull, erdhi një kërkesë për të lançuar aplikacionin tonë në Openshift dhe kjo shkaktoi hulumtime që zgjatën më shumë se një javë. Loksionojmë aplikacionin në Openshift dhe krahasojmë mjetet ekzistuese. çfarë e ngadalësoi procesin e migrimit. Rezultati doli se openshift nuk mbulon të gjitha nevojat, është e nevojshme një hardware real, ose të paktën të kemi mundësinë të luajmë me kernelin.

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

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

Hyper-V nuk është shumë miqësor, SCVMM nuk e bën shumë më të mirë. Por ka një gjë të tillë si Windows Azure Pack, e cila është një shtresë mbi SCVMM dhe imiton Azure. Por realisht produkti duket i braktisur: dokumentacioni me lidhje të prishura dhe shumë i varfër. Por në kuadër të hulumtimit të mundësive për të lehtësuar jetën e cloud-it tonë 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 muajsh

Windows Azure Pack dukej shumë premtues, por u vendos që 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: HamĂ« elefantin nĂ« copa.

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

Vetëm pas një viti platforma ku do të migronim ishte gati dhe filloi procesi i migrimit. Për këtë ishte vendosur një detyrë S.M.A.R.T. Përshkruam të gjitha VM-të dhe filluam të merremi me konfigurimin një nga një, ta përshkruajmë atë në Ansible dhe ta mbulojmë me teste.

Dita №450: ÇfarĂ« sistemi u krijua?

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

Procesi vetë nuk është i interesant. Ai është rutinë, mund të theksojmë se shumica e konfigurimeve ishin relativisht të thjeshta ose izomorfe dhe sipas parimit të Pareto, 80% e konfigurimeve kërkoi 20% të kohës. Në të njëjtin parim, 80% e kohës kaloi për përgatitjen e shpërnguljes dhe vetëm 20% për shpërnguljen vetë.

Dita №540: Finale

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

ÇfarĂ« ndodhi pĂ«r 18 muajt?

  1. Marrëveshjet u bënë kod.
  2. Puna manuale -> Mekanizimi -> Automatizimi.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster