Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Bu nutqning stenogrammasi DevopsConf 2019-10-01 ΠΈ SPbLUG 2019-09-25.

Bu o'z-o'zidan yozilgan konfiguratsiyani boshqarish tizimidan foydalangan loyihaning hikoyasi va nima uchun Ansible-ga o'tish 18 oy davom etdi.

Kun β„– -XXX: Boshlanishdan oldin

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Dastlab, infratuzilma Hyper-V bilan ishlaydigan ko'plab alohida xostlardan iborat edi. Virtual mashinani yaratish juda ko'p bosqichlarni talab qildi: disklarni to'g'ri joyga qo'yish, DNS-ni ro'yxatdan o'tkazish, DHCP-ni zaxiralash, VM konfiguratsiyasini git omboriga qo'yish. Bu jarayon qisman mexanizatsiyalashgan, lekin masalan, VMlar xostlar o'rtasida qo'lda taqsimlangan. Ammo, masalan, ishlab chiquvchilar git-da VM konfiguratsiyasini tuzatishi va uni VMni qayta ishga tushirish orqali qo'llashi mumkin.

Maxsus konfiguratsiyani boshqarish yechimi

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Asl g'oya, menimcha, IaC sifatida ishlab chiqilgan: ko'plab fuqaroligi bo'lmagan VMlar qayta ishga tushirilganda o'z holatini nolga qaytaradi. VM konfiguratsiyasini boshqarish nima edi? Sxematik jihatdan oddiy ko'rinadi:

  1. VM uchun statik MAC o'rnatildi.
  2. VM ga CoreOS bilan ISO va yuklash diski ulangan.
  3. CoreOS xususiylashtirish skriptini IP-ga asoslangan WEB-serverdan yuklab olish orqali ishga tushiradi.
  4. Skript VM konfiguratsiyasini IP-manzil asosida SCP orqali yuklaydi.
  5. Systemd birligi fayllarining oyoq kiyimi va bash skriptlarining oyoq kiyimi ishga tushirildi.

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Ushbu yechim ko'plab aniq muammolarga ega edi:

  1. CoreOS ISO eskirgan.
  2. VMlarni ko'chirish/yaratishda juda ko'p murakkab avtomatlashtirilgan harakatlar va sehr.
  3. Yangilashda qiyinchilik va dasturiy ta'minotning ma'lum bir versiyasi kerak bo'lganda. Yadro modullari bilan yanada qiziqarli.
  4. VMlar ma'lumotlarsiz olinmagan, ya'ni. VMlar qo'shimcha foydalanuvchi ma'lumotlari o'rnatilgan disk bilan paydo bo'ldi.
  5. Kimdir doimiy ravishda tizim birligining bog'liqligini buzardi va CoreOS qayta ishga tushirilganda muzlab qoladi. CoreOS-dagi mavjud vositalar yordamida buni ushlash qiyin edi.
  6. Sirlarni boshqarish.
  7. CM yo'q edi. CoreOS uchun bash va YML konfiguratsiyalari mavjud edi.

VM konfiguratsiyasini qo'llash uchun uni qayta ishga tushirishingiz kerak, lekin u qayta yoqilmasligi mumkin. Bu aniq muammo kabi ko'rinadi, lekin doimiy disklar yo'q - jurnallarni saqlash uchun hech qanday joy yo'q. Xo'sh, keling, jurnallar yuborilishi uchun yadro yuklash variantini qo'shishga harakat qilaylik. Lekin yo'q, hammasi qanchalik murakkab.

