این موضوع میتونه خیلی پیچیده بشه و در شرایطی راههای بهتری برای انجام این کار وجود داره، ولی یکی از روشهایی که من با توجه به شرایطی که دارم استفاده میکنم، البته با کمی سادهکردن، اینه:
فرض کن یک مدیر اصلی سیستم داریم به همراه دو همکار مسئول که اونها هم نیاز دارند برخی از تنظیمات رو تغییر بدند و مدیر اصلی سیستم علاقهای نداره که دسترسی SSH به اونها بده.
توی سرور برای هر قسمتی از تنظیمات یک مخزن GIT درست میکنیم. مثلا توی /etc/samba/ یک مخزن GIT ایجاد میکنیم و همه فایلهای تنظیمات Samba رو به اون اضافه میکنیم. حالا توسط سرویسی مثل Gitosis بدون نیاز به دسترسی SSH میتونیم اجازه بدیم افراد خاصی به تعدادی از این مخازن دسترسی داشته باشند و عملیات Push و Pull رو انجام بدند. علاوه بر اون، هر Commit شامل اطلاعاتی از جمله شخصی که Commit رو انجام داده، یک توضیح و همچنین تغییراتی که انجام شده رو خواهیم داشت و همیشه هم میشه تغییرات رو به حالتهای قبل برگردوند.
تا اینجا مشکل اصلی حل میشه، ولی خوب برای اینکه این سیستم کاملا مکانیزه بشه، نیاز به یک سری کارهای دیگه هم خواهد بود.
ما میتونیم از Hookهای GIT مثلا post-receive استفاده کنیم تا بعد از هر Push یک کار خاص رو انجام بدیم. برای مثال یکی از موارد مهم اینه که تغییراتی که انجام شده، به مدیر اصلی سیستم (و مسئولهای دیگه) از طریق ایمیل فرستاده بشه. همچنین برای خیلی از سرویسها بعد از تغییر تنظیمات نیاز به راهاندازی دوباره اون سرویس هست که میتونه توی همین قسمت انجام بشه و خروجی اون هم برای مدیر سیستم و فردی که این تغییرات رو اعمال کرده فرستاده بشه تا مطمئن بشه که همه چیز به خوبی پیش رفته.
توی سیستمهایی که بالا بودن اونها اهمیت بالایی داره، میشه چک کرد که که آیا سرویس با موفقیت راهاندازی مجدد شده یا نه، و در صورتی که راهاندازی دوباره موفقیتآمیز نبوده، به صورت خودکار فایلهای تنظیمات قبلی جایگزین بشه و یک بار دیگه سیستم راهاندازی بشه. همچنین اگر امنیت این سرور خیلی اهمیت بالایی داره، میشه یک Email Confirmation (یا SMS Confirmation) هم به سیستم اضافه کرد که حتی لو رفتن Private Key اون فرد، باعث نشه که به راحتی تنظیمات سیستم رو بشه تغییر داد.
دلیل پیچیدهتر شدن اون، اینه که تغییرات ممکنه روی Mail Server انجام بشه که باعث میشه دیگه ایمیلی زده نشه (پس باید دنبال یک راه حل برای فرستادن ایمیل در این شرایط بود)، یا اینکه ممکنه بیش از یک سرور داشته باشیم که نیاز باشه همه سرورها با سرور اصلی Sync بشن و ...
--
البته این روش میتونه حتی توی سیستمهای خونگی هم به سادگی اجرا بشه. کافیه توی /etc/ یک مخزن GIT درست کنید و همه تنظیمات موجود رو بهش اضافه کنید. از اون به بعد، بعد از هر تغییری، یک Commit انجام بدید و اینطوری همیشه یک پشتیبان، همراه با ریز تمامی تغییرات انجام شده از تنظیمات اصلی سیستم خواهید داشت