Contêiner Docker para gerenciamento de servidores HP via ILO

Você provavelmente deve estar se perguntando - por que o Docker existe aqui? Qual é o problema de fazer login na interface web da OIT e configurar seu servidor conforme necessário?
Foi o que pensei quando me deram alguns servidores antigos desnecessários que eu precisava reinstalar (o que é chamado de reprovisionamento). O servidor em si está localizado no exterior, a única coisa disponível é a interface web. Bem, portanto, tive que ir ao Virtual Console para executar alguns comandos. Foi aí que tudo começou.
Como você sabe, Java costuma ser usado para vários tipos de consoles virtuais, seja na HP ou na Dell. Pelo menos era assim (e os sistemas são muito antigos). Mas o Firefox e o Chrome pararam de oferecer suporte a esses miniaplicativos há muito tempo, e o novo IcedTea não funciona com esses sistemas. Portanto, surgiram várias opções:

1. Comece a construir um zoológico a partir de navegadores e versões Java em sua máquina, esta opção não era mais necessária. Não há desejo de zombar do sistema por causa de alguns comandos.
2. Execute algo bastante antigo na máquina virtual (descobrimos experimentalmente que você precisa do Java 6) e configure tudo o que precisa por meio dele.
3. Igual ao ponto 2, apenas em um container, pois vários colegas encontraram o mesmo problema e é muito mais fácil transferir para eles um link para um container no Dockerhub do que uma imagem de máquina virtual, com todas as senhas, etc.
(Na verdade, só cheguei ao ponto 3 depois de ter feito o ponto 2)
Faremos o ponto 3 hoje.

Me inspirei principalmente em dois projetos:
1. docker-baseimage-gui
2. docker-firefox-java
Basicamente o primeiro projeto docker-baseimage-gui já contém utilitários e configurações para executar aplicativos de desktop no Docker. Normalmente você precisa definir variáveis ​​padrão e sua aplicação estará acessível via navegador (websocket) ou VNC. No nosso caso vamos lançar via Firefox e VNC; não funcionou via websocket.
Primeiro, vamos instalar os pacotes necessários - Java 6 e 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

Agora tudo o que você precisa fazer é acessar a página de interface da OIT e inserir seu nome de usuário e senha. Inicie o Firefox na inicialização automática:

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

A variável de ambiente HILO_HOST contém o endereço web da nossa interface ILO, por exemplo myhp.exemplo.com
Para automatizar o login, vamos adicionar autorização. O login no ILO ocorre com uma solicitação POST regular, e como resultado você recebe uma session_key JSON, que é então transmitida em uma solicitação GET:
Vamos calcular session_key via curl se as variáveis ​​de ambiente HILO_USER e HILO_PASS estiverem definidas:

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

Depois de gravarmos session_key no docker, podemos iniciar o VNC:

exec x11vnc -forever -create

Agora simplesmente nos conectamos via VNC à porta 5900 (ou qualquer outra de sua escolha) no localhost e vamos para o console virtual.
Todo o código está no repositório docker-ilo-cliente.
Comando completo para conectar-se à OIT:

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

onde ADDRESS_OF_YOUR_HOST é o nome do host da OIT, SOME_USERNAME é o login e, consequentemente, SOME_PASSWORD é a senha da OIT.
Depois disso, basta iniciar qualquer cliente VNC no endereço: vnc://localhost:5900
Adições e solicitações pull são, obviamente, bem-vindas.

Existe um projeto semelhante para conexão com interfaces IDRAC de máquinas DELL: docker-idrac6.

Fonte: habr.com

Adicionar um comentário