Linux Toplu / Uzaktan Yönetim


10

Dahili BT altyapımızın yanı sıra, çevrimiçi dünya için hizmetlerimizi barındıran yaklaşık 500 Linux makinemiz var. Veritabanı An, Ürün An, NFS, Backoffice ve benzeri gibi bir grup kümede gruplandırılırlar. Ayrıca, şartnamelerimize ve gereksinimlerimize göre harici bir sağlayıcı tarafından yönetilir.

Bununla birlikte, (web-) yazılım geliştirme, kullanıma sunma ve dağıtma sırasında çok fazla sorunla karşı karşıyayız - özellikle dev ve evreleme ortamlarının canlı sistemlerle neredeyse hiçbir ortak yanı olmadığından (kötü ayrıntıları yedekliyorum ..) .

Böylece, sanal makineler yaratmaya çalıştım, çeşitli canlı sistemleri olabildiğince kopyaladım ve bunları geliştiriciler için şeffaf bir şekilde "gerçek" olanlar yerine geliştirme veritabanlarına bağlamaya hazırladım (değiller root). Bu oldukça iyi çalışıyor, ama ...

Birinin bu sistemleri uzaktan ve toplu olarak nasıl yönetebileceğini merak ediyordum ? Farkında olmadığım bir yazılım ailesi var mı? Ya da en azından, aşina olması gereken bazı teknikler veya ilkeler?

Her geliştiriciye yerel olarak çalıştırılacak bir dizi resim sunacağız (VirtualBox). KG bölümü. sanal kümeler (XEN veya Hyper-V) alır. Ek bir sunucu modülü sağlamam gerekirse, yeni bir veritabanı bağlantısını yeniden yönlendirir veya yalnızca paket yöneticisi tarafından sağlanan her şeyi güncellemek istersem ... bunu her sistemde oturum açmaya ve / veya meslektaşlarımdan bir fikstür-script indirip çalıştırmasını ister misiniz?

Çok sayıda çözüm olduğuna inanıyorum. Bir şekilde arama motorlarına doğru anahtar kelimeleri girmek için çok aptalım ... Yoksa bu sorun göründüğü kadar önemsiz değil mi?

Kayıt için:

  • Hemen hemen tüm sistemler Debian GNU / Linux 6.x "squeeze" çalıştırıyor
  • Hiçbir geliştirici iş istasyonunda belirli bir işletim sistemini kullanmaya zorlanmaz
  • Bütçe elbette sınırlıdır, ancak tescilli yazılım satın almak için çok küçük değildir
  • Yukarıda adı geçen sağlayıcıyı içerecek bir çözüm tercih edilir

Yanıtlar:


15

Tam olarak neye ihtiyacınız olduğuna ve ne aradığınıza bağlıdır. Ancak genel olarak " yapılandırma yönetimi için aşağıdakiler gibi birden fazla çözüm vardır :

  1. kukla
  2. şef
  3. cfengine
  4. yanıtlayıcı '
  5. tuz

Ben şahsen büyük bir topluluk ve sağlanan dış tarifleri bir sürü olarak kukla tavsiye ederim. Bu, sistemleri otomatik olarak yapılandırmanıza ve yönetmenize olanak tanır. Bunu kendi havuzları ve otomatik güncellemelerle birleştirirseniz unattended-upgradessistemi otomatik olarak güncelleyebilirsiniz.

Başka bir çözüm, company-baseotomatik olarak gerekli yazılıma bağlı olan ve sisteminizi otomatik olarak yapılandırabilen vb.

Ayrıca otomatik dağıtımları (barebone ve sanallaştırılmış) da incelemelisiniz. Bunu yapılandırma yönetimi veya kendi havuzunuzla birleştirirseniz, sistemlerinizi kolayca otomatikleştirip yeniden yükleyebilirsiniz. Otomatik yüklemeye başlamak istiyorsanız, libvirt'in yanı sıra çıplak kemik kurulumlarını destekleyen ve entegre kukla desteğine sahip olan forman'a bir göz atın . Bunu kendiniz yapmak istiyorsanız , sisteminizi otomatik olarak yapılandırmak için kickstart (redhat ve ark.) Veya "ön tohumlama" ya bakabilirsiniz . Debian için debootstrap veya sanallaştırılmış görüntüleri destekleyen grml-debootstrap adlı bir sarmalayıcı da kullanabilirsiniz .

