هل صادفت مرة معك وان احتجت لنفس اﻻمر على على أكثر من سيرفر ؟ كمثال تريد تحديث أنظمة الريدهات الموجودة لديك :
yum update -y
طبعاً لن تواجه مشكلة لو كان عندك سيرفرين او 3 أو حتى 5 , لكن لمّا نتكلم عن أكثر من 20 سيرفر , أكيد سوف تتعرض لمشكلة , لأنه من غير الطبيعي انك تدخل على كل سيرفر وتنفذ نفس اﻻمر ! دائماً مدير اﻻنظمة الجيّد لايفعل نفس الشيئ مرتين !
طبعاً يوجد مايعرف بconfiguration managmant softwear مثل puppet,chef , هذه اﻻدوات جداً احترافية وتحتاج كثير من الوقت والمعرفة عشان تقوم في بنائها في البيئة الخاصة بك.
اليوم راح أتكلم عن سكربت بسيط يدعى fanout , وظيفة السكربت هذا انه يقوم بإرسال اﻻمر نفسه الى العدد الذي تطلبه من السيرفرات ومن ثم يقوم بجمع كل مخرجات السيرفرات وعرضها لك على الشاشة بشكل مرتب وبسيط !
أحياناً أيضاً تحتاج انك تنفذ نفس الأمر على عدد من السيرفرات في نفس الوقت, مثل في حالة إعدادك للـCluster تحتاج بدء بعض الخدمات في نفس الوقت أو لن تتمكن من تشغيل الخدمة.
طيب نجي للشغل وطريقة الإستخدام, قم بتحميل اﻻداءة من هنا.
نقوم الان بفك الضغط عن المجلد
tar -xvf fanout-current.tar.gz
ثم اﻻنتقال للمجلد الذي قمنا بإستخراجه
cd fanout-current
ثم تقوم ببناء البرنامج
[root@centos57 fanout-current]# make
Installing files… bin directory… fanout fanterm fanmux… doc directory… AUTHORS COPYING CREDITS ChangeLog INSTALL Makefile NEWS README TODO… done!
طيب قبل ﻻنبدأ بإستخدام هذا السكربت, نحتاج نخزن السيرفرات الخاصة بنا في متغير مثلاً اسمه SERVERS
export SERVERS=”root@192.168.1.4 root@192.168.1.6″
هنا في حالتي أريد الاتصال في سيرفرين فقط.
أيضاً شي جداً مهم ! عشان السكربت يعمل بشكل ممتاز, تحتاج اﻻتصال عن طريق الـssh بطريقة Passphrase-Less Authentication لكن عيب الطريقة هذي أنه لو أحد حصل على المفتاح الخاص بك, يمكنه عمل مايريد في السيرفر, يمكنك قراءة المزيد عن هذه الطريقة هنا.
./fanout “$SERVERS” ‘uname -a’
Starting root@192.168.1.4
Starting root@192.168.1.6
Fanout executing “uname -a”
Start time Tue Sep 11 22:00:24 AST 2012 , End time Tue Sep 11 22:00:28 AST 2012
==== As root on 192.168.1.4 ====
Linux centos57 2.6.18-274.el5 #1 SMP Fri Jul 22 04:49:12 EDT 2011 i686 i686 i386 GNU/Linux
طيب نجرب أول أمر لنا ونشوف كيف يعمل السكربت, سوف نقوم بإرسال أمر “uname -a “
./fanout “$SERVERS” ‘uname -a’
المخرجات صارت كالتالي
Starting root@192.168.1.4
Starting root@192.168.1.6
Fanout executing “uname -a”
Start time Tue Sep 11 22:00:24 AST 2012 , End time Tue Sep 11 22:00:28 AST 2012
==== As root on 192.168.1.4 ====
Linux centos57 2.6.18-274.el5 #1 SMP Fri Jul 22 04:49:12 EDT 2011 i686 i686 i386 GNU/Linux
==== As root on 192.168.1.6 ====
Linux centos57 2.6.18-274.el5 #1 SMP Fri Jul 22 04:49:12 EDT 2011 i686 i686 i386 GNU/Linux
Exiting fanout, cleaning up…done.
سهل صح ؟ 😀
أنا صراحة استفدت بشكل كبير من هذا السكربت خاصة في أمور الـClustering, اذا كنت تعرف شي مماثل ياليت تشاركنا فيه 🙂

جميل جميل جمييييييييييييييييييييييييييييل مادام الموضوع كذا ان شاء الله الامور طيبه
شكرا لك حليت لي ازمه