Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Bu konuşmanın transkriptidir DevopsConf 2019-10-01 и SPbLUG 2019-09-25.

Bu, kendi kendine yazılmış bir konfigürasyon yönetim sistemi kullanan bir projenin ve Ansible'a geçişin neden 18 ay sürdüğünü anlatıyor.

Gün No. -ХХХ: Başlangıçtan önce

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Başlangıçta altyapı, Hyper-V çalıştıran birçok ayrı ana bilgisayardan oluşuyordu. Bir sanal makine oluşturmak birçok adım gerektiriyordu: diskleri doğru yere yerleştirmek, DNS'yi kaydetmek, DHCP'yi ayırmak, VM yapılandırmasını git deposuna koymak. Bu süreç kısmen mekanikleştirildi ancak örneğin VM'ler ana bilgisayarlar arasında elle dağıtıldı. Ancak örneğin geliştiriciler git'teki VM yapılandırmasını düzeltebilir ve VM'yi yeniden başlatarak bunu uygulayabilir.

Özel Konfigürasyon Yönetimi Çözümü

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Orijinal fikrin IaC olarak tasarlandığından şüpheleniyorum: yeniden başlatıldığında durumlarını sıfıra sıfırlayan birçok durum bilgisi olmayan VM. VM yapılandırma yönetimi neydi? Şematik olarak basit görünüyor:

  1. VM için statik bir MAC belirlendi.
  2. VM'ye CoreOS'lu bir ISO ve bir önyükleme diski bağlandı.
  3. CoreOS, özelleştirme komut dosyasını IP'sine göre WEB sunucusundan indirerek başlatır.
  4. Betik, IP adresine dayalı olarak VM yapılandırmasını SCP aracılığıyla indirir.
  5. Systemd birim dosyalarının taban örtüsü ve bash komut dosyalarının taban örtüsü başlatılır.

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Bu çözümün birçok bariz sorunu vardı:

  1. CoreOS ISO kullanımdan kaldırıldı.
  2. VM'leri taşırken/oluştururken birçok karmaşık otomatik eylem ve sihir.
  3. Güncelleme zorluğu ve belirli bir yazılım sürümüne ihtiyaç duyulması. Çekirdek modülleriyle daha da eğlenceli.
  4. VM'ler veri olmadan bu şekilde elde edilemedi; VM'ler ek kullanıcı verilerinin takılı olduğu bir diskle ortaya çıktı.
  5. Birisi sürekli olarak sistem birimi bağımlılıklarını bozuyordu ve CoreOS yeniden başlatıldığında donuyordu. CoreOS'taki mevcut araçları kullanarak bunu yakalamak zordu.
  6. Sırlar yönetimi.
  7. CM yoktu. CoreOS için bash ve YML yapılandırmaları vardı.

VM yapılandırmasını uygulamak için yeniden başlatmanız gerekir, ancak yeniden başlatılmayabilir. Bu bariz bir sorun gibi görünüyor, ancak kalıcı diskler yok - günlükleri kaydedecek yer yok. Tamam, günlüklerin gönderilmesi için çekirdek yükleme seçeneğini eklemeye çalışalım. Ama hayır, her şey ne kadar karmaşık.

0. Gün: Sorunu tanıyın

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Her zamanki geliştirme altyapısıydı: jenkins, test ortamları, izleme, kayıt defteri. CoreOS, k8 kümelerini barındırmak için tasarlandı; sorun CoreOS'un nasıl kullanıldığıydı. İlk adım bir yığın seçmekti. Şuna karar verdik:

  1. CentOS temel dağılım olarak, çünkü Bu, üretim ortamlarına en yakın dağıtımdır.
  2. yanıtlayıcı ' konfigürasyon yönetimi için, çünkü üzerinde kapsamlı bir inceleme yapıldı.
  3. Jenkins mevcut süreçleri otomatikleştirmek için bir çerçeve olarak, çünkü halihazırda geliştirme süreçlerinde aktif olarak kullanılıyor
  4. Hiper-V sanallaştırma platformu olarak Hikâyenin kapsamını aşan birçok neden var ama kısacası bulutları kullanamıyoruz, kendi donanımlarımızı kullanmalıyız.

30. Gün: Mevcut anlaşmaların düzeltilmesi - Kod Olarak Anlaşmalar

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Yığın temizlendiğinde taşınma hazırlıkları başladı. Mevcut anlaşmaların kod şeklinde düzeltilmesi (Kod Olarak Sözleşmeler!). Geçiş el emeği -> makineleşme -> otomasyon.

1. VM'leri yapılandırın

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Ansible bu konuda harika bir iş çıkarıyor. Minimum vücut hareketi ile VM yapılandırmalarının kontrolünü ele alabilirsiniz:

  1. Git deposu oluşturun.
  2. VM'lerin listesini envantere, yapılandırmaları ise başucu kitaplarına ve rollere koyarız.
  3. Ansible'ı çalıştırabileceğiniz özel bir jenkins kölesi kuruyoruz.
  4. Bir iş yaratıyoruz ve Jenkins'i yapılandırıyoruz.

İlk süreç hazır. Anlaşmalar sabittir.