Geliştiricinizle için VirtualBox görüntüler sağlayarak yardım etmek bakabilirsiniz serseri Eğer VirtualBox sanal ortam özelleştirmek için şef, kukla ve kabuk komut dosyalarını destekleyen sanallaştırılmış sistemlerinin oluşturulmasını otomatikleştirmek için izin verir.

Çözümü mevcut sağlayıcınız tarafından kullanmak istiyorsanız, sistemlerinizi nasıl yönettiklerini sormalısınız, ancak muhtemelen bir tür yapılandırma yönetimi olacaktır. Yapılandırma sunucusuna erişebiliyorsanız, aracılarını sistemlerinizde çalıştırmak mümkün olabilir.

Google anahtar içine bakmak için devops, configuration management, it automationve server orchestration.

Kısacası, mümkün olduğunca otomatikleştirin ve bir şeyler manuel yapmayı düşünmeyin.


1
Teşekkür ederim! Okumak için çok şey var, ama oldukça umut verici görünüyor.
mjhennig

@mjhennig ben de biraz daha bilgi ekledim. konuşlandırma. Çok sayıda kaynak var, ancak en önemlisi ssh / dağıtılmış kabuklarla kendi başınıza bir şeyler yapmamalı, bunun için bir çeşit sisteme sahip olmalısınız.
Ulrich Dangel

2
Özellikle mevcut araçlar amaca uygun değilse, kendi başınıza bir şeyler yapmakla ilgili yanlış bir şey yoktur. Kukla gibi sistemler, aslında yapılandırma yönetimi değil, büyük ölçüde sistem yönetim araçlarıdır. Kullandığım sistemlerin büyük bir çoğunluğuna merkezi bir sunucudan bile erişilemiyor, ancak (her şeyden) vpn üzerindeki kullanıcıların dizüstü bilgisayarlarından üç yıl boyunca bunu değiştirmeye çalışıyorlar. BT departmanımız bölgelere göre ayrılmıştır, çünkü her bölge diğerine düzgün bir şekilde erişemez. Bazı durumlarda evde büyüyen komut dosyaları gereklidir. Yenilik de burada başlar.
Arcege

3
@Arcege yorumunuzu henüz yeni çıkardım, komut dosyaları gerekli ve tüm altyapınızı aynı anda dönüştürmek zorunda değilsiniz. En önemli kısım, işleri otomatikleştirmek ve tekrarlanabilir hale getirmektir. Ancak kukla ve şefin açıklayıcı doğasının bazı benzersiz yönleri vardır, örneğin kukla sınıflarını test edebilir ve doğrulayabilirsiniz cucumber-puppet. Tabii ki mevcut bileşenleri yeniden kullanarak kendi çerçevenizi geliştirebilir / büyütebilirsiniz, ancak OP'nin şu anda yerinde bir şeyi yok gibi geliyordu ve sıfırdan başlarsanız mevcut bir çerçeveyi kullanmanın en iyisi olduğunu düşünüyorum.
Ulrich Dangel

Evet, otomatik / tekrarlanabilir işlemlere katılıyorum. Jenkins / Oc4j ve Subversion / Bugzilla entegrasyonu gibi mevcut sistemler arasında arayüz oluşturmak için bir dizi otomatik veya basmalı ev tipi komut dosyam var. "Gerçekten kendi başınıza bir şeyler yapmamalısınız" yorumunuzla (kesinlikle) aynı fikirde değilim. Durumumda tarif ettiğim gibi bazen mevcut çerçeveler geçerli olmayabilir.
Arcege

3

Ulrich, yazılım dağıtımı ve otomatik sunucu kurulumu ile ilgili cevabı zaten verdi.

Bunun arkasındaki ilkeler

  • Sunucularınızın nasıl görünmesi gerektiğini tanımlayın - bu, varsayılan olarak yüklenen ortak yazılımı, bölümleme şemasını ve dosya sistemi düzenini içerir
  • Üretim, evreleme, test ve geliştirme sunucuları bu temel standartlara göre farklılık göstermemelidir (aksi takdirde daha sonra yaptığınız gibi sorunlarla karşılaşırsınız)
  • Yaptığınız TÜM değişiklikleri belgelemek için uygun bir değişiklik yönetimi kullanın (herhangi bir yapılandırmada küçük bir satırlık değişiklikler dahil)
  • Her zaman önce testte, sonra geliştirmede, sonra evrelemede ve son üretimde değiştirir misiniz?

