ILO๋ฅผ ํ†ตํ•ด HP ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Docker ์ปจํ…Œ์ด๋„ˆ

์•„๋งˆ๋„ Docker๊ฐ€ ์—ฌ๊ธฐ์— ์กด์žฌํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ILO ์›น ์ธํ„ฐํŽ˜์ด์Šค์— ๋กœ๊ทธ์ธํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
์žฌ์„ค์น˜(์žฌํ”„๋กœ๋น„์ €๋‹)๊ฐ€ ํ•„์š”ํ•œ ์˜ค๋ž˜๋˜๊ณ  ๋ถˆํ•„์š”ํ•œ ์„œ๋ฒ„ ๋‘ ๋Œ€๋ฅผ ๊ทธ๋“ค์ด ๋‚˜์—๊ฒŒ ์ฃผ์—ˆ์„ ๋•Œ ๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ž์ฒด๋Š” ํ•ด์™ธ์— ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฟ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ถ€ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๊ฐ€์ƒ ์ฝ˜์†”๋กœ ์ด๋™ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์‹œ์ž‘๋œ ๊ณณ์ž…๋‹ˆ๋‹ค.
์•„์‹œ๋‹ค์‹œํ”ผ Java๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ HP๋‚˜ Dell ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๊ฐ€์ƒ ์ฝ˜์†”์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ์˜ˆ์ „์—๋Š” ๊ทธ๋žฌ์Šต๋‹ˆ๋‹ค(์‹œ์Šคํ…œ๋„ ๋งค์šฐ ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ Firefox์™€ Chrome์€ ์˜ค๋ž˜ ์ „์— ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฟ ์ง€์›์„ ์ค‘๋‹จํ–ˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด IcedTea๋Š” ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

1. ์ปดํ“จํ„ฐ์˜ ๋ธŒ๋ผ์šฐ์ €์™€ Java ๋ฒ„์ „์—์„œ ๋™๋ฌผ์› ๊ตฌ์ถ•์„ ์‹œ์ž‘ํ•˜์„ธ์š”. ์ด ์˜ต์…˜์€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋ช…๋ น ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ์„ ์กฐ๋กฑํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
2. ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ๊ฝค ์˜ค๋ž˜๋œ ๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ (์‹คํ—˜์ ์œผ๋กœ Java 6์ด ํ•„์š”ํ•œ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์ง) ์ด๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
3. ํฌ์ธํŠธ 2์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋™๋ฃŒ๊ฐ€ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ชจ๋“  ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ์ด ํฌํ•จ๋œ ๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€๋ณด๋‹ค Dockerhub์˜ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค.
(์‹ค์ œ๋กœ ํฌ์ธํŠธ 3๋ฅผ ๋งˆ์น˜๊ณ  ํฌ์ธํŠธ 2๊นŒ์ง€ ์™”์Šต๋‹ˆ๋‹ค.)
์˜ค๋Š˜์€ ํฌ์ธํŠธ 3์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ฃผ๋กœ ๋‘ ๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.
1. docker-baseimage-gui
2. ๋„์ปค-ํŒŒ์ด์–ดํญ์Šค-์ž๋ฐ”
๊ธฐ๋ณธ์ ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ docker-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 ์š”์ฒญ์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
HILO_USER ๋ฐ HILO_PASS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ •์˜๋œ ๊ฒฝ์šฐ ์ปฌ์„ ํ†ตํ•ด session_key๋ฅผ ๊ณ„์‚ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

docker์— session_key๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๋‚˜๋ฉด VNC๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

exec x11vnc -forever -create

์ด์ œ VNC๋ฅผ ํ†ตํ•ด localhost์˜ ํฌํŠธ 5900(๋˜๋Š” ์›ํ•˜๋Š” ๋‹ค๋ฅธ ํฌํŠธ)์— ์—ฐ๊ฒฐํ•˜๊ณ  ๊ฐ€์ƒ ์ฝ˜์†”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  ์ฝ”๋“œ๋Š” ์ €์žฅ์†Œ์— ์žˆ์Šต๋‹ˆ๋‹ค docker-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
์ถ”๊ฐ€ ์‚ฌํ•ญ๊ณผ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์€ ๋ฌผ๋ก  ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

DELL ์‹œ์Šคํ…œ์˜ IDRAC ์ธํ„ฐํŽ˜์ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์œ ์‚ฌํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค-idrac6.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€