Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Bu çıxışın stenoqramıdır DevopsConf 2019 и SPbLUG 2019-09-25.

Bu, öz-özünə yazılmış konfiqurasiya idarəetmə sistemindən istifadə edən bir layihənin hekayəsidir və niyə Ansible-a keçid 18 ay çəkdi.

Gün № -ХХХ: Başlamadan əvvəl

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Əvvəlcə infrastruktur Hyper-V ilə işləyən bir çox ayrı hostlardan ibarət idi. Virtual maşının yaradılması bir çox addımlar tələb edirdi: diskləri düzgün yerə qoymaq, DNS-ni qeydiyyata almaq, DHCP-ni rezerv etmək, VM konfiqurasiyasını git repozitoriyasına qoymaq. Bu proses qismən mexanikləşdirildi, lakin məsələn, VM-lər hostlar arasında əl ilə paylandı. Lakin, məsələn, tərtibatçılar git-də VM konfiqurasiyasını düzəldə və VM-ni yenidən işə salmaqla tətbiq edə bilərlər.

Xüsusi Konfiqurasiya İdarəetmə Həlli

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Şübhə edirəm ki, orijinal ideya IaC kimi hazırlanmışdır: yenidən işə salındıqda vəziyyətini sıfıra sıfırlayan bir çox vətəndaşlığı olmayan VM-lər. VM konfiqurasiya idarəetməsi nə idi? Sxematik olaraq sadə görünür:

  1. VM üçün statik MAC bağlandı.
  2. CoreOS ilə ISO və yükləmə diski VM-ə qoşuldu.
  3. CoreOS fərdiləşdirmə skriptini IP əsasında WEB serverindən endirərək işə salır.
  4. Skript IP ünvanına əsasən SCP vasitəsilə VM konfiqurasiyasını yükləyir.
  5. Systemd vahid fayllarının ayaq örtüyü və bash skriptlərinin ayaq örtüyü işə salınır.

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Bu həllin bir çox açıq problemləri var idi:

  1. CoreOS ISO köhnəlmişdir.
  2. VM-ləri köçürərkən/yaratarkən çoxlu mürəkkəb avtomatlaşdırılmış hərəkətlər və sehr.
  3. Proqram təminatının müəyyən versiyasına ehtiyac olduqda və yeniləmə ilə bağlı çətinliklər. Kernel modulları ilə daha da əyləncəlidir.
  4. VM-lər məlumat olmadan belə əldə edilməmişdir, yəni. VM-lər əlavə istifadəçi məlumatı quraşdırılmış disklə meydana çıxdı.
  5. Kimsə sistem vahidindən asılılıqları daim pozurdu və CoreOS yenidən başladıqda donurdu. CoreOS-da mövcud vasitələrdən istifadə edərək bunu tutmaq çətin idi.
  6. Sirlərin idarə edilməsi.
  7. CM yox idi. CoreOS üçün bash və YML konfiqurasiyaları var idi.

VM konfiqurasiyasını tətbiq etmək üçün onu yenidən başlatmalısınız, lakin o, yenidən başlamaya bilər. Bu, açıq bir problem kimi görünür, lakin davamlı disklər yoxdur - qeydləri saxlamaq üçün heç bir yer yoxdur. Yaxşı, yaxşı, logların göndərilməsi üçün kernel yükləmə seçimini əlavə etməyə çalışaq. Amma yox, hər şey nə qədər mürəkkəbdir.

Gün №0: Problemi tanıyın

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Bu, adi inkişaf infrastrukturu idi: jenkins, test mühitləri, monitorinq, reyestr. CoreOS k8s klasterlərini yerləşdirmək üçün nəzərdə tutulmuşdur, yəni. problem CoreOS-un necə istifadə olunması idi. İlk addım bir yığın seçmək idi. Biz qərarlaşdıq:

  1. CentOS əsas paylama kimi, çünki Bu, istehsal mühitlərinə ən yaxın paylamadır.
  2. Yoxdur konfiqurasiya idarə edilməsi üçün, çünki Bununla bağlı geniş araşdırma aparılıb.
  3. Jenkins mövcud proseslərin avtomatlaşdırılması üçün çərçivə kimi, çünki inkişaf prosesləri üçün artıq fəal şəkildə istifadə edilmişdir
  4. Hyper-V virtuallaşdırma platforması kimi. Hekayənin əhatəsindən kənara çıxan bir sıra səbəblər var, amma qısacası - buludlardan istifadə edə bilmirik, öz aparatımızdan istifadə etməliyik.

Gün № 30: Mövcud müqavilələrin düzəldilməsi - Sazişlər Məcəllə kimi

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Yığın aydın olduqdan sonra hərəkət üçün hazırlıqlar başladı. Mövcud müqavilələrin kod şəklində düzəldilməsi (Kodeks kimi müqavilələr!). Keçid əl işi -> mexanizasiya -> avtomatlaşdırma.

1. VM-ləri konfiqurasiya edin

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Ansible bu işdə əla iş görür. Minimum bədən hərəkətləri ilə VM konfiqurasiyalarına nəzarət edə bilərsiniz:

  1. Git deposu yaradın.
  2. VM-lərin siyahısını inventarda, konfiqurasiyaları oyun kitablarında və rollarda yerləşdiririk.
  3. Biz Ansible-ı işlədə biləcəyiniz xüsusi jenkins slave qururuq.
  4. Biz bir iş yaradırıq və Jenkins-i konfiqurasiya edirik.

Birinci proses hazırdır. Müqavilələr sabitdir.

