Contêiner do Docker para gerenciamento de servidores HP com OIT

Origem em russo

Bem, você pode se perguntar - por que eu usaria o contêiner de encaixe para esse fim? Qual é o problema de entrar na interface da Web da OIT e gerenciar o servidor normalmente?

O mesmo pensamento que tive quando tenho alguns servidores antigos que exigiam uma reprovação. Os servidores estão localizados em diferentes continentes e a única interface que eu tinha era apenas uma interface da Web da OIT. E quando tive que inserir alguns comandos manuais via Virtual Console, descobri que isso é quase impossível.

Para vários tipos de console virtual de servidores (HP e Dells), geralmente são usados ​​applets da web Java. Mas o Firefox e o Chrome não os suportam mais e o IcedTea mais recente não funciona com o sistema antigo. Então, eu tinha algumas opções:

  1. Para instalar em versões antigas paralelas de navegadores e Java, tentando encontrar uma combinação necessária, no meu sistema. Essa opção foi filtrada, pois não quero poluir meu sistema apenas por causa de alguns comandos do console.
  2. Crie uma máquina virtual com sistemas antigos, instale o Java 6 e use o Virtual Console como antes.
  3. O mesmo que no ponto 2, mas com contêiner, não uma máquina virtual. Como alguns colegas enfrentaram o mesmo problema, eu preferiria passar um comando bash para executar o Virtual Console em vez de compartilhar o disco da Máquina Virtual, senhas para ele, etc.

(Para ser sincero, o ponto 3 eu fiz somente após o ponto 2).
O ponto 3 é o que vamos implementar hoje.

Eu fui inspirado principalmente por esses dois projetos:

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

Na verdade, o primeiro projeto docker-baseimage-gui já contém todas as configurações e ferramentas necessárias para iniciar aplicativos da área de trabalho no navegador em um contêiner. Geralmente, você define variáveis ​​de ambiente específicas e seu aplicativo se torna acessível via navegador (websocket) ou VNC. No nosso caso, começamos com o Firefox e o VNC, o websocket não funcionou bem.

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 vamos abrir a página da web da interface da OIT no Firefox e inserir credenciais lá. Inicie o Firefox:

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

A variável HILO_HOST é o URL da nossa interface da OIT, por exemplo, https://myhp.example.com .

Para automação, vamos adicionar autenticação. O login da OIT é executado por meio de uma simples solicitação POST. Em resposta, você obtém o valor session_key e passa esse valor na solicitação GET. Vamos descobrir session_key com 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 que escrevemos session_key em contêineres, podemos iniciar o servidor VNC:

 exec x11vnc -forever -create 

Agora, basta conectar-se ao cliente VNC à porta 5900 (ou o que você definiu em sua escolha) para o host local e entrar no console virtual do servidor HP.

O código está localizado no docker-ilo-client do repositório git.

Comando completo de uma linha para conectar-se ao console virtual da 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 ILO, SOME_USERNAME é o login e SOME_PASSWORD é a senha da ILO.

Em seguida, basta ir com qualquer cliente VNC para endereçar vnc://localhost:5900 .
Solicitações pull e comentários são mais que bem-vindos.

O projeto semelhante para conexão aos servidores Dell IDRAC está aqui: docker-idrac6 .

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


All Articles