Çok sayıda sunucuyu yönetmek için kullanışlı bir araç istediniz - kişisel favorim cluster-ssh ( cssh). Bir kez yazın ve aynı anda birçok sunucuda değişiklik yapın.

Bir sorun fark ederseniz ve sorunu gideren bir düzeltmeniz varsa:

  1. Düzeltmeyi gerçekten çalışıyorsa Test / Dev / Staging / Prod (yukarıya bakın) uygulayın
  2. Sanal şablonlarınıza düzeltmeyi uygulayın, böylece gelecekteki VM klonlarında bu hata oluşmaz
  3. Düzeltmeyi fiziksel yükleme işleminize uygulayın (kickstart / autoyast / neyse)
  4. Düzeltmeyi TÜM sunuculara uygulayın

Bunu düzeltmek için çok sayıda sunucu ile karşı karşıyaysanız, iyi belgelenmesi gereken bir süreçtir ve sonunda farklı bir ekip düzeltmenin tamamen uygulanıp uygulanmadığını kontrol etmelidir.

Bu amaçla Mantis (açık kaynaklı, PHP) kullanıyoruz.


2

Birden fazla ülkede yaklaşık 30 ürünü ve birkaç yüz sunucuyu yönetiyorum. Ben yazılım konfigürasyon yöneticisiyim, bu yüzden root (tasarım) ile erişimim yok, veritabanlarına veya sunucularına (yine tasarımla) dokunmuyorum ve kurumsal güvenlik nedeniyle çok fazla atlamak zorundayım. Ancak veritabanı bağlantıları ve değişiklikleri de dahil olmak üzere test, evreleme ve üretimdeki yapılandırmaları yönetiyorum. Ben kombinasyonlarını kullanarak sunuculara çıkmak komut bir dizi var ssh, pythonve komut kabuk.

Düşünülmesi gereken başlıca şeyler:

  1. Sunucularınızla ne tür etkileşimler yapacaksınız? Sadece dosya yüklemeleri mi? Komut satırı programları mı çalıştırıyorsunuz? Uzak X istemcileri mi çalıştırıyorsunuz?
  2. Bu sunuculara erişmek için ne düzeyde güvenlik gerekiyor? Güvenlik duvarları, güvenli ağlar, vpn? Mı ssh, yeterli ve merkezi bir güvenli konumdan?
  3. Her sunucuda ne kadar otomatikleştirilebilir? Her sunucuya bir program yükleyip çalıştırabilir misiniz, yoksa programı sshuzaktan çalıştırmak gibi bir şey aracılığıyla mı yayınlamanız gerekiyor? expectBir komut satırı çağırma ile komut dosyası yazabilir misiniz?

VirtualBox, adil sshya puppetda Ulrich gibi sistemler aracılığıyla yönetebileceğiniz birçok komut satırı aracı sağlar .


2
Sadece küçük bir öneri yeniden. virtualbox, bir göz vagrantup.com o basitleştirmek ve sanal görüntülerin oluşturulmasını otomatik hale getirebilirsiniz.
Ulrich Dangel

Ne yazık ki, uzak test ortamları arasında basit ağ erişimi elde etmek bile neredeyse imkansızdır. Bir sanal kutu grubu kurmak daha da zor olurdu. Sadece 'standart RedHat' depolarının bir parçası olmadığından BT'den standart yazılımı yıl boyunca güncel olmayan bir şeyle güncellemesini istemekte sorun yaşıyorum.
Arcege

Eski yazılım wrt deneyimlerime yardımcı olan şey, ya yazılımın EOL olduğunu ya da güvenlik sorunları olduğunu göstermektir. Ağ kurulumuna / bağlantılarına ulaşmak genellikle daha zordur, belki farklı test ortamlarını bağlamanın paradan tasarruf etmeyi, süreçleri basitleştirmeyi, KG zamandan tasarruf etmeyi veya test ortamını daha gerçekçi hale getirmeyi nasıl vurguladığını vurgulamaya çalışın. Gemideki farklı şubelerden insanları alırsanız da yardımcı olabilir.
Ulrich Dangel
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.