انجمنهای فارسی اوبونتو
کمک و پشتیبانی => شبکه و سرویس دهندهها => نویسنده: کیان در 29 فروردین 1393، 09:20 بظ
-
خوب ادمین باید بدونه چیکار داره میکنه! ... شاید بد نباشه بگم من چطور اینکار رو در کارهای روزانهام انجام میدم، بخصوص در مواردی که بیش از یک ادمین دسترسی به سرور داره.
یک مخزن GIT تنها برای تنظیمات وجود داره و بعد از هر تغییری این تنظیمات ثبت میشه. اینطور کاملا مشخصه که هر تغییری چه موقع، توسط چه شخصی و به چه دلیلی و به درخواست چه شخص یا بخشی انجام شده، بدون اینکه فایل تنظیمات پر بشه از توضیحات این موارد، همچنین تاریخچهای از تمامی تغییرات وجود داره و میشه هر لحظه به هر تاریخی برگشت.
nixoeenجان
روی این کمی دقیق تر میشی، میشکافی مسئله رو؟
یعنی گیت رو برای کنترل هر عملیات آپلود (پوش) و دانلود (پول) استفاده کنیم. مثلا git به جای lftp؟
-
این موضوع میتونه خیلی پیچیده بشه و در شرایطی راههای بهتری برای انجام این کار وجود داره، ولی یکی از روشهایی که من با توجه به شرایطی که دارم استفاده میکنم، البته با کمی سادهکردن، اینه:
فرض کن یک مدیر اصلی سیستم داریم به همراه دو همکار مسئول که اونها هم نیاز دارند برخی از تنظیمات رو تغییر بدند و مدیر اصلی سیستم علاقهای نداره که دسترسی 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 انجام بدید و اینطوری همیشه یک پشتیبان، همراه با ریز تمامی تغییرات انجام شده از تنظیمات اصلی سیستم خواهید داشت :)