Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Ovo je transkript govora DevopsConf 2019-10-01 и SPbLUG 2019-09-25.

Ovo je priča o projektu koji je koristio sistem za upravljanje konfiguracijom koji je sam napisao i zašto je prelazak na Ansible trajao 18 mjeseci.

Dan br. -HHH: Prije početka

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

U početku se infrastruktura sastojala od mnogo odvojenih hostova koji su pokretali Hyper-V. Kreiranje virtuelne mašine zahtevalo je mnogo koraka: stavljanje diskova na pravo mesto, registrovanje DNS-a, rezervisanje DHCP-a, stavljanje VM konfiguracije u git spremište. Ovaj proces je bio djelimično mehaniziran, ali na primjer, VM-ovi su distribuirani između hostova ručno. Ali, na primjer, programeri bi mogli ispraviti konfiguraciju VM-a u git-u i primijeniti je ponovnim pokretanjem VM-a.

Prilagođeno rješenje za upravljanje konfiguracijom

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Pretpostavljam da je prvobitna ideja bila zamišljena kao IaC: mnogi VM-ovi bez državljanstva koji resetuju svoje stanje na nulu kada se ponovo pokrenu. Šta je bilo upravljanje konfiguracijom VM-a? Šematski izgleda jednostavno:

  1. Statički MAC je prikovan za VM.
  2. ISO sa CoreOS-om i disk za pokretanje su povezani na VM.
  3. CoreOS pokreće skriptu za prilagođavanje preuzimanjem sa WEB servera na osnovu IP adrese.
  4. Skripta preuzima konfiguraciju VM-a preko SCP-a na osnovu IP adrese.
  5. Pokreće se podnožje sistemskih fajlova jedinica i podnožje bash skripti.

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Ovo rješenje je imalo mnogo očiglednih problema:

  1. CoreOS ISO je zastario.
  2. Mnogo složenih automatizovanih radnji i magije prilikom migracije/kreiranja VM-a.
  3. Poteškoće s ažuriranjem i kada je potrebna određena verzija softvera. Još zabavnije sa modulima kernela.
  4. VM nisu tako dobijeni bez podataka, tj. VM-ovi su se pojavili s diskom s montiranim dodatnim korisničkim podacima.
  5. Neko je stalno zeznuo ovisnosti o sistemskoj jedinici i CoreOS bi se zamrznuo prilikom ponovnog pokretanja. Bilo je teško uhvatiti ovo koristeći dostupne alate u CoreOS-u.
  6. Upravljanje tajnama.
  7. Nije bilo CM. Postojale su bash i YML konfiguracije za CoreOS.

Da biste primijenili konfiguraciju VM-a, morate ga ponovo pokrenuti, ali se možda neće ponovo pokrenuti. Čini se kao očigledan problem, ali nema postojanih diskova - nema gdje sačuvati zapise. Pa, ok, hajde da pokušamo da dodamo opciju učitavanja kernela kako bi se zapisnici slali. Ali ne, kako je sve to komplikovano.

Dan #0: Prepoznajte problem

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Bila je to uobičajena razvojna infrastruktura: jenkins, testna okruženja, nadzor, registar. CoreOS je dizajniran za hostovanje k8s klastera, tj. problem je bio kako se koristio CoreOS. Prvi korak je bio odabir steka. Odlučili smo se na:

  1. CentOS kao baznu distribuciju, jer Ovo je najbliža distribucija proizvodnim okruženjima.
  2. Ansible za upravljanje konfiguracijom, jer bilo je opsežnog ispitivanja o tome.
  3. Jenkins kao okvir za automatizaciju postojećih procesa, jer već se aktivno koristi za razvojne procese
  4. Hyper-V kao platforma za virtuelizaciju. Postoji niz razloga koji prevazilaze okvire priče, ali ukratko – ne možemo koristiti oblake, moramo koristiti vlastiti hardver.

Dan br. 30: Popravljanje postojećih sporazuma - Sporazumi kao kod

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Kada je stek bio čist, počele su pripreme za selidbu. Popravljanje postojećih sporazuma u obliku koda (Ugovori kao kod!). Tranzicija ručni rad -> mehanizacija -> automatizacija.

1. Konfigurirajte VM

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Ansible to odlično radi. Uz minimum pokreta tijela možete preuzeti kontrolu nad konfiguracijama VM-a:

  1. Kreirajte git spremište.
  2. Stavili smo listu VM-a u inventar, konfiguracije u playbooks i uloge.
  3. Postavljamo poseban jenkins slave iz kojeg možete pokrenuti Ansible.
  4. Kreiramo posao i konfiguriramo Jenkinsa.

Prvi proces je spreman. Ugovori su fiksni.

