Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Dëst ass en Transkript vun der Ried DevopsConf 2019-10-01 и SPbLUG 2019-09-25.

Dëst ass d'Geschicht vun engem Projet deen e selbstgeschriwwene Konfiguratiounsmanagementsystem benotzt huet a firwat de Beweegung op Ansible 18 Méint gedauert huet.

Dag Nee -ХХХ: Virum Ufank

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Am Ufank bestoung d'Infrastruktur aus villen separaten Hosten déi Hyper-V lafen. D'Erstelle vun enger virtueller Maschinn erfuerdert vill Schrëtt: d'Disken op déi richteg Plaz setzen, DNS registréieren, DHCP reservéieren, d'VM Konfiguratioun an de Git Repository setzen. Dëse Prozess war deelweis mechaniséiert, awer zum Beispill goufen VMs tëscht Hosten vun der Hand verdeelt. Awer zum Beispill kënnen d'Entwéckler d'VM Konfiguratioun am git korrigéieren an se applizéieren andeems de VM nei starten.

Benotzerdefinéiert Configuratioun Management Léisung

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Déi ursprénglech Iddi, ech de Verdacht, gouf als IaC konzipéiert: vill stateless VMs déi hiren Zoustand op Null zrécksetzen wann se nei starten. Wat war VM Konfiguratioun Gestioun? Schematesch gesäit et einfach aus:

  1. E statesche MAC gouf fir de VM vernoléissegt.
  2. En ISO mat CoreOS an e Bootdisk goufe mam VM verbonnen.
  3. CoreOS lancéiert de Personnalisatiounsskript andeems Dir et vum WEB Server erofluet baséiert op senger IP.
  4. De Skript luet d'VM Konfiguratioun iwwer SCP erof op Basis vun der IP Adress.
  5. De Footcloth vu Systemd Eenheetsdateien an de Footcloth vu Bash Scripte ginn lancéiert.

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Dës Léisung hat vill offensichtlech Problemer:

  1. CoreOS ISO gouf ofgeschaaft.
  2. Vill komplex automatiséiert Aktiounen a Magie beim Migréieren / Erstellen vun VMs.
  3. Schwieregkeeten mat der Aktualiséierung a wann eng gewësse Versioun vu Software gebraucht gëtt. Nach méi Spaass mat Kernel Moduler.
  4. VMs goufen net sou kritt ouni Daten, d.h. VMs erschéngen mat enger Scheif mat zousätzlech Benotzerdaten montéiert.
  5. Een huet dauernd d'Systemd Eenheet Ofhängegkeete verschrauft an CoreOS géif afréieren beim Neistart. Et war schwéier dëst mat de verfügbaren Tools am CoreOS ze fänken.
  6. Geheimnisser Gestioun.
  7. Et gouf keen CM. Et waren Bash an YML Konfiguratiounen fir CoreOS.

Fir d'VM Konfiguratioun z'applizéieren, musst Dir se nei starten, awer et kann net nei starten. Et schéngt wéi en offensichtleche Problem, awer et gi keng persistent Disken - et gëtt néierens fir Logbicher ze späicheren. Gutt, ok, loosst eis probéieren d'Kernel-Ladenoptioun derbäi ze ginn, sou datt d'Logbicher geschéckt ginn. Awer nee, wéi komplizéiert ass dat alles.

Dag #0: Erkennt de Problem

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Et war déi üblech Entwécklungsinfrastruktur: Jenkins, Testëmfeld, Iwwerwaachung, Registry. CoreOS gouf entwéckelt fir k8s Cluster ze hosten, d.h. de Problem war wéi CoreOS benotzt gouf. Den éischte Schrëtt war e Stack ze wielen. Mir hunn eis festgeluecht:

  1. CentOS als Basis Verdeelung, well Dëst ass déi nootste Verdeelung zu Produktiounsëmfeld.
  2. Sicht fir Configuratioun Gestioun, well et gouf extensiv Ënnersichung doriwwer.
  3. Jenkins als Kader fir automatiséieren bestehend Prozesser, well et ass schonn aktiv fir Entwécklungsprozesser benotzt ginn
  4. Hyper-V als Virtualiséierungsplattform. Et ginn eng Rei vu Grënn, déi iwwer den Ëmfang vun der Geschicht goen, awer kuerz - mir kënnen d'Wolleken net benotzen, mir mussen eis eegen Hardware benotzen.

Dag Nr 30: Befestegt bestehend Ofkommes - Ofkommes als Code

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Wann de Stack kloer war, hunn d'Virbereedunge fir d'Beweegung ugefaang. Befestegt existéierend Ofkommes a Form vu Code (Ofkommes als Code!). Iwwergank manuell Aarbecht -> Mecanisatioun -> Automatiséierung.

1. VMs konfiguréieren

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Ansible mécht eng super Aarbecht vun dëser. Mat e Minimum vu Kierperbewegungen kënnt Dir d'Kontroll vu VM Konfiguratiounen iwwerhuelen:

  1. Erstellt e Git Repository.
  2. Mir setzen d'Lëscht vu VMs an Inventar, Konfiguratiounen a Spillbicher a Rollen.
  3. Mir setzen e spezielle Jenkins Sklave op, aus deem Dir Ansible kënnt lafen.
  4. Mir schafen eng Aarbecht an configuréieren Jenkins.

Den éischte Prozess ass fäerdeg. D'Ofkommes sinn fix.

