Sürüm kontrolü, test etme ve sürekli entegrasyon / dağıtım gibi geliştirme uygulamalarını sistem yönetimine nasıl uygularsınız?


18

Birkaç kişi tarafından kullanılan bir dizi farklı hizmete sahip bir dizi sunucuyu yöneteceğinizi düşünün. Şimdi bu sunuculardan birindeki bazı yazılımları yeniden yapılandırmak veya değiştirmek istediğinizi varsayalım. Açıkçası, üretimde olan sunucular üzerinde çalışmak istemezsiniz.

Bu bir kod değişikliği olsaydı, bir geliştirici olarak, yerel geliştirme makinemde değişiklik yaparım, yerel olarak test eder ve bir sürüm kontrol sisteminde değişiklik yapardım. Değişiklikler daha sonra bir hazırlama ortamına yerleştirilebilir, daha fazla test edilebilir ve son olarak bir üretim ortamına yerleştirilebilir. Gerekirse geri dönmem de kolay olurdu.

Genel olarak veya özellikle sistem yönetiminde bunu nasıl başarırsınız?

(Akla gelen ilk şey, sanal makineleri kullanmak ve sanal makine görüntülerini sürüm kontrolüne koymaktır, ancak şu anda farkında olmadığım birçok literatür ve akıllı çözüm olduğundan eminim.)


Teknik araçlar mı yoksa bu tür şeyleri yönetmek için çerçeveler mi soruyorsunuz? Çünkü ITIL disiplinindeki değişim ve yayın yönetimi gibi şeylerden bahsetmeden ikinci seçenek hakkında konuşmak zor olurdu.
Rob Moir

@ DJPon3 Genel yaklaşım (bunun hakkında nasıl düşünüyor) ve bunu yapmanın araçları hakkında bilmek istiyorum. Son paragrafımı başlangıç ​​noktası olarak kullanmaktan çekinmeyin.
arex1337

Yanıtlar:


15

Kısa yanıt "İşletim Sistemi dağıtım yönetimi", "Yapılandırma Yönetimi" ve "Yazılım Paketleme" dir. Uzun cevap gelir.

Daniel Pittman'ın cevabına sistem yönetiminde neyin "sistem" oluşturduğuna dair bir döküm eklemek istiyorum.

Bir sistem veya ortam aşağıdakilerden oluşacaktır:

  • Sunucular
  • İşletim sistemi
  • Yapılandırma
  • Satıcı paketleri; ve
  • Yerel paketler

Bunların zarflanması aşağıdaki gibi süreçler olacaktır:

  • İşletim sistemi dağıtımı veya görüntüleme
  • Konfigürasyon yönetimi
  • Yazılım paketi yönetimi
  • Denetim / günlüğü
  • İzleme
  • Yedekler

Bunların, aşağıdaki gibi işlevsel olmayan hedeflere ulaşmanıza yardımcı olmak için bir araya gelmesini istersiniz:

  • Tekrarlanabilirlik
  • İdame
  • Ölçülebilirlik
  • Verim
  • Eksiz
  • Testedilebilirlik
  • değişebilirlik

Bu hızlı bir beyin dökümü. Eminim daha fazlası tüm listelere eklenebilir.

Sorunuz, belirli kelimeleri kullanmadan bunlardan bazılarına değiniyor. Örneğin, kolayca konuşlandırıp geri dönebilmek istiyorsunuz, yani bakım ister; bunu bir test ortamında yapmak ve geçene kadar test etmek istersiniz; örneğin tekrarlanabilirlik, test edilebilirlik ve ölçülebilirlik; işletim sistemi ve yapılandırma dağıtımlarının tekrarlanabilirliğini istediğiniz için vm görüntülerini sürüm kontrolüne koymayı düşünüyorsunuz.

Bu konuda size yardımcı olacak birçok araç vardır, bazıları Daniel tarafından belirtilmiştir. Diğerleri:

  • Bilinen işletim sistemi ortamlarını dağıtmak için Kickstarts (RedHat tabanlı), Preseed (Debian tabanlı), WDS (MS Windows)
  • Spacewalk / Satellite (RedHat tabanlı), yapılandırma ve paket yönetimi için Grup İlkeleri (MS Windows)
  • Paket üretmek, dağıtmak, yükseltmek ve kaldırmak için YUM ve APT paketleme sistemleri (ikili yazılım setleri, bir yazılım parçası içeren veri ve yapılandırma)
  • İzleme için Nagios, OpenNMS ve SCOM
  • Yedeklemeler için Amanda, Bacula ve Windows Yedekleme Sunucusu
  • Performans izleme için Munin, PCP ve Hyperic
  • Sürüm Kontrolü için CVS, SVN, GIT veya Bazaar
  • Yapı yönetimi için Hudson ve Jenkins
  • Test için Selenyum ve Robot
  • Kayıt, iletişim ve izleme için Bugzilla, Request Tracker ve Jira

Yine, bu kapsamlı bir liste değil, ama bana rehberlik etmek için kafamda tuttuğum bir şey ve umarım size de yardımcı olacaktır.


Marvin nedir? Bir referans bulamıyorum, yoksa bu bir yazım hatası mı?
thelsdj

s / Marvin / Hudson / - @thelsdj tespit ettiğiniz için teşekkürler :-)
nearora

16

Feragatname: Ben Kuklacı'nın geliştiricilerinden biriyim.

Bariz olan sadece kavramları uygulamaktır: bir geliştirme / test / üretim döngüsü tanımlamak ve bunlar arasında değişiklikler yapmak. Sistemleri izlemek için sürüm kontrolünü kullanın.

Kısacası, bu yolu başlatmak, bu şeyleri otomatikleştiren araçları gerçekten istediğinizi keşfetmenize yol açar - esas olarak, sistem yönetimini otomatikleştirmek istediğinizdir, böylece bu teknikleri makinelerde kullanmazsınız, bunları sistemde kullanırsınız. makineleri yönetir.

Gibi araçlar Chef , Kukla , Salt ve CFEngine ikinci ihtiyacı bu adrese tüm popüler araçlardır. Sistem yönetimini sürüm kontrolü ve test edebileceğiniz merkezi bir çözüme dönüştürmenin genel yönünde çalışırlar.

DevOps hareketi Bunun nasıl iyi bilgi kaynağıdır. Kural, Geliştiriciler ve Operasyonlar personeli arasında daha iyi bir işbirliği olmakla birlikte, aynı yönde ilerlemektedir.


15
Şimdi Kukla sorularımız hakkında kimi taciz edeceğimizi biliyoruz ...
ewwhite

1

Windows dünyasında, uygulama yaşam döngüsü yönetimi ile ilgili bu sorunlar System Center 2012 ile giderilmektedir.

System Center Sanal Makine Yöneticisi'nde (SCVMM), hizmetler 'Hizmet Şablonları' (örn. Klasik üç katmanlı hizmet) kullanılarak tanımlanır ve yürütme ortamları 'Bulutlar' olarak tanımlanır (örneğin geliştirme, aşamalandırma, üretim). Hizmet Şablonları farklı Bulutlara sürümlendirilebilir (otomatik olarak). Kapakların altında, SCVMM sanallaştırılmış donanımı (VM'ler vb.) Ve yazılımı (OS, uygulama bileşenleri vb.) Sağlamak, dağıtmak ve yapılandırmak için çalışır.

System Center Service Manager, bunu bir süreç açısından bağlayan parçadır. Örneğin, sorun yönetimi ve değişiklik kontrolü.

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.