2. Kreirajte novi VM

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Sve ovdje nije bilo baš zgodno. Nije baš zgodno kreirati VM na Hyper-V iz Linuxa. Jedan od pokušaja mehanizacije ovog procesa bio je:

  1. Ansbile se povezuje preko WinRM-a na Windows host.
  2. Ansible pokreće powershell skriptu.
  3. Powershell skripta kreira novu VM.
  4. Koristeći Hyper-V/ScVMM, prilikom kreiranja VM-a u gostujućem OS-u, konfiguriše se ime hosta.
  5. Prilikom ažuriranja DHCP zakupa, VM šalje svoje ime hosta.
  6. Standardna ddns & dhcp integracija na strani kontrolera domene konfiguriše DNS zapis.
  7. Možete dodati VM u svoj inventar i konfigurirati ga pomoću Ansiblea.

3. Kreirajte VM šablon

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Ovdje nisu ništa izmislili - uzeli su paker.

  1. Dodajte packer, kickstart konfiguraciju u git spremište.
  2. Postavljanje posebnog jenkins slave-a sa hyper-v i Packer-om.
  3. Kreiramo posao i konfiguriramo Jenkinsa.

Kako radi ovaj link:

  1. Packer kreira prazan VM i preuzima ISO.
  2. VM se pokreće, Packer unosi komandu u bootloader da koristi našu kickstart datoteku sa diskete ili http.
  3. Anaconda se pokreće sa našom konfiguracijom, a početna konfiguracija OS-a je urađena.
  4. Packer čeka da VM postane dostupan.
  5. Paker unutar VM-a radi ansible u lokalnom načinu.
  6. Ansible koristi potpuno iste uloge koje radi u koraku #1.
  7. Packer izvozi VM šablon.

Dan #75: Refaktorirajte sporazum bez prekida = Test ansible + Testkitchen

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Hvatanje konvencija u kodu možda neće biti dovoljno. Na kraju krajeva, ako u samom procesu želite nešto promijeniti, možete nešto slomiti. Stoga se u slučaju infrastrukture javlja testiranje upravo ove infrastrukture. Kako bismo sinkronizirali znanje unutar tima, počeli smo testirati Ansible uloge. Neću ulaziti u dubinu jer... postoji članak koji opisuje događaje u tom trenutku Testirajte me da li možete ili YML programeri sanjaju da testiraju Ansible?(spoiler ovo nije bila konačna verzija i kasnije je sve postalo komplikovanije Kako početi testirati Ansible, refaktorirati projekat za godinu dana i ne poludjeti).

Dan #130: Možda CentOS+ansible nije potreban? mozda openshift?

Moramo shvatiti da proces uvođenja infrastrukture nije bio jedini i da su postojali sporedni potprojekti. Na primjer, stigao je zahtjev za pokretanje naše aplikacije u openshift-u i to je rezultiralo istraživanjem koje je trajalo više od jedne sedmice Pokrećemo aplikaciju u Openshift-u i upoređujemo postojeće alate što je usporilo proces kretanja. Rezultat se pokazao da openshift ne pokriva sve potrebe; potreban vam je pravi hardver, ili barem mogućnost igranja sa kernelom.

Dan #170: Openshift nije prikladan, hajde da rizikujemo sa Windows Azure paketom?

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Hyper-V nije baš prijateljski raspoložen, SCVMM ga ne čini mnogo boljim. Ali postoji nešto kao što je Windows Azure Pack, koji je dodatak SCVMM-u i oponaša Azure. Ali u stvarnosti, proizvod izgleda napušteno: dokumentacija ima prekinute veze i vrlo je rijetka. Ali, kao dio proučavanja opcija za pojednostavljivanje života našeg oblaka, oni su ga također pogledali.

Dan #250: Windows Azure paket nije baš dobar. Ostajemo na SCVMM

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Windows Azure Pack je izgledao obećavajuće, ali je odlučeno da se ne unose WAP sa njegovom složenošću u sistem radi nepotrebnih karakteristika i ostao je SCVMM.

Dan #360: Jedenje slona dio po dio

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Samo godinu dana kasnije platforma za preseljenje je bila spremna i proces selidbe je počeo. U tu svrhu je instaliran S.M.A.R.T. zadatak. Provjerili smo sve VM-ove i počeli da shvaćamo konfiguraciju jednu po jednu, opisujemo je u Ansibleu i pokrivamo je testovima.

Dan #450: Kakav sistem ste dobili?

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Sam proces nije zanimljiv. To je rutinsko, može se primijetiti da je većina konfiguracija bila relativno jednostavna ili izomorfna i prema Pareto principu, 80% VM konfiguracija je zahtijevalo 20% vremena. Po istom principu, 80% vremena je utrošeno na pripremu selidbe, a samo 20% na sam potez.

Dan #540: Finale

Ansible: Migracija 120 VM konfiguracije sa CoreOS-a na CentOS za 18 mjeseci

Šta se desilo za 18 mjeseci?

  1. Sporazumi su postali kodeks.
  2. Ručni rad -> Mehanizacija -> Automatizacija.

izvor: www.habr.com

Dodajte komentar