Sunucu dağıtımını otomatikleştirme


28

Müşterilerimin birçoğu için neredeyse hemen hemen aynı sunucular ve VPS'ler kurduğumu ve bunun çok zaman alabileceğini biliyorum. Genellikle her dağıtım arasında değişen tek şey, sunulması gereken farklı web sitesidir. Tüm bunları otomatikleştirmenin ve 56 aynı sunucuyu kurmanın sıkıcı monotonluğunu almanın kolay bir yolu var mı?

Şimdiye kadar kurduğum sunucular sadece Ubuntu idi, fakat diğer Linux işletim sistemlerini veya hatta Windows kullanmaya başlayabilirim. Şimdiye kadar Capistrano'ya baktım, ancak işi yapmak için küçük yakut programları yazmaya odaklanmış gibi görünüyor ve hiçbir bilgim yok


Yanıtlar:


20

Kukla , yapmaya çalıştığınız şey için mükemmel bir ses çıkarırken, şu anda olduğu gibi, Windows için herhangi bir destek bulunmadığına dikkat edin.

Sizin durumunuzda, bir Sunucu düğümünü makineler arasında aynı olan tüm paketler açısından tanımlarsınız. Daha sonra, tek tek ana bilgisayarları Sunucu'dan devralan düğümler olarak tanımlar ve bunun için belirli benzersiz şeyleri ayarlarsınız.

Kukla bildirimseldir - kutularınızı, her kutunun sahip olması gereken kaynaklar açısından tanımlamanızı sağlar. Yani eğer istersen ssh- o kaynak için bir sınıf yazarsın - ve sınıfın içinde FreeSB vs Ubuntu'da ssh'ın biraz farklı olarak nasıl adlandırıldığına dair bir mantık ekleyebilirsin. Ayrıca yumRedhat ve apt-getDebian merkezli dağıtımların portsiçinde ve BSD'lerin içinde kullanılmasını da biliyor . Şimdi Sunucu düğümünüzde, sadece bir satır include ssholacak - ve kukla doğru şeyi yapacak ve bunun Ubuntu veya Redhat veya FreeBSD olup olmadığını hatırlamanıza gerek kalmadan SSH'yi makineye koyacak.

İşin güzel yanı, tüm Server öğelerinin tek bir yerde yaşamasıdır - ve eğer herhangi bir noktada Sunucu düğümü tanımına eklerseniz, ALL makineleri konfigürasyonlarını buna göre güncelleyecektir.

Şu anda, sadece Kukla kullanarak üç kutu yönetiyorum - ama zaten ödedi. Bir kutuyu ayarlayarak bir hafta geçirdikten sonra, bir deneyde teşvik sunumu için kullanacağız, üzerine koyduğum Ubuntu sürümünde grafik kartı sürücüsünün çok eski olduğu ortaya çıktı (8.04). En son Ubuntu'yu (9.04) kurmak zorunda kaldım, ancak bundan sonra sadece apt-get ve kukla çalıştırmam gerekiyordu - ve bir hafta boyunca harcadığım her şey restore edildi.

Kuklanın biraz öğrenme eğrisi var, ama başarıyla başarılı bir şekilde öğrenmekten kaçındım Ruby - Bunu kullandığımı biliyorum, çünkü bu kuklaların yazıldığı şey - ama şimdiye kadar sadece örnekleri değiştirmede başarılı oldum Wiki'deki belgeler ve tarifler . Diğer bir dezavantajı, kuklanın ilk seferinde işleri yapması biraz daha uzun sürüyor. Bunun tersi, tüm makineleriniz arasında değiştirdiğiniz her şeyin tek bir yerde depolanmasıdır - kukla yapılandırmanızı bir sürüm kontrol sisteminde tutmak standart bir uygulamadır - böylece her zaman geriye bakabilir ve geçmişte sunucuları nasıl kurduğunuzu görebilirsiniz - veya başarısız bazı değişiklikleri geri alın.

Son olarak, işte beni hızlı bir şekilde başlatan basit bir kukla demosu yapan hızlı bir video .