0-kun: Muammoni tan oling

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Bu odatiy rivojlanish infratuzilmasi edi: jenkins, test muhiti, monitoring, ro'yxatga olish. CoreOS k8s klasterlarini joylashtirish uchun mo'ljallangan, ya'ni. muammo CoreOS qanday ishlatilganligi edi. Birinchi qadam stackni tanlash edi. Biz qaror qildik:

  1. CentOs asosiy taqsimot sifatida, chunki Bu ishlab chiqarish muhitiga eng yaqin taqsimot.
  2. E'tirof etiladi konfiguratsiyani boshqarish uchun, chunki Bu borada keng ko'lamli tekshiruvlar o'tkazildi.
  3. Jenkins mavjud jarayonlarni avtomatlashtirish uchun asos sifatida, chunki u allaqachon rivojlanish jarayonlari uchun faol foydalanilgan
  4. Hyper-V virtualizatsiya platformasi sifatida. Hikoya doirasidan tashqariga chiqadigan bir qator sabablar bor, lekin qisqasi - biz bulutlardan foydalana olmaymiz, biz o'z uskunamizdan foydalanishimiz kerak.

30-kun: Mavjud shartnomalarni tuzatish - Kodeks sifatida shartnomalar

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Stack aniq bo'lgach, harakatga tayyorgarlik boshlandi. Mavjud shartnomalarni kod shaklida tuzatish (Kod sifatida shartnomalar!). O'tish qo'l mehnati -> mexanizatsiyalash -> avtomatlashtirish.

1. VM larni sozlash

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Ansible bu ishni ajoyib qiladi. Minimal tana harakati bilan siz VM konfiguratsiyasini nazorat qilishingiz mumkin:

  1. Git omborini yarating.
  2. Biz VMlar ro'yxatini inventarga, konfiguratsiyalarni o'yin kitoblariga va rollarga joylashtiramiz.
  3. Biz Ansible-ni ishga tushirishingiz mumkin bo'lgan maxsus jenkins qulini o'rnatmoqdamiz.
  4. Biz ish yaratamiz va Jenkinsni sozlaymiz.

Birinchi jarayon tayyor. Shartnomalar qat'iy belgilangan.

2. Yangi VM yarating

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Bu erda hamma narsa juda qulay emas edi. Linuxdan Hyper-V da VM yaratish unchalik qulay emas. Ushbu jarayonni mexanizatsiyalashga urinishlardan biri:

  1. Ansbile WinRM orqali Windows xostiga ulanadi.
  2. Ansible powershell skriptini ishga tushiradi.
  3. Powershell skripti yangi VM yaratadi.
  4. Hyper-V/ScVMM yordamida mehmon operatsion tizimida VM yaratishda xost nomi sozlanadi.
  5. DHCP ijarasini yangilashda VM o'zining xost nomini yuboradi.
  6. Domen tekshiruvi tomonidagi standart ddns va dhcp integratsiyasi DNS yozuvini sozlaydi.
  7. Siz o'zingizning inventaringizga VM qo'shishingiz va uni Ansible bilan sozlashingiz mumkin.

3.VM shablonini yarating

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Ular bu erda hech narsa ixtiro qilishmadi - ular qadoqlash mashinasini olib ketishdi.

  1. Git omboriga paketlovchi, kickstart konfiguratsiyasini qo'shing.
  2. Hyper-v va Packer bilan maxsus jenkins slaveni o'rnatish.
  3. Biz ish yaratamiz va Jenkinsni sozlaymiz.

Ushbu havola qanday ishlaydi:

  1. Packer bo'sh VM yaratadi va ISOni oladi.
  2. VM ishga tushadi, Packer yuklash qurilmasiga floppi yoki http dan kickstart faylimizdan foydalanish buyrug'ini kiritadi.
  3. Anaconda bizning konfiguratsiyamiz bilan ishga tushirildi va OSning dastlabki konfiguratsiyasi bajarildi.
  4. Packer VM mavjud bo'lishini kutadi.
  5. VM ichidagi Packer mahalliy rejimda ishlaydi.
  6. Ansible β„–1 bosqichda ishlaydigan rollardan foydalanadi.
  7. Packer VM shablonini eksport qiladi.

