کانتینر داکر برای مدیریت سرورهای HP از طریق ILO

احتمالاً ممکن است تعجب کنید - چرا داکر در اینجا وجود دارد؟ مشکل ورود به رابط وب ILO و راه اندازی سرور خود در صورت نیاز چیست؟
این همان چیزی بود که وقتی آنها چند سرور غیر ضروری قدیمی را به من دادند که باید دوباره نصب کنم (چیزی که Reprovision نامیده می شود) فکر کردم. خود سرور در خارج از کشور قرار دارد، تنها چیزی که در دسترس است رابط وب است. خوب، بر این اساس، من مجبور شدم برای اجرای برخی از دستورات به کنسول مجازی بروم. از آنجا شروع شد.
همانطور که می دانید جاوا معمولا برای انواع مختلف کنسول های مجازی چه در اچ پی یا دل استفاده می شود. حداقل قبلاً اینگونه بود (و سیستم ها بسیار قدیمی هستند). اما فایرفاکس و کروم از مدت ها قبل پشتیبانی از این اپلت ها را متوقف کردند و IcedTea جدید با این سیستم ها کار نمی کند. بنابراین، چندین گزینه ظاهر شد:

1. شروع به ساخت باغ وحش از مرورگرها و نسخه های جاوا در دستگاه خود کنید، این گزینه دیگر مورد نیاز نبود. هیچ تمایلی به تمسخر سیستم به خاطر چند دستور وجود ندارد.
2. چیزی کاملا قدیمی را روی ماشین مجازی راه اندازی کنید (به طور آزمایشی مشخص شد که به جاوا 6 نیاز دارید) و هر چیزی را که نیاز دارید از طریق آن پیکربندی کنید.
3. مثل نقطه 2، فقط در یک کانتینر، چون چندین همکار با همین مشکل مواجه شدند و انتقال لینک به یک کانتینر در داکرهاب بسیار راحت تر از تصویر ماشین مجازی، با همه پسوردها و غیره است.
(در واقع، من فقط بعد از انجام نقطه 3 به نقطه 2 رسیدم)
امروز نقطه 3 را انجام خواهیم داد.

من عمدتا از دو پروژه الهام گرفتم:
1. docker-baseimage-gui
2. docker-firefox-java
اساسا پروژه اول docker-baseimage-gui قبلاً شامل ابزارها و تنظیماتی برای اجرای برنامه های دسکتاپ در Docker است. به طور معمول شما نیاز به تعریف متغیرهای استاندارد دارید و برنامه شما از طریق مرورگر (websocket) یا VNC قابل دسترسی خواهد بود. در مورد ما، ما از طریق فایرفاکس و VNC راه اندازی خواهیم کرد؛ از طریق وب سوکت کار نمی کند.
ابتدا، اجازه دهید بسته های لازم را نصب کنیم - 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

اکنون تنها کاری که باید انجام دهید این است که به صفحه رابط ILO رفته و نام کاربری و رمز عبور خود را وارد کنید. فایرفاکس را در راه اندازی خودکار راه اندازی کنید:

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

برای مثال، متغیر محیطی HILO_HOST حاوی آدرس وب رابط ILO ما است myhp.example.com
برای خودکار کردن ورود، اجازه دهید مجوز اضافه کنیم. ورود به ILO با یک درخواست POST معمولی اتفاق می‌افتد، در نتیجه یک JSON session_key دریافت می‌کنید که سپس در یک درخواست GET ارسال می‌کنید:
اگر متغیرهای محیطی HILO_USER و HILO_PASS تعریف شده باشند، اجازه دهید session_key را از طریق curl محاسبه کنیم:

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 را در docker ضبط کردیم، می‌توانیم VNC را اجرا کنیم:

exec x11vnc -forever -create

اکنون ما به سادگی از طریق VNC به پورت 5900 (یا هر نوع دیگری از انتخاب شما) در لوکال هاست متصل می شویم و به کنسول مجازی می رویم.
همه کدها در مخزن قرار دارند docker-ilo-client.
دستور کامل برای اتصال به ILO:

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 نام میزبان ILO است، SOME_USERNAME ورود به سیستم و بر این اساس، SOME_PASSWORD رمز عبور ILO است.
پس از آن، به سادگی هر مشتری VNC را به آدرس زیر راه اندازی کنید: vnc://localhost:5900
البته از درخواست های اضافی و کشش استقبال می شود.

پروژه مشابهی برای اتصال به رابط های IDRAC ماشین های DELL وجود دارد: docker-idrac6.

منبع: www.habr.com

اضافه کردن نظر