Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

To je prepis govora DevopsConf 2019-10-01 и SPbLUG 2019-09-25.

To je zgodba o projektu, ki je uporabljal samonapisani sistem za upravljanje konfiguracije in zakaj je prehod na Ansible trajal 18 mesecev.

Dan št. -ХХХ: Pred začetkom

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Sprva je bila infrastruktura sestavljena iz številnih ločenih gostiteljev, ki so poganjali Hyper-V. Ustvarjanje virtualnega stroja je zahtevalo veliko korakov: namestitev diskov na pravo mesto, registracija DNS, rezervacija DHCP, namestitev konfiguracije VM v repozitorij git. Ta postopek je bil delno mehaniziran, vendar so bili na primer VM-ji ročno razdeljeni med gostitelje. Toda razvijalci bi lahko na primer popravili konfiguracijo VM v git in jo uporabili s ponovnim zagonom VM.

Rešitev za upravljanje konfiguracije po meri

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Domnevam, da je bila prvotna ideja zasnovana kot IaC: veliko navideznih računalnikov brez stanja, ki ob ponovnem zagonu ponastavijo svoje stanje na nič. Kaj je bilo upravljanje konfiguracije VM? Shematično je videti preprosto:

  1. Za VM je bil določen statični MAC.
  2. Na VM sta bila povezana ISO s CoreOS in zagonska disketa.
  3. CoreOS zažene prilagoditveni skript tako, da ga prenese s spletnega strežnika na podlagi njegovega IP-ja.
  4. Skript prenese konfiguracijo VM prek SCP na podlagi naslova IP.
  5. Zaženeta se podloga za datoteke sistemske enote in podloga za skripte bash.

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Ta rešitev je imela veliko očitnih težav:

  1. CoreOS ISO je zastarel.
  2. Veliko zapletenih avtomatiziranih dejanj in čarovnije pri selitvi/ustvarjanju virtualnih strojev.
  3. Težave s posodabljanjem in kdaj je potrebna določena različica programske opreme. Še več zabave z moduli jedra.
  4. VM niso bili tako pridobljeni brez podatkov, tj. VM so se pojavili z diskom z nameščenimi dodatnimi uporabniškimi podatki.
  5. Nekdo je nenehno pokvaril odvisnosti sistemske enote in CoreOS je zamrznil ob ponovnem zagonu. Težko je bilo to ujeti z uporabo razpoložljivih orodij v CoreOS.
  6. Upravljanje skrivnosti.
  7. CM ni bilo. Za CoreOS sta bili konfiguraciji bash in YML.

Če želite uporabiti konfiguracijo VM, ga morate znova zagnati, vendar se morda ne bo znova zagnal. Zdi se kot očitna težava, vendar ni trajnih diskov - dnevnikov ni kam shraniti. No, v redu, poskusimo dodati možnost nalaganja jedra, da bodo dnevniki poslani. Ampak ne, kako je vse skupaj zapleteno.

Dan #0: Prepoznajte težavo

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Šlo je za običajno razvojno infrastrukturo: jenkins, testna okolja, spremljanje, register. CoreOS je bil zasnovan za gostovanje gruč k8s, tj. problem je bil, kako je bil uporabljen CoreOS. Prvi korak je bila izbira sklada. Odločili smo se za:

  1. CentOS kot osnovna distribucija, ker To je najbližja distribucija proizvodnim okoljem.
  2. Možno za upravljanje konfiguracije, saj na njem je bil opravljen obsežen pregled.
  3. Jenkins kot okvir za avtomatizacijo obstoječih procesov, saj se že aktivno uporablja za razvojne procese
  4. Hyper-V kot virtualizacijska platforma. Obstaja vrsta razlogov, ki presegajo okvir zgodbe, a na kratko – ne moremo uporabljati oblakov, moramo uporabljati lastno strojno opremo.

Dan št. 30: Popravljanje obstoječih dogovorov - Dogovori kot koda

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Ko je bil sklad prazen, so se začele priprave na selitev. Popravek obstoječih dogovorov v obliki kode (Sporazumi kot kodeks!). Prehod ročno delo -> mehanizacija -> avtomatizacijo.

1. Konfigurirajte VM

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Ansible to odlično opravi. Z najmanj premiki telesa lahko prevzamete nadzor nad konfiguracijami VM:

  1. Ustvarite repozitorij git.
  2. Seznam navideznih strojev damo v inventar, konfiguracije v priročnike in vloge.
  3. Postavljamo poseben suženj Jenkins, iz katerega lahko poganjate Ansible.
  4. Ustvarimo delovno mesto in konfiguriramo Jenkins.

Prvi postopek je pripravljen. Dogovori so fiksni.

