حاوية Docker لإدارة خوادم HP عبر منظمة العمل الدولية

ربما تتساءل - لماذا يوجد Docker هنا؟ ما هي مشكلة الوصول إلى واجهة الويب الخاصة بمنظمة العمل الدولية وإعداد الخادم الخاص بك بشكل صحيح؟
لذلك فكرت عندما أعطوني خادمين قديمين غير ضروريين كان عليّ إعادة تثبيتهما (ما يسمى reprovision). الخوادم نفسها في الخارج ، والشيء الوحيد المتاح هو واجهة الويب. حسنًا ، وفقًا لذلك ، كان علي أن أذهب إلى Virtual Console لتنفيذ بعض الأوامر. هذا هو المكان الذي بدأت فيه.
كما تعلم ، بالنسبة لأنواع مختلفة من وحدات التحكم الافتراضية ، يتم استخدام Java عادةً ، في كل من HP و Dell. على أي حال ، كان الأمر مؤكدًا (والأنظمة قديمة جدًا). ولكن توقف Firefox و Chrome لفترة طويلة عن دعم هذه التطبيقات الصغيرة ، ولا يعمل IcedTea الجديد مع هذه الأنظمة. لذلك ، كان هناك عدة خيارات:

1. ابدأ في إنشاء حديقة حيوانات من المتصفحات وإصدارات Java على جهازك ، واختفى هذا الخيار على الفور. ليست هناك رغبة في الاستهزاء بالنظام من أجل أمرين.
2. قم بتشغيل شيء قديم جدًا على الجهاز الظاهري (من الناحية التجريبية تبين أن Java 6 مطلوبة) وقم بتهيئة كل ما تحتاجه من خلاله.
3. كما هو الحال في النقطة 2 ، فقط في الحاوية ، حيث واجه العديد من الزملاء نفس المشكلة وكان من الأسهل بكثير إرسال رابط إلى الحاوية على dockerhub بدلاً من صورة جهاز افتراضي بكل كلمات المرور وما إلى ذلك.
(في الواقع ، لقد وصلت إلى النقطة 3 فقط بعد أن فعلت النقطة 2)
النقطة 3 سنفعلها اليوم.

لقد استلهمت بشكل أساسي من مشروعين:
1. عامل ميناء قاعدة صورة واجهة المستخدم الرسومية
2. عامل ميناء فايرفوكس جافا
في الأساس المشروع الأول عامل ميناء قاعدة صورة واجهة المستخدم الرسومية يحتوي بالفعل على أدوات مساعدة وتكوينات لتشغيل تطبيقات سطح المكتب في docker. عادة ما تحتاج إلى تحديد المتغيرات القياسية وسيكون التطبيق الخاص بك يمكن الوصول إليه عبر المتصفح (websocket) أو VNC. في حالتنا ، سنعمل من خلال Firefox و VNC ، ولم يعمل من خلال websocket.
أولاً ، قم بتثبيت الحزم الضرورية - Java 6 و IcedTea:

RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list &&
apt-get update &&
apt-get -y upgrade &&
apt-get -y install firefox
nano curl
icedtea-6-plugin
icedtea-netx
openjdk-6-jre
openjdk-6-jre-headless
tzdata-java

الآن يبقى الانتقال إلى صفحة واجهة منظمة العمل الدولية وإدخال اسم المستخدم وكلمة المرور. قم بتشغيل Firefox في التشغيل التلقائي:

RUN bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}">> ~/.xinitrc' &&
bash -c 'chmod 755 ~/.xinitrc'

يحتوي متغير البيئة HILO_HOST على عنوان الويب لواجهة منظمة العمل الدولية الخاصة بنا ، على سبيل المثال myhp.example.com
لأتمتة تسجيل الدخول ، دعنا نربط التفويض. يتم تسجيل الدخول في ILO مع طلب POST عادي ، ونتيجة لذلك تحصل على JSON session_key ، والذي تقوم بعد ذلك بتمريره في طلب GET:
احسب session_key عبر curl إذا تم تحديد متغيرات البيئة HILO_USER و HILO_PASS:

export HOME=/config
export HILO_HOST=${HILO_HOST%%/}
SESSION_KEY=""
data="{"method":"login","user_login":"${HILO_USER}","password":"${HILO_PASS}"}"
if [[ -n "${HILO_USER}" && -n "${HILO_PASS}" ]]; then
    SESSION_KEY=$(curl -k -X POST "${HILO_HOST}/json/login_session" -d "$data" 2>/dev/null | grep -Eo '"session_key":"[^"]+' | sed 's/"session_key":"//')
fi
echo "SESSION_KEY=$SESSION_KEY"
echo $SESSION_KEY > /session_key

بعد تسجيل مفتاح session_key في عامل الإرساء ، يمكننا بدء تشغيل VNC:

exec x11vnc -forever -create

الآن نقوم فقط بالاتصال عبر VNC بالمنفذ 5900 (أو أي منفذ آخر من اختيارك) على المضيف المحلي والانتقال إلى وحدة التحكم الافتراضية.
كل الرموز في المستودع عميل عامل ميناء.
القيادة الكاملة للاتصال بمنظمة العمل الدولية:

docker run -d --rm --name ilo-client -p 5900:5900 -e HILO_HOST=https://ADDRESS_OF_YOUR_HOST -e HILO_USER=SOME_USERNAME -e HILO_PASS=SOME_PASSWORD sshnaidm/docker-ilo-client

حيث ADDRESS_OF_YOUR_HOST هو اسم مضيف منظمة العمل الدولية ، SOME_USERNAME هو تسجيل الدخول ، وبالتالي ، SOME_PASSWORD هي كلمة مرور منظمة العمل الدولية.
بعد ذلك ، فقط قم بتشغيل أي عميل VNC على العنوان: vnc://localhost:5900
الإضافات وطلبات السحب مرحب بها بالطبع.

يوجد مشروع مماثل للاتصال بواجهات IDRAC لأجهزة DELL: عامل ميناء idrac6.

المصدر: www.habr.com

إضافة تعليق