3
Digg.com sunucularını yönetmek için kukla kullanmaktadır, bazı temel örnekler bloglarında bulunabilir: blog.digg.com/?p=335 blog.digg.com/?p=562
Adam Gibbins

Fedora yönetici ekibinin de kukla kullandığını düşünüyorum.
Mei,

9

Biz kullanmak Cobbler ve Kukla yapı ve hem gerçek ve sanal makinelerin konfigürasyon otomasyonu için.

Cobbler, bir makine profili eklemek ve güç düğmesine basmaktan başka bir şey yapmamak için DHCP, PXE önyükleme ve Kickstart'ı birbirine bağlar. VM'ler için koan komut, (bizim durumumuzda) Xen sihrini yüklemeyi başlatmak için yapar - dom0sadece şunu yazın:

koan --system vps.fqdn --server cobbler --no-gfx

daha sonra virsh consoleherhangi bir etkileşim olmadan bir VPS binasını izlemek için.

RHEL kullanıyoruz ve diskleri bölmek, ağı yapılandırmak ve farklı sunucu sınıfları için temel paketler kurmak için ayarlanmış bir demet profilimiz var. Cobbler, Debian ve Ubuntu ırklarını desteklemektedir ancak ben hiç denemedim. Bir kenara: Cobbler diğer ilginç kullanım alanları çalıştırmayı içerir memtest ISO'ları ve HP firmware güncellemeleri.

Sistemlerimiz Cobbler Puppet ile kurulduktan sonra uygulamaları yapılandırmak için devraldı, sistem gündemleri, kutuya RHN, vb. Kaydedin. Kukla, sistem konfigürasyonunun tanımlanan bildirimlere uyduğunu periyodik olarak kontrol eden bir arka plan programı olarak çalışır. tüm sunuculara Ayrıca, bakım için kapalı olan bir kutunun, canlı servise gönderilmeden önce doğru yapılandırmaya sahip olduğundan emin olmanın harika bir yolu.

Kukla gerçekten harika. Konfigürasyonunuzun her yönünü kontrol altına almanıza gerek yok - her kutuda konfigüre etmeniz gereken basit bir şeyi yöneterek başlayın ( sudoerskurallı örnek) ve oradan alın. Kukla bildirilerinizin de versiyonlandığından emin olun; hiçbir şey, neyin ayarlanması gerektiğini hatırlamak zorunda olmadan iyi bilinen bir konfigürasyona kolayca geri dönmekten daha iyidir.


6

Şu anda çalıştığım yerde, 300'ün üzerinde Linux sunucusunun üzerinde olan sunucu çiftliğimizin Linux bölümünü yönetmemiz gerekiyor. Buna çoğunlukla HP Proliants, ardından IBM 3850'ler, bazı IBM blade'leri, VMware ESX ve dahili yönetim sunucularımız için bazı KVM dahildir.

ayakkabı tamircisi

Ayakkabıcıya baktık, ancak sorun şu ki ayakkabıcı çok RHEL / Red Hat'a özgü. En azından RHEL ve SLES'i desteklememiz gerekiyor ve Ubuntu sırada.

kukla

Kuklaları düşündük, ancak daha sonra buna karşı karar verdiği için Ruby'ye karar verdik, bu da Ruby'nin yükseltilmesinin yönetim sistemimizi potansiyel olarak bozabileceği anlamına geliyor.

Sıcak tel

Hotwire, kullandığımız (dahili olarak geliştirilen, ancak açık kaynaklı) ve son birkaç yıldır bunu yaptık. Öncelikle, kurulacak sistemleri stoklar; bu, veri merkezi, raf, donanım, işletim sistemi, ağ, vb. Envanteri anlamına gelir ve ikincisi hızlı kurulum ve dağıtımı gerçekleştirir. Sistem kurulduktan sonra, hotwire'ın otomatik envanteri envanteri senkronize tutarken, cfengine bunları korur. Hotwire, Bios'taki SMBIOS / DMI verileri ile python-dmidecode aracılığıyla konuşarak sunucu donanımı hakkında bilgi sahibidir .

