Pertanyaan Solusi apa yang ada untuk memungkinkan penggunaan kontrol revisi untuk file konfigurasi server? [Tutup]


Dalam lingkungan dengan beberapa administrator sistem, saya melihat beberapa keuntungan untuk menambahkan file konfigurasi server ke dalam sistem kontrol revisi. Paling penting adalah kemampuan untuk melacak perubahan, siapa yang membuatnya, dan tentu saja bisa memutar kembali ke konfigurasi kerja yang diketahui.

Saya terutama tertarik dengan solusi Unix / Linux, tetapi juga ingin mengetahui implementasi Windows.


85
2018-05-06 17:46




Tampaknya menduplikasi atau sangat terkait dengan pertanyaan ini serverfault.com/questions/3852/… - Zoredache


Jawaban:


Saya telah menguji ini di rumah (~ 3 host) untuk beberapa waktu sekarang, mencoba berbeda scms (RCS, Subversion, git). Pengaturan yang bekerja dengan sempurna untuk saya saat ini adalah git dengannya itu setgitperms menghubungkan.

Hal-hal yang perlu Anda pertimbangkan:

Penanganan hak akses file dan kepemilikan

  • RCS: apakah ini asli
  • Subversion: terakhir saya mencoba, Anda membutuhkan pembungkus svn untuk melakukan ini
  • git: the setgitperms hook menangani ini secara transparan (membutuhkan cukup versi terbaru dari git dengan dukungan untuk post-checkout kait, meskipun)

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

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

Akhirnya, ada beberapa direktori yang bermasalah di bawah /etc dimana paket bisa drop config snippet yang kemudian dibaca oleh beberapa program atau daemon (/etc/cron.d, /etc/modprobe.d, dll.). Beberapa program ini cukup cerdas untuk diabaikan File RCS (misalnya cron), beberapa tidak (mis. Modprobe). Sama dengan .svn direktori. Sekali lagi plus besar untuk git (hanya menciptakan satu tingkat teratas .git direktori).


52
2018-05-06 18:23



Subversion membutuhkan asvn svn.collab.net/repos/svn/trunk/contrib/client-side/asvn. Arsip SVN (asvn) akan memungkinkan pencatatan jenis file yang biasanya tidak ditangani oleh svn. Saat ini termasuk perangkat, symlink, dan kepemilikan / izin file. - Cristian Ciupitu
Apakah Anda memiliki tulisan di mana saja menunjukkan cara men-setup hook yang Anda gunakan, dll.? - GruffTech
Langgan singkat di sini: jottit.com/jg8h7 - 8jean
Berikut ini adalah posting tentang pengaturan sesuatu seperti ini di Arch Linux ARM, di harus berlaku sama baiknya di sini. zduck.com/2012/storing-your-raspberry-pi-config-in-git - silent__thought


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


28
2018-05-06 17:47



etckeeper benar-benar bagus - ia menangani pemulihan izin (tidak didukung oleh git, hg, dll) dan mendukung backend pilihan Anda (termasuk git, hg, bazaar, dll). Juga memiliki integrasi ke APT sehingga setiap kali Anda melakukan operasi apt-get, repositori / etc berkomitmen, dan melakukan commit semalam. Saya telah menggunakan ini untuk sementara dan secara keseluruhan itu jauh lebih baik daripada menggunakan VCS vanili, jika hanya untuk fitur perizinan. - RichVel


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

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


23
2018-05-06 18:03



Ya, tetapi Anda juga harus mengubah-kontrol konfigurasi Wayang / CFengine Anda. Saya juga penggemar revisi-mengendalikan output sehingga Anda dapat menjawab pertanyaan "apa adalah konfigurasi pada tanggal x? "serta" apa yang harus dikonfigurasi sesuai dengan boneka? ", dan menghubungkan masukan dengan keluaran untuk memecahkan masalah sistem manajemen konfigurasi. - Rob Chanter


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


10
2018-05-06 18:10





Saya telah melihat ke dalam Koki belakangan ini. Tidak hanya itu bisa diterjemahkan (.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 bisa verifikasi dependensi dengan sembarang node yang Anda antarmuka dengan (yaitu harus menginstal paket sudo). Chef tampaknya dapat dengan mudah diperluas di Ruby, jadi jika Anda memiliki proses khusus, Anda dapat menulis skripnya 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 sekaligus.


6
2018-05-27 20:49



Kami menggunakan Chef berat (60+ server) cukup berhasil. Semua resep dan file konfigurasi diperiksa ke Subversion. - organicveggie


Saya sedang dalam proses pelaksanaan 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 Puppet saya ada di / usr / local / etc / puppet / (FreeBSD 7.1). Semua yang diperlukan untuk menambahkan Mercurial untuk itu:

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

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

Intro yang hebat untuk Mercurial


3
2018-05-06 19:59





Saya telah menggunakan Subversion di server yang saya kelola. Bekerja dengan baik. Saya juga sudah mengatur Trac misalnya, jadi kami memiliki tampilan waktu, sistem tiket, penjelajahan, dll.

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


3
2018-05-07 16:19





Inilah kasus penggunaan kehidupan nyata: Menggunakan Subversion 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 urungkan semuanya dalam satu. Jika saya mengelola jumlah server yang jauh lebih besar dan mereka lebih dekat dalam hal konfigurasi, saya akan menggunakan sesuatu seperti Wayang seperti yang dijelaskan dalam jawaban berberich.

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


2
2018-05-06 19:11