it-swarm.asia

Sunucu yapılandırma dosyaları için revizyon kontrolü kullanımına izin veren hangi çözümler var?

Birden çok sistem yöneticisinin bulunduğu bir ortamda, sunucu yapılandırma dosyalarını bir revizyon kontrol sistemine eklemenin birkaç avantajını görüyorum. En dikkat çekici olan, değişiklikleri yapan ve bunları yapan ve elbette bilinen çalışma yapılandırmalarına geri dönebilen yeteneğidir.

Esas olarak Unix/Linux çözümleriyle ilgileniyorum, ancak Windows uygulamalarını da merak ediyorum.

85
Dave K

Ben farklı scms (RCS, Subversion, git) çalışıyorum, bir süredir evde (~ 3 ana bilgisayar) test ettik. Şu anda benim için mükemmel çalışan kurulum setgitperms kanca ile git.

Dikkate almanız gerekenler:

Dosya izinlerini ve sahipliğini işleme

  • RCS: bunu doğal olarak yapıyor
  • Subversion: en son denediğimde, bunu yapmak için svn etrafında bir sarmalayıcıya ihtiyacınız vardı
  • git: setgitperms kancası bunu şeffaf bir şekilde ele alır (yine de post-checkout kanca desteği ile git'in oldukça yeni bir sürümüne ihtiyaç duyar)

Ayrıca, tüm /etc Sürümünün kontrolü altında değil, yalnızca gerçekte değiştirdiğiniz dosyaları (benim gibi) istemiyorsanız, bu tür kullanımı destekleyen bir scm'ye ihtiyacınız olacaktır.

  • RCS: Yine de yalnızca tek dosyalar üzerinde çalışır.
  • Subversion: Bunu zor buldum.
  • git: sorun yok, üst düzey * dosyasına ".gitignore" yazın ve yalnızca git add --force kullanarak istediğiniz dosyaları ekleyin

Son olarak, /etc Altında bazı paket veya program tarafından okunan yapılandırma snippet'lerini bırakabilen bazı sorunlu dizinler vardır (/etc/cron.d, /etc/modprobe.d Vb.). Bu programlardan bazıları RCS dosyalarını (ör. Cron) yok sayacak kadar akıllıdır, bazıları değildir (örneğin modprobe). .svn Dizinleri ile aynı şey. Yine git için büyük bir artı (yalnızca bir üst düzey .git Dizini oluşturur).

52
8jean

Git ile gayri resmi olarak yaptım, ancak daha eksiksiz ve ayrıntılı bir uygulama olan etckeeper projesi de var.

28
pjz

Başka bir seçenek, sunucu yapılandırmalarınızı bildirici bir dilde komut dosyası oluşturmak için Kukla veya Cfengine gibi otomatik bir sunucu yapılandırma aracı kullanmaktır.

Ön uçta ekstra çalışma var, ancak Kukla gibi bir yardımcı program kullanmak, çok az insan müdahalesi ile bir sunucuyu otomatik olarak yeniden oluşturmanıza ve yapılandırmanıza izin verir.

23
berberich

Oldukça iyi çalışıyor gibi görünen etckeeper ile denemeler yapıyorum. Bazı durumlarda önemli olabilecek merkezi bir sunucuya ihtiyacım yok. Birkaç farklı DVCS arka ucu kullanabilirsiniz, böylece en tanıdık olanı seçebilirsiniz. Benim için çok iyi çalışıyor gibi görünüyor, ancak henüz kullanmaya başlamak için çalıştığım diğer teknolojileri almaya çalışmadım.

10
Zoredache

Son zamanlarda Şef araştırıyorum. Sürüm kontrolünde yalnızca templatable (.erb) yapılandırmalarını korumakla kalmaz, yapılandırmaları düğüme yükledikten sonra ( bir hizmeti yeniden başlatma gibi) eylemler gerçekleştirmenize izin verir. Chef, paket yönetimine yardımcı olur, böylece bağımlılıkları doğrulayın arabirim kurduğunuz herhangi bir düğümle (yani Sudo paketinin kurulu olması gerekir). Şef, Ruby'de kolayca genişletilebilir gibi görünüyor, bu nedenle herhangi bir özel işleminiz varsa, sağlanan çerçeve içinde komut dosyası oluşturabilirsiniz.

Ama yine de denemedim ve uygun mücevherlerle istemci ve sunucuya Ruby) yüklemeniz gerekiyor (bu gerçekten zor değil) Genel olarak birçok sunucuyu yönetmek gerçekten kolay görünüyor bir Zamanlar.

