คอนเทนเนอร์นักเทียบท่าสำหรับจัดการเซิร์ฟเวอร์ HP ผ่าน ILO

คุณอาจสงสัยว่า - ทำไม Docker ถึงอยู่ที่นี่? ปัญหาในการเข้าสู่เว็บอินเตอร์เฟสของ ILO และการตั้งค่าเซิร์ฟเวอร์ของคุณตามความจำเป็นคืออะไร?
นั่นคือสิ่งที่ฉันคิดว่าเมื่อพวกเขามอบเซิร์ฟเวอร์เก่าที่ไม่จำเป็นจำนวนหนึ่งให้ฉันซึ่งฉันต้องติดตั้งใหม่ (สิ่งที่เรียกว่าการเตรียมใช้งานใหม่) ตัวเซิร์ฟเวอร์นั้นตั้งอยู่ในต่างประเทศ สิ่งเดียวที่ใช้ได้คือเว็บอินเตอร์เฟส ดังนั้นฉันจึงต้องไปที่ Virtual Console เพื่อรันคำสั่งบางคำสั่ง นั่นคือจุดเริ่มต้น
ดังที่คุณทราบ โดยปกติแล้ว Java จะถูกใช้สำหรับคอนโซลเสมือนหลายประเภท ไม่ว่าจะใน HP หรือ Dell อย่างน้อยก็เคยเป็นอย่างนั้น (และระบบก็เก่ามาก) แต่ Firefox และ Chrome หยุดสนับสนุนแอปเพล็ตเหล่านี้ไปนานแล้ว และ IcedTea ใหม่ก็ใช้งานไม่ได้กับระบบเหล่านี้ ดังนั้นจึงมีหลายทางเลือก:

1. เริ่มสร้างสวนสัตว์จากเบราว์เซอร์และเวอร์ชัน Java บนเครื่องของคุณ ตัวเลือกนี้ไม่จำเป็นอีกต่อไป ไม่มีความปรารถนาที่จะเยาะเย้ยระบบเพื่อประโยชน์ของคำสั่งสองสามคำ
2. เปิดตัวสิ่งที่ค่อนข้างเก่าบนเครื่องเสมือน (ปรากฎว่าทดลองแล้วว่าคุณต้องการ Java 6) และกำหนดค่าทุกสิ่งที่คุณต้องการผ่านมัน
3. เช่นเดียวกับจุดที่ 2 เฉพาะในคอนเทนเนอร์เท่านั้น เนื่องจากเพื่อนร่วมงานหลายคนประสบปัญหาเดียวกัน และการโอนลิงก์ไปยังคอนเทนเนอร์บน Dockerhub ให้พวกเขาทำได้ง่ายกว่าอิมเมจเครื่องเสมือนพร้อมรหัสผ่านทั้งหมด ฯลฯ
(อันที่จริงฉันไปถึงจุดที่ 3 หลังจากที่ฉันทำจุดที่ 2 เท่านั้น)
เราจะทำจุดที่ 3 วันนี้

ฉันได้รับแรงบันดาลใจจากสองโครงการหลัก:
1. นักเทียบท่า baseimage-gui
2. นักเทียบท่า-firefox-java
โดยพื้นฐานแล้วเป็นโครงการแรก นักเทียบท่า baseimage-gui มียูทิลิตี้และการกำหนดค่าสำหรับการเรียกใช้แอปพลิเคชันเดสก์ท็อปใน 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

ตอนนี้สิ่งที่คุณต้องทำคือไปที่หน้าอินเทอร์เฟซของ ILO แล้วป้อนชื่อผู้ใช้และรหัสผ่านของคุณ เปิด Firefox ในการเริ่มต้นอัตโนมัติ:

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:
ลองคำนวณ 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 ใน docker แล้ว เราก็จะสามารถเปิด VNC ได้:

exec x11vnc -forever -create

ตอนนี้เราเพียงเชื่อมต่อผ่าน VNC ไปยังพอร์ต 5900 (หรืออื่น ๆ ที่คุณเลือก) บน localhost และไปที่คอนโซลเสมือน
รหัสทั้งหมดอยู่ในที่เก็บ นักเทียบท่า-ilo-ลูกค้า.
คำสั่งฉบับเต็มเพื่อเชื่อมต่อกับ 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: นักเทียบท่า-idrac6.

ที่มา: will.com

เพิ่มความคิดเห็น