سكربت fanout لإرسال الاوامر لأكثر من سيرفر في نفس الوقت

هل صادفت مرة معك وان احتجت لنفس اﻻمر على على أكثر من سيرفر ؟ كمثال تريد تحديث أنظمة الريدهات الموجودة لديك :
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 لكن عيب الطريقة هذي أنه لو أحد حصل على المفتاح الخاص بك, يمكنه عمل مايريد في السيرفر, يمكنك قراءة المزيد عن هذه الطريقة هنا.

طيب نجرب أول أمر لنا ونشوف كيف يعمل السكربت, سوف نقوم بإرسال أمر “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, اذا كنت تعرف شي مماثل ياليت تشاركنا فيه 🙂

انضم إلى المحادثة

تعليق واحد

اترك تعليقاً

اترك رداً على Unknown إلغاء الرد

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *