الأصل باللغة الروسيةحسنًا ، يمكنك أن تتساءل - لماذا أستخدم حاوية الإرساء لهذا الغرض؟ ما هي المشكلة في إدخال واجهة ويب لمنظمة العمل الدولية وإدارة الخادم كالمعتاد؟
الفكر نفسه الذي كان لدي عندما حصلت على عدد قليل من الخوادم القديمة التي تتطلب إعادة إصدار. توجد الخوادم في قارة مختلفة وكانت الواجهة الوحيدة التي كنت أواجهها مجرد واجهة ويب لمنظمة العمل الدولية. وعندما اضطررت إلى إدخال بعض الأوامر اليدوية عبر Virtual Console ، اكتشفت أنه بالكاد ممكن.
لأنواع مختلفة من وحدة التحكم الافتراضية للخوادم (HP و Dells) ، عادةً ما يتم استخدام تطبيقات الويب Java. لكن Firefox و Chrome لا يدعمهما بعد الآن ، وأحدث IcedTea لا يعمل مع هذا النظام القديم على أي حال. لذلك كان لدي بعض الخيارات:
- للتثبيت في الإصدارات القديمة المتوازية من المتصفحات و Java ، في محاولة للعثور على مجموعة مطلوبة ، على نظامي. تمت تصفية هذا الخيار ، حيث أنني لا أريد تلويث نظامي لمجرد وجود عدد قليل من أوامر وحدة التحكم.
- أنشئ جهازًا ظاهريًا به أنظمة قديمة ، وقم بتثبيت Java 6 هناك واستخدم Virtual Console كما كان من قبل.
- هو نفسه كما في النقطة 2 ، ولكن مع الحاوية ، وليس الجهاز الظاهري. نظرًا لأن قلة من زملائي واجهوا نفس المشكلة ، فإنني أفضل تمرير أمر bash واحد لتشغيل Virtual Console بدلاً من مشاركة قرص Virtual Machine أو كلمات المرور الخاصة به ، إلخ.
(بصراحة ، النقطة 3 التي أدليت بها فقط بعد النقطة 2).
النقطة 3 هي ما سننفذه اليوم.
لقد استلهمت في الغالب من هذين المشروعين:
- عامل ميناء-baseimage واجهة المستخدم الرسومية
- عامل ميناء، فايرفوكس، جافا
في الواقع ، يحتوي أول
تطبيق docker-baseimage-gui على جميع التكوينات والأدوات اللازمة لبدء تشغيل تطبيقات سطح المكتب في متصفح داخل حاوية. عادةً ما تحدد متغيرات بيئة معينة وسيصبح تطبيقك متاحًا عبر المتصفح (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 هو عنوان URL لواجهة منظمة العمل الدولية الخاصة بنا ، على سبيل المثال
https://myhp.example.com
.
للأتمتة دعونا نضيف المصادقة. يتم تنفيذ تسجيل الدخول إلى منظمة العمل الدولية من خلال طلب POST بسيط ، واستجابة لذلك تحصل على قيمة session_key ثم تقوم بتمرير هذه القيمة في طلب GET. دعنا نكتشف session_key مع حليقة إذا تم تعريف متغيرات البيئة 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 (أو ما حددته في اختيارك) بالمضيف المحلي وأدخل وحدة التحكم الافتراضية لخادم HP.
يقع الكود في مستودع بوابة
عامل ميناء ايلو .
أمر كامل من سطر واحد للاتصال بوحدة التحكم الافتراضية لمنظمة العمل الدولية:
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
.
سحب الطلبات والتعليقات هي أكثر من موضع ترحيب.
يوجد مشروع مشابه للاتصال بخوادم Dell IDRAC هنا:
docker-idrac6 .