75-kun: Shartnomani buzmasdan o'zgartiring = Test ansible + Testkitchen

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Koddagi konventsiyalarni yozib olish etarli bo'lmasligi mumkin. Axir, agar jarayonning nozik tomonlarida biror narsani o'zgartirmoqchi bo'lsangiz, nimanidir buzishingiz mumkin. Shuning uchun, infratuzilma holatida, aynan shu infratuzilmani sinovdan o'tkazish paydo bo'ladi. Jamoa ichidagi bilimlarni sinxronlashtirish uchun biz Ansible rollarini sinab ko'rishni boshladik. Men chuqurroq kirmayman, chunki ... o'sha paytdagi voqealarni tasvirlaydigan maqola bor Meni sinab ko'ringmi yoki YML dasturchilari Ansibleni sinab ko'rishni orzu qila olasizmi?(spoiler bu oxirgi versiya emas edi va keyinchalik hamma narsa murakkablashdi Ansible-ni sinab ko'rishni qanday boshlash kerak, loyihani bir yil ichida qayta ko'rib chiqing va aqldan ozmang).

130-kun: Balki CentOS+ansible kerak emasmi? ehtimol openshift?

Biz tushunishimiz kerakki, infratuzilmani joriy etish jarayoni yagona bo'lmagan va yon kichik loyihalar ham mavjud edi. Misol uchun, bizning ilovamizni openshift rejimida ishga tushirish bo'yicha so'rov keldi va bu bir haftadan ko'proq vaqt davomida izlanishlarga olib keldi Biz dasturni Openshift-da ishga tushiramiz va mavjud vositalarni solishtiramiz bu harakatlanish jarayonini sekinlashtirdi. Natija shuni ko'rsatdiki, openshift barcha ehtiyojlarni qoplamaydi, sizga haqiqiy apparat yoki hech bo'lmaganda yadro bilan o'ynash qobiliyati kerak.

170-kun: Openshift mos emas, keling, Windows Azure Pack bilan imkoniyatdan foydalanaylikmi?

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Hyper-V unchalik samimiy emas, SCVMM uni yaxshiroq qilmaydi. Ammo Windows Azure Pack kabi narsa bor, u SCVMM-ga qo'shimcha bo'lib, Azure-ni taqlid qiladi. Lekin, aslida, mahsulot tashlab ketilgan ko'rinadi: hujjatlarda havolalar buzilgan va juda siyrak. Ammo bizning bulutimiz hayotini soddalashtirish variantlarini o'rganish doirasida ular buni ham ko'rib chiqdilar.

250-kun: Windows Azure Pack unchalik yaxshi emas. Biz SCVMM da qolamiz

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Windows Azure Pack istiqbolli ko'rinardi, ammo keraksiz xususiyatlar uchun WAP-ni o'zining murakkabligi bilan tizimga kiritmaslikka qaror qilindi va SCVMM-da qoldi.

β„–360 kun: filni bo'lak-bo'lak eyish

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Faqat bir yil o'tgach, ko'chib o'tish uchun platforma tayyor bo'ldi va ko'chirish jarayoni boshlandi. Shu maqsadda S.M.A.R.T o'rnatildi. vazifa. Biz barcha VM-larni tekshirib chiqdik va konfiguratsiyani birma-bir aniqlay boshladik, uni Ansible-da tasvirlab berdik va testlar bilan qamrab oldik.

450-kun: Siz qanday tizimni oldingiz?

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

Jarayonning o'zi qiziq emas. Bu odatiy holdir, shuni ta'kidlash mumkinki, konfiguratsiyalarning aksariyati nisbatan sodda yoki izomorf edi va Pareto printsipiga ko'ra, VM konfiguratsiyasining 80% 20% vaqtni talab qiladi. Xuddi shu printsipga ko'ra, vaqtning 80% harakatni tayyorlashga va faqat 20% harakatning o'ziga sarflangan.

β„–540-kun: Final

Ansible: 120 oy ichida 18 VM konfiguratsiyasini CoreOS-dan CentOS-ga ko'chirish

18 oy ichida nima bo'ldi?

  1. Shartnomalar kodga aylandi.
  2. Qo'l mehnati -> Mexanizatsiyalash -> Avtomatlashtirish.

Manba: www.habr.com

a Izoh qo'shish