Documentação do OTLab

Esta documentação descreve os passos necessários para configurar o ambiente de execução dos laboratórios OTLab utilizando Docker. Também apresenta os comandos básicos de gestão e a estrutura geral do projeto.

Requisitos

Antes de iniciar, certifica-te de que tens instalado:

  • Git
  • Docker Engine
  • Docker Compose
  • WSL2 (recomendado para Windows)
  • Visual Studio Code (opcional)

Instalação do Docker (Ubuntu / WSL2)

Atualizar o sistema:

sudo apt update && sudo apt upgrade -y

Instalar dependências:

sudo apt install -y ca-certificates curl gnupg

Adicionar o repositório oficial do Docker:

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Instalar Docker Engine e Docker Compose:

sudo apt update

sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin

Iniciar Docker:

sudo service docker start

Permitir utilização sem sudo:

sudo usermod -aG docker $USER
newgrp docker

Verificar instalação:

docker --version
docker compose version

Clonar o Repositório

git clone https://github.com/substationworm/OTLab.git
cd OTLab

Executar um Laboratório

Cada laboratório possui um script próprio de gestão.

Exemplo para o OTLab01:

cd OTLab01
chmod +x OTLab01.sh

./OTLab01.sh -start ubuntu
./OTLab01.sh -run

Comandos de Gestão

ComandoDescrição
./OTLab01.sh -start ubuntuInicia o laboratório
./OTLab01.sh -runAbre um terminal no container otlab-student
./OTLab01.sh -statusMostra o estado atual dos containers
./OTLab01.sh -stopPara os containers
./OTLab01.sh -restartReinicia os containers
./OTLab01.sh -cleanRemove containers, volumes e redes

Nota: O nome do script muda consoante o laboratório (OTLab02.sh, OTLab03.sh, etc.).

Estrutura do Repositório

├── .github/
│   └── workflows/
│       └── hugo.yml
├── .landingPage/
│   ├── archetypes/
│   ├── content/
│   ├── i18n/
│   ├── layouts/
│   ├── static/
│   ├── hugo.yaml
│   ├── README.md
│   └── CONTRIBUTING.md
├── OTLab01/
├── OTLab02/
├── OTLab03/
├── OTLab04/
├── OTLab05/
├── OTLab06/
├── OTLab07/
├── OTLab08/
├── OTLab09/
├── OTLab10/
├── OTLab11/
├── OTLab12/
├── OTLab13/

A pasta .landingPage contém todo o código do website Hugo, incluindo layouts, conteúdo, traduções e recursos estáticos.

Cada pasta OTLabXX contém os ficheiros Markdown do laboratório, versões traduzidas, PDFs gerados automaticamente e scripts de execução associados ao respetivo ambiente laboratorial.

CI/CD

O website é gerado automaticamente através de GitHub Actions.

O pipeline executa:

  • Build do website Hugo;
  • Geração automática dos PDFs dos laboratórios;
  • Publicação automática no GitHub Pages;
  • Atualização do website após alterações na branch principal.