2. Schafen nei VM

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Alles hei war net ganz bequem. Et ass net ganz bequem VMs op Hyper-V vu Linux ze kreéieren. Ee vun de Versuche fir dëse Prozess ze mechanesch war:

  1. Ansbile verbënnt iwwer WinRM mam Windows Host.
  2. Ansible leeft e Powershell Skript.
  3. Powershell Skript erstellt en neie VM.
  4. Benotzt Hyper-V / ScVMM, wann Dir e VM am Gaascht OS erstellt, gëtt den Hostnumm konfiguréiert.
  5. Wann Dir den DHCP Leasing aktualiséiert, schéckt de VM säin Hostnumm.
  6. Standard ddns & dhcp Integratioun op der Domain Controller Säit konfiguréiert den DNS Rekord.
  7. Dir kënnt e VM op Ären Inventar addéieren an et mat Ansible konfiguréieren.

3.Create VM Schabloun

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Si hunn hei näischt erfonnt - si hunn e Packer geholl.

  1. Füügt de Packer, Kickstart Config an de Git Repository.
  2. Astelle vun engem speziellen Jenkins Sklave mat Hyper-v a Packer.
  3. Mir schafen eng Aarbecht an configuréieren Jenkins.

Wéi funktionéiert dëse Link:

  1. Packer erstellt en eidele VM a hëlt den ISO op.
  2. De VM boots, Packer gitt de Kommando an de Bootloader fir eis Kickstart Datei vun enger Diskett oder http ze benotzen.
  3. Anaconda gëtt mat eiser Konfiguratioun gestart, an déi initial OS Konfiguratioun ass gemaach.
  4. Packer waart op de VM fir verfügbar ze ginn.
  5. Packer am VM leeft ansible am lokalen Modus.
  6. Ansible benotzt genau déiselwecht Rollen, déi et am Schrëtt #1 funktionnéiert.
  7. Packer exportéiert d'VM Schabloun.

Dag # 75: Refactor den Accord ouni Paus = Test ansible + Testkitchen

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Konventiounen am Code erfaassen ass vläicht net genuch. No allem, wann Dir am Ins an Outs vum Prozess eppes wëllt änneren, kënnt Dir eppes briechen. Dofir, am Fall vun Infrastruktur, Testen vun dëser Infrastruktur erschéngt. Fir Wëssen am Team ze synchroniséieren, hu mir ugefaang Ansible Rollen ze testen. Ech ginn net an d'Déift well ... et gëtt en Artikel deen d'Evenementer zu deem Zäitpunkt beschreift Test mech wann Dir kënnt oder do YML Programméierer Dram vun Testen Ansible?(Spoiler dëst war net déi lescht Versioun a spéider gouf alles méi komplizéiert Wéi fänken ech un Ansible ze testen, refaktoréiert de Projet an engem Joer a gitt net verréckt).

Dag #130: Vläicht ass CentOS + ansible net gebraucht? vläicht Openshift?

Mir musse verstoen datt de Prozess vun der Aféierung vun Infrastrukturen net deen eenzegen war an et waren Säit Ënnerprojeten. Zum Beispill ass eng Demande komm fir eis Applikatioun am Openshift ze lancéieren an dëst huet zu Fuerschung fir méi wéi eng Woch gefouert Mir starten d'Applikatioun an Openshift a vergläichen existent Tools wat de Beweegungsprozess verlangsamt huet. D'Resultat huet sech erausgestallt datt Openshift net all Bedierfnesser deckt; Dir braucht richteg Hardware, oder op d'mannst d'Fäegkeet mam Kernel ze spillen.

Dag #170: Openshift ass net gëeegent, loosst eis eng Chance mat Windows Azure Pack huelen?

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Hyper-V ass net ganz frëndlech, SCVMM mécht et net vill besser. Awer et gëtt sou eppes wéi Windows Azure Pack, deen en Add-on zu SCVMM ass a mimics Azure. Awer a Wierklechkeet gesäit d'Produkt opginn aus: d'Dokumentatioun huet gebrach Linken an ass ganz schaarf. Awer als Deel vun der Studie vun Optiounen fir d'Liewen vun eiser Wollek ze vereinfachen, hunn se et och gekuckt.

Dag # 250: Windows Azure Pack net ganz gutt. Mir bleiwen um SCVMM

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Windows Azure Pack huet villverspriechend ausgesinn, awer et gouf decidéiert net WAP mat sengen Komplexitéiten an de System ze bréngen fir onnéideg Features ze bréngen an ass mat SCVMM bliwwen.

Dag #360: Den Elefant Stéck fir Stéck iessen

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Nëmmen e Joer méi spéit war d'Plattform fir ze plënneren fäerdeg an de Beweegungsprozess huet ugefaang. Fir dësen Zweck gouf S.M.A.R.T installéiert. Aufgab. Mir hunn all VMs iwwerpréift an hunn ugefaang d'Konfiguratioun een nom aneren erauszefannen, se an Ansible ze beschreiwen an et mat Tester ze decken.

Dag # 450: Wéi eng System hutt Dir kritt?

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

De Prozess selwer ass net interessant. Et ass Routine, et kann bemierkt ginn datt déi meescht vun de Konfiguratiounen relativ einfach oder isomorph waren an no dem Pareto-Prinzip, 80% vun de VM-Konfiguratiounen 20% vun der Zäit erfuerderen. No deemselwechte Prinzip goufen 80% vun der Zäit fir d'Bewegung virbereet an nëmmen 20% un der Bewegung selwer.

Dag # 540: Finale

Ansible: Migratioun vun 120 VM Konfiguratioun vu CoreOS op CentOS an 18 Méint

Wat ass an 18 Méint geschitt?

  1. D'Ofkommes goufen e Code.
  2. Manuell Aarbecht -> Mecanisatioun -> Automatioun.

Source: will.com

Setzt e Commentaire