Contêiner do Docker para gerenciar servidores HP por meio da OIT

Você pode estar se perguntando - por que o Docker está aqui? Qual é o problema de acessar a interface da Web da OIT e configurar seu servidor como deveria?

Por isso, pensei que, quando eles me forneceram alguns servidores desnecessários antigos, tive que reinstalar (o que é chamado de reprovisão). O servidor em si está localizado no outro lado do oceano, a única coisa disponível é a interface da web. Bem, consequentemente, eu tive que entrar no console virtual para executar alguns comandos. Foi aqui que começou.

Como você sabe, para vários tipos de consoles virtuais, geralmente é usado Java, que é na HP, na Dell. De qualquer forma, costumava ser tão preciso (e os sistemas são muito antigos). Mas o Firefox e o Chrome deixaram de oferecer suporte a esses applets e o novo IcedTea não funciona com esses sistemas. Portanto, várias opções foram identificadas:

  1. Para começar a criar um zoológico a partir de navegadores e versões Java em sua máquina, essa opção desapareceu imediatamente. Não há desejo de zombar do sistema para algumas equipes.
  2. Execute algo bastante antigo na máquina virtual (foi descoberto experimentalmente que o Java 6 é necessário) e configure tudo o que você precisa através dele.
  3. A mesma coisa que o ponto 2, apenas no contêiner, pois vários colegas encontraram o mesmo problema e é muito mais fácil transmitir a eles um link para o contêiner no dockerhub do que a imagem de uma máquina virtual com todas as senhas, etc.

(Na verdade, cheguei ao ponto 3 somente depois que fiz o ponto 2)

Ponto 3, vamos fazer hoje.

Eu fui inspirado principalmente por dois projetos:

  1. docker-baseimage-gui
  2. docker-firefox-java

Em princípio, o primeiro projeto docker-baseimage-gui já contém utilitários e configurações para iniciar aplicativos da área de trabalho no docker. Geralmente, você precisa definir variáveis ​​padrão e seu aplicativo estará acessível através de um navegador (websocket) ou VNC. No nosso caso, rodaremos pelo Firefox e VNC, pelo websocket não funcionou.

Primeiro, instale 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 resta acessar a página da interface da OIT e inserir seu nome de usuário e senha. Iniciamos o Firefox no arranque automático:

 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 da web da nossa interface da OIT, por exemplo, myhp.example.com .

Para automatizar a entrada, vamos estragar a autorização. O login na ILO é realizado por uma solicitação POST regular, como resultado da obtenção de uma JSON session_key, que você passa em uma solicitação GET.

Calcule a 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 na janela de encaixe, podemos iniciar o VNC:

 exec x11vnc -forever -create 

Agora basta conectar via VNC à porta 5900 (ou qualquer outra de sua escolha) no host local e acessar o console virtual.

Todo o código está no repositório docker-ilo-client .

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 nome de usuário 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 bem-vindas, é claro.

Existe um projeto semelhante para conectar-se às interfaces IDRAC das máquinas DELL: docker-idrac6 .

Source: https://habr.com/ru/post/pt449080/


All Articles