DVL: Uma Ferramenta para Criac¸˜ao de Laborat´orios
Pr´aticos de Disciplinas da ´
Area de TI Utilizando Virtualizac¸˜ao
Baseada em Contˆeineres
Walafi F. da Silva1, Paulo A. L. Rego1, Jo˜ao M. U. de Alencar1, Antonio R. Braga1e Bruno G. Mateus1
1Curso de Redes de Computadores
Universidade Federal do Cear´a (UFC) - Campus Quixad´a
walafi@alu.ufc.br, {pauloalr,joao.marcelo,rafaelbraga,brunomateus}@ufc.br
Abstract. Practice labs in Information Technology (IT) classes are necessary because they enable students to practice the contents studied. However, many educational institutions do not have a budget for buying dedicated equipment to use in hands-on activities. Virtualization allows the execution of multiple guest systems on a host machine, reducing the physical infrastructure required. In this context, this work presents the DVL tool, which automates the creation of hands-on labs using Docker containers to quickly and easily create, execute and manage scenarios.
Resumo. As pr´aticas de laborat´orio em disciplinas da ´area de Tecnologia da Informac¸˜ao (TI) s˜ao importantes pois possibilitam ao aluno colocar em pr´atica os conte´udos estudados. Entretanto, muitas instituic¸˜oes de ensino n˜ao pos-suem orc¸amento para uma estrutura f´ısica dedicada para atividades pr´aticos. A virtualizac¸˜ao permite a execuc¸˜ao de v´arios sistemas convidados sobre um hospedeiro, reduzindo a infraestrutura f´ısica necess´aria. Nesse contexto, este trabalho apresenta a ferramenta DVL (Docker Virtual Lab), que automatiza a criac¸˜ao de ambientes de estudo utilizando contˆeineres Docker para criar, exe-cutar e gerenciar cen´arios de forma r´apida e acess´ıvel.
1. Introduc¸˜ao
A virtualizac¸˜ao ocupa posic¸˜ao de destaque na ´area de TI, sendo utilizada em servido-res para um melhor aproveitamento dos recursos computacionais [Garcia et al. 2016]. Por´em, a virtualizac¸˜ao n˜ao se limita a facilitar a gerˆencia do parque computacional em-presarial, pois tamb´em ´e ´util na manutenc¸˜ao de sistemas operacionais com configurac¸˜oes distintas coabitando estac¸˜oes de trabalho para usu´arios finais, ou na instanciac¸˜ao de am-bientes para testes e simulac¸˜oes na academia. Entre as diversas soluc¸˜oes de virtualizac¸˜ao existentes, as mais utilizadas s˜ao: hipervisores, que funcionam como uma camada que abstrai o hardware das m´aquinas virtuais, resultando em sobrecarga em termos de hard-ware e drivers; e a virtualizac¸˜ao leve ou baseada em contˆeineres, que oferece um n´ıvel diferente de abstrac¸˜ao e isolamento, apresentado uma menor sobrecarga se comparada aos hipervisores [Morabito et al. 2015].
As atividades de laborat´orio desempenham um papel importante em cursos e treinamentos da ´area de TI, pois n˜ao s´o ajudam aos alunos na compreens˜ao dos
t´opicos apresentados, mas tamb´em proporcionam habilidades de resoluc¸˜ao de pro-blemas e experiˆencias necess´arias para lidar com situac¸˜oes do mundo profissional [Wannous and Nakano 2010]. Segundo [Garcia et al. 2016], a implementac¸˜ao de labo-rat´orios pr´aticos para o ensino de redes de computadores vem se tornando cada vez mais comum no modelo de ensino atual. As pr´aticas devem simular eventos reais e permi-tir que os discentes vivenciem um amplo leque de experiˆencias relacionadas ao mundo profissional e acadˆemico. Entretanto, manter equipamentos dedicados para cada aluno apresenta alto custo financeiro, tanto com aquisic¸˜ao, quanto com manutenc¸˜ao e consumo energ´etico.
A virtualizac¸˜ao surge como uma alternativa para que instituic¸˜oes de ensino pos-sam viabilizar pr´aticas de laborat´orio e ensino [Carissimi 2008]. Em algumas disciplinas, h´a a necessidade de executar diversos sistemas operacionais ao mesmo tempo e, na maio-ria dos casos, ´e comum o aluno precisar de acesso administrativo ao sistema. Utilizando um ambiente virtualizado, ´e poss´ıvel instanciar diversos sistemas e executar todos os co-mandos sem qualquer tipo de restric¸˜ao, pois as ac¸˜oes de um usu´ario administrador n˜ao afetam o sistema nativo.
Este artigo apresenta a ferramenta DVL (Docker Virtual Lab), uma soluc¸˜ao vol-tada a professores e alunos, que permite gerenciar laborat´orios virtuais (chamados de cen´arios) de disciplinas da ´area de TI e automatizar a criac¸˜ao desses cen´arios, utili-zando contˆeineres Docker. Com ela, os professores podem criar atividades pr´aticas, com cen´arios compostos de v´arias m´aquinas, e instanciar rapidamente v´arias c´opias do cen´ario, uma para cada aluno.
O restante deste artigo est´a organizado como segue: a Sec¸˜ao 2 apresenta alguns trabalhos relacionados, a Sec¸˜ao 3 apresenta a ferramenta e detalha as opc¸˜oes arquiteturais utilizadas no desenvolvimento da mesma. J´a a Sec¸˜ao 4 descreve a demonstrac¸˜ao planejada e apresenta os enderec¸os para acesso ao c´odigo fonte, instruc¸˜oes para implantac¸˜ao e teste da ferramenta. Por fim, a Sec¸˜ao 5 conclui o artigo e apresenta os trabalhos futuros.
2. Trabalhos Relacionados
T´ecnicas de virtualizac¸˜ao tˆem sido utilizadas em v´arios trabalhos para criar ambientes de estudo e treinamento. Em [Garcia et al. 2016], os autores defendem a criac¸˜ao de ambien-tes virtualizados para pr´aticas de laborat´orio em redes de computadores. Para validar o es-tudo, foram elaborados experimentos utilizando o hipervisor VirtualBox1 para ensinar os alunos a proverem diferentes servic¸os, como servidores Web e de Proxy. [Xu et al. 2014] apresenta uma plataforma de treinamento de laborat´orio virtual chamada V-Lab, na qual ´e poss´ıvel criar ambientes para pr´aticas utilizando os hipervisores Xen ou KVM. O V-Lab fornece uma interface Web para o gerenciamento dos recursos.
Diferente dos trabalhos mencionados, nossa soluc¸˜ao utiliza virtualizac¸˜ao base-ada em contˆeineres para criar ambientes de estudo. Al´em disso, tamb´em disponibili-zamos uma interface Web para facilitar o gerenciamento e instanciac¸˜ao dos cen´arios. A escolha da tecnologia de contˆeineres pode ser justificada com os resultados apre-sentados em [Morabito et al. 2015], que fez uma comparac¸˜ao detalhada do desempe-nho da virtualizac¸˜ao baseada em hipervisores tradicionais e virtualizac¸˜ao baseada em
contˆeineres. Os autores utilizaram uma s´erie de benchmarks para avaliar as ferramen-tas KVM, OSv, LXC e Docker, e mostraram que a virtualizac¸˜ao baseada em contˆeineres tem um desempenho superior a outros tipos de virtualizac¸˜ao, al´em de possibilitar a criac¸˜ao de um maior n´umero de instˆancias na mesma m´aquina f´ısica, devido ao menor tamanho das imagens quando comparadas com as de hipervisores.
3. DVL (Docker Virtual Lab)
Nesta sec¸˜ao, s˜ao apresentados os principais componentes e a arquitetura da ferramenta, as funcionalidades implementadas, bem como os requisitos funcionais e n˜ao funcionais da soluc¸˜ao proposta.
3.1. Arquitetura e componentes
A Figura 1(a) apresenta uma vis˜ao geral da arquitetura da ferramenta. Nela, ´e poss´ıvel observar que o usu´ario professor tem acesso a uma interface web, onde ´e poss´ıvel criar scripts para a instanciac¸˜ao de um cen´ario ou instanciar cen´ario a partir dos scripts j´a existentes. Uma vez criado o cen´ario, os usu´arios alunos podem acessar o servidor e acessar os contˆeineres do cen´ario.
(a) Arquitetura da ferramenta (b) Cen´ario proposto em sala
(c) Script que define o cen´ario Figura 1. Aspectos da ferramenta
Os principais componentes da ferramenta s˜ao: os Scripts que automatizam a instanciac¸˜ao de cen´arios, os Cen´arios, a Interface Web e o Banco de Dados. Os Scripts foram implementados utilizando a linguagem Shell Script e tˆem o papel de criar os
contˆeineres que fazem parte de um cen´ario, para um ou mais alunos. Um exemplo de scriptpode ser observado na Figura 1(c).
Um Cen´ario ´e um conjunto de contˆeineres destinados a um usu´ario aluno, para a execuc¸˜ao de uma determinada atividade pr´atica. Um exemplo de cen´ario pode ser vi-sualizado na Figura 1(b). Nela, um contˆeiner Gateway ´e criado com uma interface de rede NAT e outra interface de rede conectada `a rede local, sem acesso `a Internet; e dois contˆeineres com apenas uma interface s˜ao conectados `a rede local. Nessa atividade, os alunos devem configurar o Gateway, de modo que ele seja o roteador da rede local, permi-tindo o encaminhamento de pacotes dos outros dois contˆeineres, a fim de que eles tamb´em tenham acesso `a Internet.
A Interface Web foi implementada utilizando a linguagem de programac¸˜ao PHP e executa em um servidor Web Apache. Ela ´e respons´avel por executar os scripts no ser-vidor. E, por fim, o Banco de dados MySQL foi utilizado. Na Figura 2, pode-se observar o esquema utilizado no banco de dados e nele as seguintes tabelas: (1) usuarios, que guarda informac¸˜oes de autenticac¸˜ao dos usu´arios professores `a ferramenta; (2) cenarios, onde s˜ao armazenadas informac¸˜oes sobre os cen´arios criados por todos os usu´arios da ferramenta; (3) containers, que ´e utilizada para guardar informac¸˜oes dos contˆeineres de todos os cen´arios que est˜ao em execuc¸˜ao; (4) maquinas, que ´e uma abstrac¸˜ao utilizada para armazenar informac¸˜oes sobre cada contˆeiner de um cen´ario; (5) imagens, que arma-zena informac¸˜oes das imagens dispon´ıveis no servidor para a criac¸˜ao de um cen´ario; (6) redes, que armazena informac¸˜oes das redes criadas pelos usu´arios professores e que est˜ao dispon´ıveis no servidor para serem utilizadas na construc¸˜ao de um cen´ario.
usuarios id login senha maquinas id id_cenario nome id_imagem redes id nome tipo imagens id nome versao pacotes cenarios id nome_cenario id_user permissao descricao path 1 containers id id_usuario id_cenario id_maquina matricula nome estado id_redes 1 n 1 n 1 n n n 1 n 1 1 1
Figura 2. Esquema do banco de dados
3.1.1. Acesso dos usu´arios alunos ao servidor e aos contˆeineres
Os alunos podem acessar o servidor por meio de acesso remoto (SSH), sendo o nome de usu´ario e senha equivalentes ao n´umero de matr´ıcula do aluno. Vale ressaltar que ao realizar o primeiro acesso, o usu´ario aluno ´e forc¸ado a alterar a senha.
Para cada contˆeiner de um cen´ario instanciado, s˜ao inseridos scripts no diret´orio homede cada aluno, permitindo assim, o acesso ao contˆeiner, como o ilustrado na Figura 3(a). Conforme mostra a figura, dois scripts relacionados ao cen´ario instanciado est˜ao dispon´ıveis: um referente a um contˆeiner servidor e outro a um contˆeiner cliente. Para
acessar um contˆeiner, o aluno deve executar o script correspondente ao contˆeiner dese-jado, e ent˜ao lhe ser´a solicitado nome de usu´ario e senha de acesso. Tal processo pode ser visualizado na Figura 3(b).
(a) Scripts criados no home do usu´ario aluno (b) Tela de acesso ao contˆeiner
Figura 3. Acesso do usu ´ario via terminal
3.2. Funcionalidades da ferramenta
Na p´agina inicial do professor, aparecem trˆes opc¸˜oes: Instanciar cen´arios, Gerenciar cen´arios instanciadose Criar cen´ario, que s˜ao discutidas nas sec¸˜oes seguintes.
3.2.1. Instanciar cen´arios
Essa func¸˜ao lista todos os cen´arios dispon´ıveis ao usu´ario professor, como mostra a Fi-gura 4. Nela, pode-se observar os cen´arios e as colunas (1) Nome do Cen´ario, (2) Per-miss˜ao, onde s˜ao mostradas as permiss˜oes de cada cen´ario (P´ublico - cen´ario dispon´ıvel a todos os professores cadastrados na ferramenta; ou Privado - apenas o dono pode acessar o cen´ario; (3) Dono, diz se o usu´ario atual ´e dono ou n˜ao do cen´ario; (4) Descric¸˜ao do Cen´ario, e por ´ultimo, (5) Situac¸˜ao, que apresenta a situac¸˜ao atual do cen´ario, em uso ou dispon´ıvel. Em caso de disponibilidade, o professor pode instanciar ou modificar o cen´ario clicando em qualquer lugar da linha do cen´ario desejado. Contudo, se o cen´ario j´a estiver em uso, ele n˜ao pode ser modificado, apenas instanciado para novos alunos.
Figura 4. Cen ´arios dispon´ıveis
O usu´ario pode acessar as informac¸˜oes de um cen´ario, como mostra a Figura 5(a), ao selecion´a-lo. Ainda nessa p´agina, trˆes bot˜oes est˜ao dispon´ıveis: Voltar, Edi-tare Pr´oximo. Ao clicar em Editar, ´e poss´ıvel fazer alterac¸˜oes ou uma c´opia do cen´ario. As alterac¸˜oes podem ser feitas apenas pelo usu´ario dono do cen´ario, enquanto qualquer usu´ario pode fazer uma c´opia do cen´ario. A p´agina de edic¸˜ao ´e similar `a p´agina de criac¸˜ao de cen´ario - mais detalhes ser˜ao apresentados na Sec¸˜ao 3.2.3. Ao clicar em Pr´oximo, o usu´ario segue o fluxo de instanciac¸˜ao de um cen´ario, sendo ent˜ao direcionado `a p´agina de matr´ıculas (Figura 5(b)). Nessa tela, o professor pode adicionar os n´umeros das matr´ıculas dos alunos clicando no bot˜ao Add, enquanto o bot˜ao Del permite remover um aluno. O bot˜ao Finalizar inicia o processo de instanciac¸˜ao do cen´ario e redireciona o professor para a p´agina de gerenciamento de cen´arios instanciados.
(a) Dados do cen´ario (b) Matr´ıculas Figura 5. Tela de cen ´arios e de matr´ıculas
3.2.2. Gerenciar cen´arios instanciados
Ap´os instanciar um cen´ario, o professor ´e direcionado para a p´agina Gerenciar cen´arios instanciados. Nela, duas opc¸˜oes de listagem est˜ao dispon´ıveis: (1) Cen´arios (Figura 6(a)), que exibe o nome, o estado em que se encontram as m´aquinas de um cen´ario e ac¸˜oes dispon´ıveis (Deletar, Stop, Start e Restart); e (2) Contˆeineres (Figura 6(b)), que exibe mais detalhes de cada cen´ario, como: as matr´ıculas dos aluno, suas m´aquinas, o estado da mesma e ac¸˜oes que podem ser executadas no cen´ario do aluno em quest˜ao (Deletar, Stop, Start e Restart). Apenas nesta opc¸˜ao fica dispon´ıvel ao professor a possibilidade de adicionar novos alunos em um cen´ario em execuc¸˜ao, clicando no bot˜ao Adicionar aluno.
(a) Gerenciamento de cen´arios (b) Gerenciamento de contˆeineres
Figura 6. Gerenciamento de cen ´ario instanciado
As ac¸˜oes Deletar, Stop, Start e Restart levam em conta o estado atual de cada contˆeiner de um determinado cen´ario. A Figura 7 apresenta um diagrama para demons-trar os poss´ıveis estados de um contˆeiner e os bot˜oes dispon´ıveis. O primeiro estado ´e (1) Iniciando. Nesse estado, os contˆeineres est˜ao sendo instanciados e nenhuma ac¸˜ao ´e dispon´ıvel ao professor. Caso a inicializac¸˜ao seja mal sucedida, o estado do contˆeiner muda para (2) Erro. Nesse est´agio, as ac¸˜oes dispon´ıveis para o professor s˜ao: Deletar e Restart. Caso escolha Deletar os contˆeineres, o estado dos mesmos s˜ao alterados para (3) Deletando, que deleta os contˆeineres escolhidas. Caso a ac¸˜ao Restart seja selecionada, os contˆeineres mudar˜ao para o estado Iniciando.
Caso a inicializac¸˜ao ocorra com sucesso, os contˆeineres passam para o estado (4) Running, onde est˜ao em execuc¸˜ao e podem ser acessados pelos alunos. Nesse estado, as ac¸˜oes apresentadas ao professor s˜ao Deletar e Stop. Caso a ac¸˜ao de Deletar seja esco-lhida, os contˆeineres passam para o estado Deletando e s˜ao exclu´ıdos. Caso Stop seja escolhida, os contˆeineres passam para o estado (5) Executando Stop, onde nenhuma ac¸˜ao
est´a dispon´ıvel. Ao finalizar esse processo, os contˆeineres passam para o estado (6) Stop, que indica que eles est˜ao parados e n˜ao podem ser acessados pelos alunos. Nessa etapa, duas ac¸˜oes est˜ao dispon´ıveis: Deletar, que coloca os contˆeineres no estado Deletando e os exclui, e Start, que p˜oe muda os contˆeineres para o estado (7) Executando Start, que por sua vez n˜ao permite qualquer ac¸˜ao. Finalizado esse processo, os contˆeineres voltam para o estado Running e ficam acess´ıveis aos alunos. Vale ressaltar que, em caso de erro, em qualquer momento um contˆeiner pode passar para o estado Erro.
Figura 7. Diagrama com os poss´ıveis estados dos cont ˆeineres
3.2.3. Criar cen´ario
A opc¸˜ao Criar cen´ario auxilia o professor a implementar cen´arios. Para isso, algumas informac¸˜oes sobre o novo cen´ario devem ser informadas, como mostra a Figura 8(a). Essas informac¸˜oes s˜ao: o Nome do Cen´ario, Descric¸˜ao do cen´ario e Privacidade. Ap´os o preenchimento das informac¸˜oes, o professor ´e direcionado `a tela onde o script de criac¸˜ao de um cen´ario ser´a implementado, como mostra a Figura 8(b). Nessa tela, o professor pode inserir suas linhas de c´odigo no campo reservado para este fim.
(a) Tela de criac¸˜ao de cen´ario (b) Tela de implementac¸˜ao de script
Figura 8. Telas de configurac¸ ˜ao do cen ´ario
Durante a criac¸˜ao do cen´ario, o professor pode listar todos os contˆeineres exis-tentes no cen´ario. Por meio dessa funcionalidade, ele ter´a acesso a uma tabela com as seguintes informac¸˜oes: Nome (nome do contˆeiner); Imagem (nome da imagem que est´a
sendo utilizada por um determinado contˆeiner). Al´em disso, tamb´em ´e poss´ıvel visualizar as redes j´a existentes no cen´ario e adicionar novas redes.
Ap´os a configurac¸˜ao do cen´ario, o professor deve salvar o cen´ario. Durante essa etapa, ´e exibida um tela para a conferˆencia das informac¸˜oes. Ap´os salvar o cen´ario, o professor ´e direcionado para a tela de matr´ıculas, onde pode adicionar matr´ıculas e instanciar o cen´ario para os alunos.
4. Demonstrac¸˜ao
O c´odigo fonte e um guia de instalac¸˜ao da ferramenta est˜ao dispon´ıveis para a co-munidade no Github: https://github.com/Walafi02/DVL. Al´em disso, fo-ram preparados dois v´ıdeos: um com o guia de instalac¸˜ao (https://youtu.be/ eRcBf8hG98w) e outro para apresentar as funcionalidades da ferramenta (https: //youtu.be/um97ebPY8Io).
Durante o evento, ser´a feita uma demonstrac¸˜ao das funcionalidades da ferramenta, onde ser´a criado um cen´ario com trˆes contˆeineres: um Cliente, um Firewall e um Servi-dor Web. O objetivo do cen´ario ´e o aluno praticar a instalac¸˜ao de um serviServi-dor HTTP e configurac¸˜ao de um firewall Iptables, para que o Cliente possa acessar o Servidor Web.
5. Conclus˜ao
As pr´aticas de laborat´orio em disciplinas na ´area de TI s˜ao importantes para prover ex-periˆencia pr´atica aos alunos. Como nem sempre existem equipamentos reais dispon´ıveis para as pr´aticas did´aticas, este trabalho apresentou uma ferramenta para permitir a criac¸˜ao de ambientes de estudo virtuais utilizando a tecnologia de contˆeineres Docker.
A DVL gerencia a criac¸˜ao de cen´arios e automatiza a instanciac¸˜ao de contˆeineres para v´arios alunos, criando todos os recursos necess´arios para a execuc¸˜ao das atividades de estudo. Como trabalhos futuros, pretende-se fazer uma avaliac¸˜ao de usabilidade e melhorar a interface da ferramenta, principalmente para facilitar a criac¸˜ao de cen´arios mais complexos.
Referˆencias
Carissimi, A. (2008). Virtualizac¸˜ao: da teoria a soluc¸˜oes. Minicursos do Simp´osio Brasi-leiro de Redes de Computadores–SBRC, 2008:173–207.
Garcia, L., Antunes, F., Lara, D., and Ribeiro, C. P. (2016). Utilizac¸˜ao de ambientes virtu-alizados para ensino de servidores de redes de computadores. In Brazilian Symposium on Computers in Education (SBIE), volume 27, page 90.
Morabito, R., Kj¨allman, J., and Komu, M. (2015). Hypervisors vs. lightweight virtualiza-tion: a performance comparison. In Cloud Engineering (IC2E), 2015 IEEE Internati-onal Conference on, pages 386–393. IEEE.
Wannous, M. and Nakano, H. (2010). Nvlab, a networking virtual web-based labora-tory that implements virtualization and virtual network computing technologies. IEEE Transactions on Learning Technologies, 3(2):129–138.
Xu, L., Huang, D., and Tsai, W.-T. (2014). Cloud-based virtual laboratory for network security education. IEEE Transactions on Education, 57(3):145–150.