ืงื•ื ื˜ื™ื™ื ืจ Docker ืœื ื™ื”ื•ืœ ืฉืจืชื™ HP ื‘ืืžืฆืขื•ืช ILO

ืื•ืœื™ ืืชื ื‘ื˜ื— ืชื•ื”ื™ื - ืœืžื” Docker ืงื™ื™ื ื›ืืŸ? ืžื” ื”ื‘ืขื™ื” ื‘ื›ื ื™ืกื” ืœืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜ ืฉืœ ILO ื•ื”ื’ื“ืจืช ื”ืฉืจืช ืฉืœืš ืœืคื™ ื”ืฆื•ืจืš?
ื–ื” ืžื” ืฉื—ืฉื‘ืชื™ ื›ืฉื ืชื ื• ืœื™ ื›ืžื” ืฉืจืชื™ื ื™ืฉื ื™ื ืžื™ื•ืชืจื™ื ืฉื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืชืงื™ืŸ ืžื—ื“ืฉ (ืžื” ืฉื ืงืจื reprovision). ื”ืฉืจืช ืขืฆืžื• ืžืžื•ืงื ืžืขื‘ืจ ืœื™ื, ื”ื“ื‘ืจ ื”ื™ื—ื™ื“ ืฉื–ืžื™ืŸ ื”ื•ื ืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜. ื•ื‘ื›ืŸ, ื‘ื”ืชืื, ื”ื™ื™ืชื™ ืฆืจื™ืš ืœืœื›ืช ืœืงื•ื ืกื•ืœื” ื”ื•ื•ื™ืจื˜ื•ืืœื™ืช ื›ื“ื™ ืœื”ืคืขื™ืœ ื›ืžื” ืคืงื•ื“ื•ืช. ืฉื ื–ื” ื”ืชื—ื™ืœ.
ื›ืคื™ ืฉืืชื” ื™ื•ื“ืข, Java ืžืฉืžืฉืช ื‘ื“ืจืš ื›ืœืœ ืขื‘ื•ืจ ืกื•ื’ื™ื ืฉื•ื ื™ื ืฉืœ ืงื•ื ืกื•ืœื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช, ื‘ื™ืŸ ืื ื‘-HP ื•ื‘ื™ืŸ ืื ื‘-Dell. ืœืคื—ื•ืช ื›ื›ื” ื–ื” ื”ื™ื” ืคืขื (ื•ื”ืžืขืจื›ื•ืช ื™ืฉื ื•ืช ืžืื•ื“). ืื‘ืœ ืคื™ื™ืจืคื•ืงืก ื•ื›ืจื•ื ื”ืคืกื™ืงื• ืœืชืžื•ืš ื‘ื™ื™ืฉื•ืžื•ื ื™ื ื”ืืœื” ืœืคื ื™ ื–ืžืŸ ืจื‘, ื•ื”-IcedTea ื”ื—ื“ืฉ ืœื ืขื•ื‘ื“ ืขื ื”ืžืขืจื›ื•ืช ื”ืืœื”. ืœื›ืŸ, ืขืœื• ืžืกืคืจ ืืคืฉืจื•ื™ื•ืช:

1. ื”ืชื—ืœ ืœื‘ื ื•ืช ื’ืŸ ื—ื™ื•ืช ืžื“ืคื“ืคื ื™ื ื•ื’ืจืกืื•ืช Java ื‘ืžื—ืฉื‘ ืฉืœืš, ืืคืฉืจื•ืช ื–ื• ืœื ื”ื™ื™ืชื” ื ื—ื•ืฆื” ืขื•ื“. ืื™ืŸ ืจืฆื•ืŸ ืœืœืขื•ื’ ืœืžืขืจื›ืช ื‘ืฉื‘ื™ืœ ื›ืžื” ืคืงื•ื“ื•ืช.
2. ื”ืคืขืœ ืžืฉื”ื• ื“ื™ ื™ืฉืŸ ื‘ืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช (ื”ืชื‘ืจืจ ื‘ื ื™ืกื•ื™ ืฉืืชื” ืฆืจื™ืš Java 6) ื•ื”ื’ื“ืจ ืืช ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš ื“ืจื›ื•.
3. ืื•ืชื• ื“ื‘ืจ ื›ืžื• ื ืงื•ื“ื” 2, ืจืง ื‘ืงื•ื ื˜ื™ื™ื ืจ, ืžืื—ืจ ื•ืžืกืคืจ ืขืžื™ืชื™ื ื ืชืงืœื• ื‘ืื•ืชื” ื‘ืขื™ื” ื•ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœื”ืขื‘ื™ืจ ืœื”ื ืงื™ืฉื•ืจ ืœืงื•ื ื˜ื™ื™ื ืจ ื‘-Dockerhub ืžืืฉืจ ืชืžื•ื ืช ืžื—ืฉื‘ ื•ื™ืจื˜ื•ืืœื™ืช, ืขื ื›ืœ ื”ืกื™ืกืžืื•ืช ื•ื›ื•'.
(ืœืžืขืฉื”, ื”ื’ืขืชื™ ืœื ืงื•ื“ื” 3 ืจืง ืื—ืจื™ ืฉืขืฉื™ืชื™ ืืช ื ืงื•ื“ื” 2)
ื ืขืฉื” ืืช ื ืงื•ื“ื” 3 ื”ื™ื•ื.

ืงื™ื‘ืœืชื™ ื”ืฉืจืื” ื‘ืขื™ืงืจ ืžืฉื ื™ ืคืจื•ื™ืงื˜ื™ื:
1. docker-baseimage-gui
2. docker-firefox-java
ื‘ืขืฆื ื”ืคืจื•ื™ืงื˜ ื”ืจืืฉื•ืŸ 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:
ื‘ื•ืื• ืœื—ืฉื‘ 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 ื•ื ืขื‘ื•ืจ ืœืงื•ื ืกื•ืœื” ื”ื•ื™ืจื˜ื•ืืœื™ืช.
ื›ืœ ื”ืงื•ื“ ื ืžืฆื ื‘ืžืื’ืจ 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”