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:
- 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.
- 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.
- 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:
- docker-baseimage-gui
- 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 .