it-swarm-id.com

Solusi apa yang ada untuk memungkinkan penggunaan kontrol revisi untuk file konfigurasi server?

Dalam lingkungan dengan beberapa administrator sistem, saya melihat beberapa keuntungan untuk menambahkan file konfigurasi server ke sistem kontrol revisi. Yang paling menonjol adalah kemampuan untuk melacak perubahan, siapa yang membuatnya, dan tentu saja bisa kembali ke konfigurasi kerja yang dikenal.

Saya terutama tertarik pada solusi Unix/Linux, tetapi akan penasaran dengan implementasi Windows juga.

85
Dave K

Saya telah menguji ini di rumah (~ 3 host) untuk beberapa waktu sekarang, mencoba berbagai scms (RCS, Subversion, git). Setup yang berfungsi dengan baik untuk saya saat ini adalah git dengan setgitperms hook.

Hal-hal yang perlu Anda pertimbangkan:

Menangani izin dan kepemilikan file

  • RCS: apakah ini secara asli
  • Subversi: terakhir saya mencoba, Anda membutuhkan pembungkus sekitar svn untuk melakukan ini
  • git: the setgitperms hook menangani ini secara transparan (membutuhkan versi git yang cukup baru dengan dukungan untuk post-checkout kait, namun)

Juga, jika Anda tidak ingin semua /etc di bawah kontrol versi, tetapi hanya file yang benar-benar Anda modifikasi (seperti saya), Anda akan memerlukan scm yang mendukung penggunaan semacam ini.

  • RCS: hanya berfungsi pada file tunggal.
  • Subversi: Saya menemukan ini rumit.
  • git: tidak ada masalah, letakkan "* "di tingkat atas .gitignore file dan tambahkan hanya file yang ingin Anda gunakan git add --force

Akhirnya, ada beberapa direktori bermasalah di bawah /etc di mana paket dapat menjatuhkan snippet konfigurasi yang kemudian dibaca oleh beberapa program atau daemon (/etc/cron.d, /etc/modprobe.d, dll.). Beberapa program ini cukup pintar untuk mengabaikan file RCS (mis. Cron), beberapa tidak (mis. Modprobe). Hal yang sama dengan .svn direktori. Sekali lagi nilai tambah besar untuk git (hanya menciptakan satu tingkat atas .git direktori).

52
8jean

Saya sudah melakukannya secara informal dengan git, tetapi ada juga proyek etckeeper yang merupakan implementasi yang lebih lengkap dan terperinci.

28
pjz

Pilihan lain adalah dengan menggunakan alat konfigurasi server otomatis seperti Wayang atau Cfengine untuk skrip konfigurasi server Anda dalam bahasa deklaratif.

Ini pekerjaan ekstra di front-end, tetapi menggunakan utilitas seperti Puppet memungkinkan Anda untuk secara otomatis membangun kembali dan mengkonfigurasi server dengan sedikit intervensi manusia.

23
berberich

Saya telah bereksperimen dengan etckeeper yang tampaknya bekerja dengan sangat baik. Saya tidak memerlukan server terpusat, yang mungkin penting dalam beberapa situasi. Anda dapat menggunakan beberapa backend DVCS yang berbeda, sehingga Anda dapat memilih yang paling Anda kenal. Tampaknya bekerja dengan sangat baik untuk saya, tetapi saya belum mencoba mendapatkan teknologi lain di mana saya bekerja untuk mulai menggunakannya.

10
Zoredache

Saya telah melihat ke dalam Chef belakangan ini. Tidak hanya mempertahankan templates (.erb) konfigurasi dalam kontrol versi, tetapi memungkinkan Anda untuk melakukan tindakan (seperti memulai kembali layanan setelah Anda mengunggah konfigurasi ke node). Chef membantu dengan manajemen paket sehingga Anda dapat memverifikasi dependensi dengan simpul apa pun yang berinteraksi dengan Anda (mis. Harus memiliki paket Sudo yang diinstal). Chef tampaknya mudah diperluas di Ruby, jadi jika Anda memiliki proses kustom apa pun, Anda bisa skrip saja dalam kerangka yang disediakan.

Tetapi masih belum mencobanya dan Anda harus menginstal Ruby pada klien dan server dengan permata yang sesuai (ini sebenarnya tidak terlalu sulit). Secara keseluruhan terlihat sangat mudah untuk mengelola banyak server di sekali.