2. Ustvarite nov VM

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Vse tukaj ni bilo zelo priročno. Ustvarjanje navideznih strojev na Hyper-V iz Linuxa ni zelo priročno. Eden od poskusov mehanizacije tega procesa je bil:

  1. Ansbile se prek WinRM poveže z gostiteljem Windows.
  2. Ansible zažene skript powershell.
  3. Skript Powershell ustvari nov VM.
  4. Z uporabo Hyper-V/ScVMM je pri ustvarjanju VM v gostujočem OS konfigurirano ime gostitelja.
  5. Pri posodabljanju zakupa DHCP VM pošlje svoje ime gostitelja.
  6. Standardna integracija ddns & dhcp na strani krmilnika domene konfigurira zapis DNS.
  7. V svoj inventar lahko dodate VM in ga konfigurirate z Ansible.

3.Ustvarite predlogo VM

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Tukaj si niso ničesar izmislili - vzeli so embalaže.

  1. Dodajte konfiguracijo pakirnika, kickstart v repozitorij git.
  2. Nastavitev posebnega suženjskega strežnika Jenkins s Hyper-V in Packerjem.
  3. Ustvarimo delovno mesto in konfiguriramo Jenkins.

Kako deluje ta povezava:

  1. Packer ustvari prazen VM in pobere ISO.
  2. VM se zažene, Packer vnese ukaz v zagonski nalagalnik za uporabo naše zagonske datoteke z diskete ali http.
  3. Anaconda se zažene z našo konfiguracijo in začetna konfiguracija OS je končana.
  4. Packer čaka, da postane VM na voljo.
  5. Packer znotraj VM teče ansible v lokalnem načinu.
  6. Ansible uporablja popolnoma enake vloge kot v 1. koraku.
  7. Packer izvozi predlogo VM.

Dan #75: Preoblikujte sporazum, ne da bi ga zlomili = Test ansible + Testkitchen

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Zajemanje konvencij v kodo morda ne bo dovolj. Konec koncev, če želite nekaj spremeniti v notranjosti procesa, lahko nekaj pokvarite. Zato se pri infrastrukturi pojavlja testiranje prav te infrastrukture. Za sinhronizacijo znanja znotraj ekipe smo začeli testirati vloge Ansible. Ne bom šel v globino, ker ... obstaja članek, ki opisuje dogodke v tistem trenutku Preizkusite me, če lahko, ali programerji YML sanjajo o testiranju Ansible?(spoiler to ni bila končna verzija in kasneje je postalo vse bolj zapleteno Kako začeti testirati Ansible, preurediti projekt v enem letu in ne ponoreti).

Dan #130: Mogoče CentOS+ansible ni potreben? mogoče openshift?

Zavedati se moramo, da proces uvajanja infrastrukture ni bil edini in so bili stranski podprojekti. Prišla je na primer zahteva za zagon naše aplikacije v openshiftu, kar je povzročilo več kot en teden raziskovanja Aplikacijo zaženemo v Openshiftu in primerjamo obstoječa orodja kar je upočasnilo premikanje. Izkazalo se je, da openshift ne pokriva vseh potreb, potrebujete pravo strojno opremo ali vsaj sposobnost igranja z jedrom.

Dan #170: Openshift ni primeren, tvegajmo z Windows Azure Pack?

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Hyper-V ni zelo prijazen, SCVMM ga ne izboljša veliko. Obstaja pa nekaj takega, kot je Windows Azure Pack, ki je dodatek k SCVMM in posnema Azure. Toda v resnici je izdelek videti zapuščen: dokumentacija ima prekinjene povezave in je zelo redka. Toda v okviru študije možnosti za poenostavitev življenja našega oblaka so si ogledali tudi to.

Dan #250: Windows Azure Pack ni zelo dober. Ostajamo na SCVMM

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Windows Azure Pack je bil videti obetaven, vendar je bilo odločeno, da se WAP s svojo zapletenostjo ne bo vnesel v sistem zaradi nepotrebnih funkcij in je ostal pri SCVMM.

Dan #360: Jesti slona kos za kosom

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Šele leto kasneje je bila pripravljena ploščad za selitev in začela se je selitev. V ta namen je bil nameščen S.M.A.R.T. naloga. Preverili smo vse VM-je in začeli ugotavljati konfiguracijo enega za drugim, ga opisali v Ansibleu in pokrili s testi.

Dan #450: Kakšen sistem ste dobili?

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Sam proces ni zanimiv. To je rutina, lahko opazimo, da je bila večina konfiguracij razmeroma enostavnih ali izomorfnih in po Paretovem principu je 80 % konfiguracij VM zahtevalo 20 % časa. Po enakem principu je bilo 80% časa porabljenega za pripravo selitve in le 20% za selitev samo.

Dan #540: Finale

Ansible: Migracija konfiguracije 120 VM iz CoreOS v CentOS v 18 mesecih

Kaj se je zgodilo v 18 mesecih?

  1. Sporazumi so postali kodeks.
  2. Ročno delo -> Mehanizacija -> Avtomatizacija.

Vir: www.habr.com

Dodaj komentar