Դոկեր կոնտեյներ՝ ԱՄԿ-ի միջոցով HP սերվերների կառավարման համար

Հավանաբար, դուք կարող եք մտածել, թե ինչու է 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-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

Այժմ ձեզ մնում է միայն գնալ ԱՄԿ ինտերֆեյսի էջ և մուտքագրել ձեր օգտվողի անունը և գաղտնաբառը: Գործարկեք Firefox-ը autostart-ում.

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-ի միջոցով միանում ենք localhost-ի 5900 պորտին (կամ ձեր ընտրած որևէ այլ պորտին) և գնում դեպի վիրտուալ վահանակ:
Ամբողջ ծածկագիրը պահոցում է docker-ilo-client.
ԱՄԿ-ին միանալու ամբողջական հրաման.

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 ինտերֆեյսներին միանալու համար. docker-idrac6.

Source: www.habr.com

Добавить комментарий