Bonus noktaları, envanter ve derleme sürecini bire bir birleştirmesidir, bu nedenle yönetilmesi gereken daha az şey vardır ve canlı envanter özelliği, bir şeylerin doğru olup olmadığını bildiğimiz için mükemmeldir.

Dezavantajları, kullanıcı arayüzünün hala cilalamaya ihtiyaç duymasıdır ve burada ve orada böcekler var, ancak geliştirme hala sıcak ve bildirilen hatalar nispeten hızlı bir şekilde düzeltildi.

cfengine

Cfengine kullanıyoruz çünkü onun dışında ve kukla dışında başka bir şey yok. Aslında bu iyi bir araçtır, ancak “iyi” sadece politikalarınızın ne kadar iyi olduğunun bir fonksiyonu olarak - tehlikeli politikalar belirlerseniz, o zaman küçük bir hata çok fazla hasara neden olabilir. Örneğin, politika olarak, dosyaları "değiştirmeziz", değiştiririz veya değiştirmeyiz. Ayrıca değiştirilen tüm dosyaların herhangi bir kişiyi düzenlemesini sağlayan bir üstbilgisi vardır, bir sonraki çalıştırılışında değiştirileceğini bilir (saat başı cron yoluyla çalıştırılır).

Yapılandırma ve cfengine tarafından sunuculara gönderilen tüm dosyalar da bir SCM'de tutulur ve işlem sonrası kancaları kullanarak mümkün olduğunda sözdizimini kontrol ederiz ve bu başarısız olursa, işlem reddedilir. Bu Apache gibi hoş uygulamalar için kolaydır, ancak çoğu kurumsal uygulama için kolay değildir.


Kukla aleyhine karar verdin çünkü bu Ruby'ye bağlı mı? Buna dayanarak, neredeyse her şeye karşı karar verebilirsiniz, çünkü bir libc veya çekirdek yükseltme bunu kırabilir.
Cristian Ciupitu

2
Bir noktaya değiniyorsunuz, ama sonuçta bu bir uzlaşma - bir sonraki güncellemede kaç paket hakkında "endişelenmek" istiyorum. Çekirdek / glibc yükseltme işlemi yanlış giderse - normalde hemen hemen işletim sisteminin en temel bileşeni olduğunu hemen bulmayı beklersiniz, ancak Ruby biraz farklı olursa, gerçekten farketmezsiniz, ama bunu yaptığınızda, 300 sürümü zaten yükseltilmiş ve bu sürümde çalışıyor, şimdi de Kukla mağdur. Fakat yine de, taştan hiçbir şey oymuyorum; bu sadece konuyla ilgili tercihim.
Xerxes


3

Hedef sisteme bağlı olarak kurulumu otomatikleştirmek için:

  • Debian / Ubuntu: FAI veya önceden hazırlanmış
  • RedHat / Fedora: Kickstart
  • Novell / openSuSE: AutoYaST
  • Solaris: Hızlı Başlangıç
  • Windows: unattended.sourceforge.net

Bunun üzerine yapılandırma yönetimi için kukla kullanmanızı öneririm.



2

Burada kukla için başka bir oy. Tüm sunucu ve uygulama kurulum ve konfigürasyon yönetimini yapmak için yoğun olarak kullanıyoruz. 200+ düğüm ve sayma. Windows desteği görünüşte gelişme gösteriyor, ancak hangi durumda olduğundan emin değilim.

Hala ilk işletim sistemi önyükleme tarafına bakıyoruz, ancak yukarıda belirtildiği gibi Cobbler ilginç görünüyor. Şu anda Debian / Ubuntu preseeding ile önyükleme yapan bir PXE karışımı kullanıyoruz, ancak pek uygun değil.


Hey Mike, bu soruya kukla etiketini ekleyebilir misin? Yapardım, ama gerekli temsilci yok
Paul Ivanov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.