Kami telah memigrasi banyak kode sumber ke git dan sangat senang dengan solusi kami saat ini. Kami ingin agar file konfigurasi server kami diversi versi pada sistem yang sama, tetapi ada beberapa hal yang tidak berfungsi seperti yang kami inginkan dan saya harap seseorang dapat membagikan pengalamannya di sini.
Pertanyaan ini mirip dengan Menggunakan kontrol revisi untuk file konfigurasi server? , tetapi kami memiliki beberapa persyaratan khusus yang tidak berfungsi dengan saran pada pertanyaan itu.
Pengaturan saat ini menggunakan subversi untuk file konfigurasi. Repositori yang sesuai terlihat seperti ini
/ # root repositori + - www.domain.com/ # konfigurasi untuk www | \ - dll / | \ - apache2 / + - dev.domain.com/ # konfigurasi untuk dev | + - dll / | \--memilih/ | \ - app1 / | konfigurasi \ - conf / # untuk app1 di dev \ - staging.domain.com/ # konfigurasi untuk staging
Dengan subversi ini akan berfungsi dengan baik, karena mungkin saja checkout sub-direktori repositori. Selain itu Anda dapat menggunakan svn: eksternal untuk menunjuk ke satu struktur umum untuk beberapa pengaturan konfigurasi yang berbeda. Kami hanya harus berurusan dengan file .svn di semua direktori berversi. Git di sisi lain tidak memiliki svn: pemeriksaan eksternal dan jarang selalu memerlukan jalur dari root ke direktori aktual agar sama.
Ketika membahas migrasi ke git, saya mencoba menuliskan Persyaratan utama untuk versi konfigurasi server:
- kami hanya ingin satu repositori
- harus dimungkinkan untuk dengan mudah mendorong perubahan ke remote pusat
- perubahan harus berisi penulis asli
Apakah ada cara yang baik untuk memiliki semua konfigurasi dalam satu repositori dan hanya memiliki sub-path sebagai copy pekerjaan? Saat ini saya sedang mempertimbangkan dua pendekatan, tetapi ingin menanyakan pertanyaan ini terlebih dahulu
- Jika repositori .git berada di lokasi yang tetap, misalnya di suatu tempat di / var , kita bisa menautkan ke sub-path dari direktori kerja "target". Masalah utama: Saya tidak akan tahu cara untuk "menautkan" dari / etc ke direktori lain untuk hanya mengimpor konten, kecuali menghubungkan satu file.
- Saya menemukan alternatif lain pada pertanyaan SO ini , menyarankan untuk memiliki beberapa cabang dalam satu repositori. Ini tentunya akan menambah kerumitan, tetapi saya bisa melihat kami mencoba cara ini.
Menggunakan git pada satu mesin untuk manajemen file konfigurasi berfungsi dengan baik, tapi saya percaya pasti ada seseorang yang menggunakannya dengan cara yang ingin kita gunakan.
Kariem terima kasih
sumber
/
karena izin tulis.On a new machine, clone the git repo and check out the branch for that machine type
. Bisakah saya membuat cabang lain tidak dapat diakses (untuk alasan keamanan)?Agak sulit di sini tapi Kedengarannya seperti kail penerima pos bisa melakukan pekerjaan
Master repo disimpan di / var / master
klon pengait ke / var / localclone
lalu menyalin rincian spesifik host.
Anda perlu mengatur hook .git / pasca-terima secara lokal di setiap server (dengan pengaturan yang sesuai)
Ini juga terdengar seperti Anda menginginkan sesuatu yang lebih seperti boneka atau koki daripada git untuk ini, ini akan memungkinkan Anda untuk menjalankan git untuk mengelola konfigurasi dan modul secara terpusat dan meminta koki wayang \ mengelola penyebaran dan verifikasi untuk Anda
sumber
di sini adalah pekerjaan cepat yang saya pikirkan
1. Memiliki repositori pusat di katakan
/var/repo
2. Masukkan file yang bersifat global ke semua domain di direktori itu.
3. Buat cabang untuk setiap subdomain
/var/repo/subdomain1
,/var/repo/subdomain2
dll.4. Buat kait pos di mana setiap dorongan ke cabang digabung dengan master.
Jadi ketika Anda mengubah konfigurasi
/var/repo/subdomain2
itu segera digabungkan dengan master sehingga Anda dapat menarik repo sepenuhnya dan memiliki semua file konfigurasiKetika Anda ingin menarik konfigurasi subdomain individu, cukup tarik cabang yang sesuai.
Bagaimana Anda memasukkan file konfigurasi Anda ke masalah
/var/repo/*
yang sama sekali berbeda (tab cron, saya bisa memikirkan)~ $
sumber