2. Yeni VM oluşturun

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Buradaki her şey pek uygun değildi. Linux'tan Hyper-V üzerinde VM oluşturmak pek uygun değil. Bu süreci makineleştirmeye yönelik girişimlerden biri şuydu:

  1. Ansbile, WinRM aracılığıyla Windows ana bilgisayarına bağlanır.
  2. Ansible bir powershell betiğini çalıştırır.
  3. Powershell betiği yeni bir VM oluşturur.
  4. Hyper-V/ScVMM kullanılarak konuk işletim sisteminde bir VM oluşturulurken ana bilgisayar adı yapılandırılır.
  5. DHCP kirasını güncellerken VM, ana bilgisayar adını gönderir.
  6. Etki Alanı Denetleyicisi tarafındaki standart ddns & dhcp entegrasyonu, DNS kaydını yapılandırır.
  7. Envanterinize bir VM ekleyebilir ve onu Ansible ile yapılandırabilirsiniz.

3. VM şablonu oluşturun

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Burada hiçbir şey icat etmediler - bir paketleyici aldılar.

  1. Paketleyiciyi, kickstart yapılandırmasını git deposuna ekleyin.
  2. Hyper-v ve Packer ile özel bir jenkins kölesi kurma.
  3. Bir iş yaratıyoruz ve Jenkins'i yapılandırıyoruz.

Bu bağlantı nasıl çalışır:

  1. Packer boş bir VM oluşturur ve ISO'yu alır.
  2. VM önyükleme yapar, Packer, kickstart dosyamızı bir disketten veya http'den kullanmak için önyükleyiciye komutu girer.
  3. Anaconda yapılandırmamızla başlatılır ve ilk işletim sistemi yapılandırması yapılır.
  4. Packer, VM'nin kullanılabilir olmasını bekler.
  5. VM içindeki Packer, yerel modda ansible'ı çalıştırır.
  6. Ansible, 1. adımda çalıştığı rollerin tamamen aynısını kullanır.
  7. Packer, VM şablonunu dışa aktarır.

Gün #75: Anlaşmayı bozmadan yeniden düzenleme = Yanıtlayıcıyı test etme + Testkitchen

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Koddaki kuralları yakalamak yeterli olmayabilir. Sonuçta, sürecin tüm ayrıntılarında bir şeyi değiştirmek isterseniz, bir şeyi bozabilirsiniz. Dolayısıyla altyapı söz konusu olduğunda tam da bu altyapının test edilmesi ortaya çıkıyor. Ekip içindeki bilgiyi senkronize etmek için Ansible rollerini test etmeye başladık. Derinliğe girmeyeceğim çünkü... o dönemdeki olayları anlatan bir makale var Yapabiliyorsanız beni test edin veya YML programcıları Ansible'ı test etmeyi hayal ediyor mu?(spoiler bu son versiyon değildi ve daha sonra her şey daha karmaşık hale geldi) Ansible'ı test etmeye nasıl başlanır, projeyi bir yıl içinde yeniden düzenler ve çıldırmazsınız).

Gün #130: Belki CentOS+ansible'a ihtiyaç yoktur? belki açık vites?

Altyapının hayata geçirilmesi sürecinin tek süreç olmadığını ve yan alt projelerin de olduğunu anlamalıyız. Örneğin uygulamamızın openshift olarak devreye alınması yönünde bir talep geldi ve bu da bir haftadan fazla süren araştırmayla sonuçlandı. Uygulamayı Openshift'te başlatıyoruz ve mevcut araçları karşılaştırıyoruz bu da taşınma sürecini yavaşlattı. Sonuç olarak, açık vardiyanın tüm ihtiyaçları karşılamadığı ortaya çıktı; gerçek donanıma ya da en azından çekirdekle oynama yeteneğine ihtiyacınız var.

Gün #170: Openshift uygun değil, Windows Azure Pack'i deneyelim mi?

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Hyper-V pek kullanıcı dostu değil, SCVMM onu pek de iyi yapmıyor. Ancak SCVMM'ye eklenti olan ve Azure'u taklit eden Windows Azure Pack diye bir şey var. Ancak gerçekte ürün terk edilmiş görünüyor: belgelerde kopuk bağlantılar var ve çok seyrek. Ancak bulutumuzun ömrünü basitleştirmeye yönelik seçenekler üzerine yapılan çalışmanın bir parçası olarak ona da baktılar.

Gün #250: Windows Azure Paketi pek iyi değil. SCVMM'de kalıyoruz

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Windows Azure Paketi umut verici görünüyordu, ancak gereksiz özellikler uğruna WAP'ın karmaşıklıklarıyla birlikte sisteme getirilmemesine karar verildi ve SCVMM'de kaldı.

Gün #360: Fili parça parça yemek

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Sadece bir yıl sonra taşınmanın yapılacağı platform hazırdı ve taşınma süreci başladı. Bu amaçla bir SMART görevi belirlendi. Tüm VM'leri kontrol ettik ve konfigürasyonu tek tek çözmeye, Ansible'da açıklamaya ve testlerle ele almaya başladık.

Gün #450: Nasıl bir sistem aldınız?

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

Sürecin kendisi ilginç değil. Bu rutin bir durumdur; konfigürasyonların çoğunun nispeten basit veya izomorfik olduğu ve Pareto ilkesine göre VM konfigürasyonlarının %80'inin, zamanın %20'sini gerektirdiği belirtilebilir. Aynı prensibe göre, zamanın %80'i hamleyi hazırlarken, yalnızca %20'si ise hamlenin kendisinde harcanıyordu.

Gün #540: Final

Ansible: 120 VM yapılandırmasının CoreOS'tan CentOS'a 18 ayda taşınması

18 ayda ne oldu?

  1. Anlaşmalar kod haline geldi.
  2. El emeği -> makinalaştırma -> Otomasyon.

Kaynak: habr.com

Yorum ekle