2. Yeni VM yaradın

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Burada hər şey çox əlverişli deyildi. Linux-dan Hyper-V-də VM-lər yaratmaq çox rahat deyil. Bu prosesi mexanikləşdirmək cəhdlərindən biri:

  1. Ansbile WinRM vasitəsilə Windows hostuna qoşulur.
  2. Ansible powershell skriptini işlədir.
  3. Powershell skripti yeni VM yaradır.
  4. Hyper-V/ScVMM-dən istifadə edərək, qonaq OS-də VM yaratarkən host adı konfiqurasiya edilir.
  5. DHCP icarəsini yeniləyərkən VM öz host adını göndərir.
  6. Domain Controller tərəfində standart ddns & dhcp inteqrasiyası DNS qeydini konfiqurasiya edir.
  7. Siz inventarınıza VM əlavə edə və onu Ansible ilə konfiqurasiya edə bilərsiniz.

3.VM şablonu yaradın

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Burada heç nə icad etmədilər - qablaşdırıcı götürdülər.

  1. Paketləyicini, kickstart konfiqurasiyasını git deposuna əlavə edin.
  2. Hyper-v və Packer ilə xüsusi jenkins qulunun qurulması.
  3. Biz bir iş yaradırıq və Jenkins-i konfiqurasiya edirik.

Bu keçid necə işləyir:

  1. Packer boş bir VM yaradır və ISO-nu götürür.
  2. VM işə düşür, Packer disketdən və ya http-dən kickstart faylımızdan istifadə etmək üçün yükləyiciyə əmr daxil edir.
  3. Anaconda konfiqurasiyamızla işə salındı ​​və ilkin OS konfiqurasiyası tamamlandı.
  4. Packer VM-nin əlçatan olmasını gözləyir.
  5. VM daxilində Packer yerli rejimdə ansible işləyir.
  6. Ansible 1-ci addımda işlədiyi eyni rollardan istifadə edir.
  7. Packer VM şablonunu ixrac edir.

Gün №75: Müqaviləni pozmadan yenidən düzəldin = Test ansible + Testkitchen

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Kodda konvensiyaları tutmaq kifayət olmaya bilər. Axı, prosesin incəliklərində nəyisə dəyişdirmək istəsən, nəyisə poza bilərsən. Buna görə də, infrastruktur məsələsində məhz bu infrastrukturun sınaqdan keçirilməsi görünür. Komanda daxilində bilikləri sinxronlaşdırmaq üçün biz Ansible rollarını sınaqdan keçirməyə başladıq. Mən dərinə getməyəcəm, çünki... o dövrdə baş verən hadisələri təsvir edən bir məqalə var Məni sınayın, əgər YML proqramçıları Ansible-ı sınamağı xəyal edə bilirsinizmi?(spoiler bu son versiya deyildi və sonradan hər şey daha mürəkkəbləşdi Ansible-ı sınamağa necə başlamaq lazımdır, bir il ərzində layihəni yenidən nəzərdən keçirin və dəli olmayın).

Gün # 130: Bəlkə CentOS+ansible lazım deyil? bəlkə openshift?

Biz başa düşməliyik ki, infrastrukturun tətbiqi prosesi tək deyildi və əlavə sublayihələr də var idi. Məsələn, tətbiqimizi openshift-də işə salmaq üçün sorğu gəldi və bu, bir həftədən çox araşdırma ilə nəticələndi Proqramı Openshift-də işə salırıq və mövcud alətləri müqayisə edirik hərəkət prosesini ləngitdi. Nəticə məlum oldu ki, openshift bütün ehtiyacları ödəmir, sizə real aparat lazımdır, ya da heç olmasa nüvə ilə oynamaq bacarığı.

Gün # 170: Openshift uyğun deyil, gəlin Windows Azure Paketi ilə bir şans verək?

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Hyper-V çox dost deyil, SCVMM onu daha da yaxşılaşdırmır. Ancaq SCVMM-ə əlavə olan və Azure-u təqlid edən Windows Azure Pack kimi bir şey var. Ancaq əslində məhsul tərk edilmiş görünür: sənədlərdə bağlantılar pozulmuşdur və çox seyrəkdir. Ancaq buludumuzun həyatını asanlaşdırmaq variantlarının öyrənilməsinin bir hissəsi olaraq, ona da baxdılar.

Gün # 250: Windows Azure Paketi çox yaxşı deyil. Biz SCVMM-də qalırıq

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Windows Azure Pack perspektivli görünürdü, lakin lazımsız xüsusiyyətlər naminə mürəkkəbliyi ilə WAP-ı sistemə gətirməmək qərara alındı ​​və SCVMM-də qaldı.

Gün # 360: Fili parça-parça yemək

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Yalnız bir ildən sonra köçmək üçün platforma hazır oldu və köçürmə prosesi başladı. Bu məqsədlə SMART tapşırıq qoyulmuşdur. Biz bütün VM-ləri yoxladıq və konfiqurasiyanı bir-bir anlamağa, Ansible-da təsvir etməyə və testlərlə əhatə etməyə başladıq.

Gün # 450: Hansı sistem əldə etdiniz?

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

Prosesin özü maraqlı deyil. Bu, müntəzəmdir, qeyd etmək olar ki, konfiqurasiyaların əksəriyyəti nisbətən sadə və ya izomorf idi və Pareto prinsipinə görə, VM konfiqurasiyalarının 80% -i vaxtın 20% -ni tələb edir. Eyni prinsiplə, vaxtın 80% -i hərəkətin hazırlanmasına və yalnız 20% -i hərəkətin özünə sərf edilmişdir.

Gün # 540: Final

Ansible: 120 ay ərzində 18 VM konfiqurasiyasının CoreOS-dan CentOS-a köçürülməsi

18 ayda nə baş verdi?

  1. Müqavilələr məcəlləyə çevrildi.
  2. Əl işi -> Mexanikləşdirmə -> Avtomatlaşdırma.

Mənbə: www.habr.com

Добавить комментарий