6
bluehavana

Saya sedang dalam proses mengimplementasikan Wayang di seluruh infrastruktur kami, dan sangat kondusif untuk menjaga datanya dalam kontrol versi.

Saya lebih suka Mercurial karena itu hanya kumpulan file dengan beberapa metadata yang disimpan dalam direktori tersembunyi (mudah dikelola, mudah dimengerti, mudah digunakan).

File wayang saya ada di/usr/local/etc/puppet/(FreeBSD 7.1). Semua yang diperlukan untuk menambahkan Mercurial ke dalamnya:

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

Semua perubahan dilakukan dengan "hg commit" sederhana. Jika perubahan menyembunyikan sesuatu, saya dapat memutar kembali setiap server ke versi file tertentu (katakanlah, sudoers) dengan satu perintah.

Intro hebat ke Mercurial

3
sh-beta

Saya telah menggunakan Subversion di server yang saya kelola. Bekerja dengan baik. Saya juga telah menyiapkan instance Trac , jadi kami memiliki tampilan timeline, sistem tiket, penelusuran, dll.

Menggunakan symlinks, cron dan Subversion I juga telah mengatur distribusi konfigurasi otomatis berdasarkan repositori Subversion, di mana setiap server Linux memperbarui repositori menggunakan svn update dengan skrip (mis. skrip firewall).

3
Martin C.

Berikut ini adalah kasus penggunaan nyata: Subversi Digunakan untuk mengelola file konfigurasi pada 4 server yang berbeda. Saya akan merekomendasikan menggunakan kontrol versi untuk file konfigurasi untuk alasan yang sama Anda akan menggunakannya dengan kode - ini adalah cadangan dan tombol undo semuanya menjadi satu. Jika saya mengelola jumlah server yang jauh lebih besar dan mereka lebih dekat dalam hal konfigurasi, saya akan menggunakan sesuatu seperti Puppet seperti yang terinci dalam jawaban berberich.

Idenya adalah bahwa Anda dapat memiliki satu repositori yang Anda dapat checkout folder tertentu di server (mis./Var/named /) jadi saya sama-sama memiliki riwayat dan cadangan file konfigurasi (cadangan adalah bonus jika Anda melakukan kesalahan menggunakan aplikasi konfigurasi GUI yang menghapus tambahan yang diedit tangan Anda batuk Server Admin di Mac OS X Server batuk). Maka mudah untuk mengujinya pada server uji dan selanjutnya memperbarui server produksi dengan file yang berfungsi tanpa menyalin file secara manual.

2
Chealion

Saya telah membuat proyek beberapa tahun yang lalu untuk melakukan hal ini: Savon

Ini menggunakan Subversion untuk menyimpan file, dan memiliki beberapa fitur tambahan, seperti melacak kepemilikan, izin, dan konteks SELinux. Ini juga memungkinkan Anda untuk secara logis memecah perubahan sistem file Anda menjadi berlapis-lapis, jadi Anda dapat misalnya melacak perubahan yang harus masuk ke semua server web Anda secara terpisah.

Subversi sangat mudah diatur dan digunakan dan ada banyak sumber daya:

Cara Dasar

Buku SVN

Tinjauan Manajemen Dokumen

0
Jimmie R. Houts

Sebagian besar perubahan kami dikelola dengan sistem Help Desk kami, bahkan untuk jenis perawatan rutin. Kami telah perlahan memindahkan dokumentasi kami ke wiki untuk kami gunakan sendiri, dan apa yang kami terbitkan kepada pengguna akhir. Memposting perubahan konfigurasi dan diskusi di baliknya, adalah hal yang bagus untuk dibuka di intranet kami.

0
Waldo

Selama bertahun-tahun saya menggunakan rcs untuk file yang saya mulai modifikasi, tetapi beberapa tahun yang lalu saya mulai meletakkan seluruh/etc di bawah kontrol git. Memerlukan beberapa pekerjaan untuk memeriksa file dalam butiran bulks (beberapa kali saya menggunakan checkin "berbagai pembaruan" besar), dan saya telah menulis beberapa skrip untuk membantu dengan ini, tetapi penjaga toko yang disebutkan tampaknya sangat menarik, saya akan segera mencoba.

0
hlovdal