6
bluehavana

Kuklayı altyapımız boyunca uygulama sürecindeyim ve verilerini sürüm kontrolünde tutmak çok elverişli.

Mercurial'ı tercih ediyorum, çünkü sadece gizli dizinlerde saklanan bazı meta verileri olan bir dosya koleksiyonu (yönetilmesi kolay, anlaşılması kolay, kullanımı kolay).

Kukla dosyalarım/usr/local/etc/kukla/(FreeBSD 7.1) konumunda. Mercurial'ı eklemek için gereken her şey:

> cd /usr/local/etc/puppet
> hg init

Tüm değişiklikler basit bir "hg taahhüdü" ile yapılır. Bir değişiklik bir şey hortumlarsa, her bir sunucuyu tek bir komutla dosyanın belirli bir sürümüne (örneğin, sudoers) geri alabilirim.

Mercurial'a büyük giriş

3
sh-beta

Subversion'u yönettiğim sunucularda kullanıyorum. İyi çalışıyor. Ayrıca bir Trac örneği ayarladım, bu yüzden bir zaman çizelgesi görünümü, biletleme sistemi, göz atma vb.

Symlinks, cron ve Subversion kullanarak Subversion veri havuzuna dayalı otomatik yapılandırma dağıtımı da kurdum, burada her Linux sunucusunun svn update ile komut dosyaları (ör. güvenlik duvarı komut dosyaları).

3
Martin C.

İşte gerçek hayat kullanım örneği: 4 farklı sunucudaki yapılandırma dosyalarını yönetmek için Subversion kullanıldı. Yapılandırma dosyaları için sürüm denetimini kodla kullanmanızın aynı nedeni kullanmanızı öneririm - hepsi bir arada bir yedekleme ve geri alma düğmesi. Çok daha büyük miktarda sunucuları yönetiyor olsaydım ve yapılandırma açısından çok daha yakın olsaydım, berberich'in cevabında ayrıntılı olarak Puppet gibi bir şey kullanıyordum.

Fikir, sunuculardaki belirli klasörleri (örn./Var/named /) kontrol edebileceğiniz bir havuzun olabileceği şekilde, hem geçmiş hem de yapılandırma dosyalarının bir yedeğine sahibim (hatayı yaparsanız yedekleme bir bonus düzenlenmiş eklemelerinizi silen bir GUI yapılandırma uygulaması kullanma öksürük Mac OS X Server'da Sunucu Yöneticisi öksürük). Daha sonra bir test sunucusunda test etmek ve daha sonra üretim sunucusunu dosyaları manuel olarak kopyalamadan çalışan dosyalarla güncellemek kolaydır.

2
Chealion

Birkaç yıl önce tam olarak bunu yapmak için bir proje oluşturdum: Savon

Dosyaları depolamak için Subversion kullanır ve sahiplik, izinler ve SELinux bağlamını izleme gibi bazı ek özelliklere sahiptir. Ayrıca, dosya sistemi değişikliklerinizi mantıksal olarak katmanlara ayırmanıza izin verir, böylece tüm web sunucularınıza ayrı ayrı gitmesi gereken değişiklikleri izleyebilirsiniz.

Subversion'un kurulumu ve kullanımı çok kolaydır ve birçok kaynak vardır:

Temel Nasıl Yapılır

SVN Kitabı

Doküman Yönetimine Genel Bakış

0
Jimmie R. Houts

Değişikliklerimizin çoğu, rutin bakım türü şeyler için bile Yardım Masası sistemimizle yönetilir. Belgelerimizi yavaş yavaş kendi kullanımımız ve son kullanıcılara yayınladığımız şeyler için bir wiki'ye taşıyoruz. Konfigürasyon değişikliklerini ve arkasındaki tartışmayı yayınlamak, intranetimizde açık olmak güzel.

0
Waldo

Uzun yıllar boyunca değiştirmeye başladığım dosyalar için rcs kullandım, ancak birkaç yıl önce bütün/etc'yi git kontrol altına almaya başladım. Granül yığınlar halinde dosyaları kontrol etmek için biraz çalışma gerektirir (bazen büyük bir "çeşitli güncellemeler" check-in başvurmak) ve ben bu konuda yardımcı olmak için bazı komut dosyaları yazdım, ama bahsedilen etckeeper çok ilginç görünüyor, hemen deneyeceğim.

0
hlovdal