Laboratório de Baixo Custo com Contêineres

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Estrutura

  • Máquina física (Dell Optiplex 755):
    • Memória RAM: 8 GB;
    • CPU: Intel Dual Core, 2,66 GHz, 2 núcleos;
    • Armazenamento: Disco rígido Samsung de 7200 RPM com capacidade para 250 GB;
  • Sistema Operacional de gerência (instalado em baremetal): RancherOS v1.1.0;
    • Versão da distribuição: v1.1.0;
    • Nome da distribuição: RancherOS;
  • Contêineres Docker virtualizando as seguintes aplicações:
  • Contêineres do System-Docker executando os seguintes serviços:
    • Console Debian do RancherOS;
    • Crontab do RancherOS;
    • Configuração de rede do RancherOS;
    • Configuração de dispositivos do RancherOS;
    • Configuração de horário do RancherOS;
    • Contêiner contendo o Docker a nível de usuário;

Objetivo

O objetivo é prover uma estrutura que fornece um ambiente de trabalho remoto completo afim de permitir a utilização de dispositivos de baixo custo na ponta, diminuindo os custos com equipamentos, no caso, computadores, além de flexibilizar a gerência de toda a estrutura tirando vantagem do uso de contêineres. Dessa forma, tendo o Docker como gestor ou o Kubernetes para o caso de estrutura em cluster, permite a replicação dos ambientes de trabalho para dispositivo.
Este projeto é um segmento do projeto Nuvem Computacional para a Área de Telecomunicações, o qual foi utilizada a estrutura em contêineres para gestão dos ambientes acessados pelos alunos. Neste segmento de projeto, está sendo utilizando como sistema operacional de gerência o RancherOS, que é um sistema operacional extremamente leve e toda sua estrutura é feita em contêineres, o que o torna muito modular e de tamanho diminuto, pois possui apenas Docker como o gestor do sistema operacional.

Script para o Cliente

Atenção: O script abaixo está sujeito à mudanças.
Copie e cole o script abaixo em um arquivo. Devem ser providas 6 informações. A sintaxe de uso é:

./script-cliente "nomedeusuario" "Nome Completo" "senhatemporária" "curso" "ip_do_servidor" "porta_do_contêiner"

Por exemplo:

./script-cliente "jose.mf" "José Marfino Ferreira" "minhasenhatemporaria" "Engenharia de Telecomunicações" "191.36.9.253" "700"

#!/bin/bash

nomedeusuario=$1
nomecompleto=$2
senha=$3
curso=$4
servidor=$5
porta=$6

# Cria o usuário no arquivo passwd
echo "Criando usuario $nomedeusuario para o aluno $nomecompleto"
useradd -m -d /home/$nomedeusuario -s /bin/bash  -c "$nomecompleto,$curso" $nomedeusuario

# Define a senha temporária
echo "Usando a matricula $matricula como senha do usuario $nomedeusuario."
echo "$nomedeusuario:$senha" |chpasswd

echo "Conta $nomedeusuario do usuario $nomecompleto criada"

# Cria o arquivo .xinitrc com o seguinte conteúdo:
echo "Criando arquvo .xinitrc..."
echo 'exec x2goclient --hide --sessionid=20170929183410524' > /home/$nomedeusuario/.xinitrc

# Muda a permissão do arquivo .xinitrc
echo "Mudando permissão do arquivo .xinitrc..."
chown root:root /home/$nomedeusuario/.xinitrc
chmod 444 /home/$nomedeusuario/.xinitrc

# Faz o ponto de montagem do diretório /media/nomedeusuario

# Adiciona o comando startx no arquivo .profile para que o comando que invoca
# o X2Go seja executado assim que o usuário fizer login
echo "Adicionando o comando startx ao arquivo .profile..."
echo "startx" >> /home/$nomedeusuario/.profile

# Cria a pasta .x2goclient
mkdir /home/$nomedeusuario/.x2goclient

# Cria pasta .ssh
mkdir /home/$nomedeusuario/.ssh

# Copia um arquivo modelo de sessão do X2Go para .x2goclient
cp -r /opt/sessions /home/$nomedeusuario/.x2goclient/

# Adiciona as informações faltantes ao arquivo sessions
echo "Adicionando o servidor..."
echo "host=$servidor" >> /home/$nomedeusuario/.x2goclient/sessions
echo "Adicionando usuário..."
echo "key=/home/$nomedeusuario/.ssh/$nomedeusuario" >> /home/$nomedeusuario/.x2goclient/sessions
echo "Adicionando a porta SSH..."
echo "sshport=$porta" >> /home/$nomedeusuario/.x2goclient/sessions

# Gera as chaves públicas e privadas
echo "Gerando chaves SSH..."
ssh-keygen -t rsa -N "" -f /home/$nomedeusuario/.ssh/$nomedeusuario
echo "Chaves SSH geradas! Agora copie o conteúdo de $nomedeusuario.pub, EXPOSTO ABAIXO,  para a pasta .ssh dentro do contêiner do usuário, com o nome de authorized_keys!!!"
chave=$(cat /home/$nomedeusuario/.ssh/$nomedeusuario.pub)
echo ""
echo "$chave"
echo ""

Rpositório no Docker Hub

Aqui encontra-se o repositório com a imagem para a criação do contêiner.