Versão 0.2.0 Codename: "Maracatu" - Abril de 2025
GIRUS é uma plataforma open-source de laboratórios interativos que permite a criação, gerenciamento e execução de ambientes de aprendizado prático para tecnologias como Linux, Docker, Kubernetes, Terraform e outras ferramentas essenciais para profissionais de DevOps, SRE, Dev e Platform Engineering.
Desenvolvida pela LINUXtips, a plataforma GIRUS se diferencia por ser executada localmente na máquina do usuário, eliminando a necessidade de infraestrutura na nuvem ou configurações complexas. Através de um CLI intuitivo, os usuários podem criar rapidamente ambientes isolados e seguros onde podem praticar e aperfeiçoar suas habilidades técnicas.
- Execução Local: Diferentemente de outras plataformas como Katacoda ou Instruqt que funcionam como SaaS, o GIRUS é executado diretamente na máquina do usuário através de containers Docker e Kubernetes, e o melhor, é que o projeto é open source e gratuito.
- Ambientes Isolados: Cada laboratório é executado em um ambiente isolado no Kubernetes, garantindo segurança e evitando conflitos com o sistema host
- Interface Intuitiva: Terminal interativo com tarefas guiadas e validação automática de progresso
- Fácil Instalação: CLI simples que gerencia todo o ciclo de vida da plataforma (criação, execução e exclusão)
- Laboratórios Personalizáveis: Sistema de templates baseado em ConfigMaps do Kubernetes que facilita a criação de novos laboratórios
- Open Source: Projeto totalmente aberto para contribuições da comunidade
- Multilíngue: Criado originalmente para o português, mas com um sistema de templates flexível, é possível criar laboratórios em outros idiomas. Nas versões futuras, o sistema de templates será expandido para suportar múltiplos idiomas.
O projeto GIRUS é composto por quatro componentes principais:
- GIRUS CLI: Ferramenta de linha de comando que gerencia todo o ciclo de vida da plataforma
- Backend: API Golang que orquestra os laboratórios através da API do Kubernetes
- Frontend: Interface web React que fornece acesso ao terminal interativo e às tarefas
- Templates de Laboratórios: Definições YAML para os diferentes laboratórios disponíveis
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ GIRUS CLI │────▶│ Kind Cluster │────▶│ Kubernetes │
└─────────────┘ └──────────────┘ └──────────────┘
│
▼
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Terminal │◀───▶│ Frontend │◀───▶│ Backend │
│ Interativo │ │ (React) │ │ (Go) │
└─────────────┘ └──────────────┘ └──────────────┘
│
▼
┌──────────────┐
│ Templates │
│ Labs │
└──────────────┘
O GIRUS CLI é a porta de entrada para a plataforma, proporcionando uma interface de linha de comando simples para gerenciar todo o ambiente. Desenvolvido em Go, ele automatiza a criação do cluster Kubernetes usando Kind (Kubernetes in Docker), a implantação dos componentes da plataforma, e o gerenciamento dos laboratórios.
girus create cluster
: Cria um novo cluster Kind e implanta todos os componentes da plataformagirus list clusters
: Lista os clusters existentes e seus statusgirus list labs
: Lista os laboratórios disponíveis na plataformagirus delete cluster
: Remove o cluster GIRUS e libera os recursos
- Verificação de dependências (Docker, Kind, kubectl)
- Instalação de dependências faltantes (opcional)
- Criação do cluster Kubernetes com Kind
- Implantação do backend e frontend
- Configuração do port-forwarding (8080 para backend, 8000 para frontend)
- Abertura automática do navegador com a interface web
O backend é o coração da plataforma GIRUS, responsável por orquestrar os ambientes Kubernetes para cada laboratório. Desenvolvido em Go com o framework Gin, ele gerencia o ciclo de vida dos laboratórios, fornece endpoints RESTful para o frontend, e implementa a validação automática das tarefas.
- LabManager: Orquestra a criação, monitoramento e exclusão de recursos Kubernetes
- TemplateManager: Gerencia os templates de laboratórios disponíveis
- API Handlers: Implementa os endpoints RESTful e WebSocket
- Validators: Verifica o progresso das tarefas e fornece feedback imediato
/api/v1/templates
: Retorna a lista de templates de laboratórios disponíveis/api/v1/labs
: Cria um novo laboratório/api/v1/labs/{namespace}/{pod}/validate
: Valida uma tarefa específica/ws/terminal/{namespace}/{pod}
: Endpoint WebSocket para o terminal interativo
O frontend do GIRUS proporciona uma interface web moderna e responsiva para interação com os laboratórios. Desenvolvido com React, TypeScript e Material-UI, ele apresenta um terminal interativo, instruções de tarefas, e feedback visual sobre o progresso.
- Terminal Interativo: Implementado com xterm.js e conectado via WebSocket ao pod do laboratório
- Painel de Tarefas: Exibe instruções passo a passo e botões de validação
- Navegação entre Tarefas: Permite avançar e retroceder entre diferentes etapas do laboratório
- Feedback Visual: Indicadores de progresso e mensagens de validação
- Seletor de Laboratórios: Interface para escolher entre os diferentes laboratórios disponíveis
Os templates são a base para a criação dos laboratórios no GIRUS. Definidos como ConfigMaps do Kubernetes em formato YAML, eles especificam as tarefas, passos, validadores e recursos necessários para cada laboratório.
apiVersion: v1
kind: ConfigMap
metadata:
name: lab-linux-basics
namespace: girus
labels:
app: girus-lab-template
data:
lab.yaml: |
name: linux-basics
title: "Introdução ao Linux"
description: "Laboratório básico para praticar comandos Linux essenciais"
duration: 30m
tasks:
- name: "Navegação básica"
description: "Pratique comandos básicos de navegação"
steps:
- "Use 'pwd' para ver o diretório atual"
- "Liste os arquivos com 'ls -la'"
- "Crie um diretório chamado 'test' com 'mkdir test'"
validation:
- command: "test -d test"
expectedOutput: ""
errorMessage: "Diretório 'test' não foi criado"
-
Instalação do GIRUS CLI:
curl -fsSL https://girus.linuxtips.io | bash
-
Criação do Ambiente:
girus create cluster
-
Acesso à Interface Web: O navegador é aberto automaticamente em
http://localhost:8000
-
Seleção de Laboratório: O usuário escolhe entre os laboratórios disponíveis na interface
-
Execução do Laboratório:
- Um namespace e pod específicos são criados para o usuário
- O terminal interativo é conectado ao pod via WebSocket
- O painel de tarefas exibe as instruções para a primeira tarefa
-
Realização das Tarefas:
- O usuário executa os comandos no terminal
- Ao concluir uma etapa, clica em "Verificar"
- O sistema valida a tarefa e fornece feedback
- O usuário avança para a próxima tarefa
-
Conclusão do Laboratório:
- Ao completar todas as tarefas, o usuário recebe uma mensagem de congratulações
- Os recursos são marcados para limpeza automática
-
Limpeza do Ambiente:
girus delete cluster
O GIRUS oferece uma variedade de laboratórios em diferentes áreas tecnológicas, por exemplo:
- Introdução ao Linux: Comandos básicos, navegação, manipulação de arquivos
- Gerenciamento de Usuários e Permissões: Criação de usuários, grupos, chmod, chown
- Administração de Serviços: Systemd, logs, monitoramento
- Fundamentos de Kubernetes: Pods, deployments, services, namespaces
- Configuração e Armazenamento: ConfigMaps, Secrets, Volumes, PersistentVolumes
- Segurança e Políticas: RBAC, NetworkPolicies, SecurityContexts
- Configuração de CI/CD: Pipelines, integração com GitHub Actions
- Monitoramento e Observabilidade: Prometheus, Grafana, logs
- Infraestrutura como Código: Terraform, Ansible, configurações declarativas
- Sistema Operacional: Linux, macOS ou Windows com WSL2
- Docker: Versão 20.10 ou superior (em execução)
- Memória: Mínimo 4GB disponível
- Espaço em Disco: Mínimo 5GB livre
- Conectividade: Internet para download inicial das imagens
Nota: O script de instalação do GIRUS CLI verifica e instala automaticamente as dependências necessárias (Kind, kubectl) caso não estejam presentes no sistema.
-
Instalação via Script:
curl -fsSL https://girus.linuxtips.io | bash
Este script realiza as seguintes ações:
- Verifica a presença do Docker e sua execução
- Instala Kind e kubectl se necessário
- Compila e instala o GIRUS CLI
- Configura as permissões adequadas
-
Verificação da Instalação:
girus --help
-
Pré-requisitos:
- Instale Docker seguindo as instruções oficiais
- Instale Go a partir do site oficial
- Instale Kind seguindo as instruções do projeto
- Instale kubectl seguindo a documentação do Kubernetes
-
Clone o Repositório:
git clone https://github.com/badtuxx/girus-cli.git cd girus/girus-cli
-
Compile o CLI:
go build -o girus
-
Instale o CLI:
sudo mv girus /usr/local/bin/
Um dos pontos fortes do GIRUS é a facilidade de criação de novos laboratórios. Qualquer pessoa pode contribuir com novos templates seguindo estas etapas:
-
Estrutura do Template: Crie um arquivo YAML seguindo o formato de ConfigMap do Kubernetes:
apiVersion: v1 kind: ConfigMap metadata: name: meu-novo-lab namespace: girus labels: app: girus-lab-template data: lab.yaml: | name: meu-lab-id title: "Título do Meu Laboratório" description: "Descrição detalhada do laboratório" duration: 45m image: "ubuntu:20.04" # Imagem base para o pod tasks: - name: "Nome da Tarefa 1" description: "Descrição da tarefa" steps: - "Passo 1: Faça isso" - "Passo 2: Execute aquilo" validation: - command: "comando para verificar" expectedOutput: "saída esperada" errorMessage: "Mensagem de erro personalizada"
-
Teste o Template:
# Aplique o template no cluster GIRUS girus create lab -f meu-novo-lab.yaml
-
Contribua com o Projeto:
- Faça um fork do repositório
- Adicione seu template ao diretório
/labs
- Envie um Pull Request com sua contribuição
O GIRUS foi criado pela LINUXtips para melhorar a experiência de aprendizado dos alunos, mas não é restrito aos alunos da LINUXtips, você pode usar o GIRUS em qualquer lugar que você precise de um ambiente prático para aprender ou testar novas tecnologias, por exemplo:
-
Complemento para Cursos Online:
- Ambiente prático para reforçar conteúdo teórico
- Validação automatizada de exercícios
- Experiência hands-on sem necessidade de infraestrutura adicional
-
Treinamentos Corporativos:
- Ambientes padronizados para todos os participantes
- Fácil distribuição de exercícios práticos
- Redução de custos com infraestrutura
-
Preparação para Certificações:
- Simulação de ambientes similares aos exames
- Tarefas baseadas em syllabus oficial
- Feedback imediato sobre o progresso
O GIRUS é um projeto open-source que depende da contribuição da comunidade para crescer. Existem várias formas de contribuir:
- Correção de bugs e melhorias no código-fonte
- Implementação de novos recursos
- Otimização de performance
- Testes e garantia de qualidade
- Desenvolvimento de novos templates de laboratórios
- Tradução do conteúdo para outros idiomas
- Elaboração de tutoriais e documentação
- Compartilhamento do projeto nas redes sociais
- Apresentações em eventos e conferências
- Artigos sobre o uso e benefícios da plataforma
- Fork o repositório em GitHub
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade
) - Faça suas alterações e commit (
git commit -m 'Adiciona nova funcionalidade'
) - Push para a branch (
git push origin feature/nova-funcionalidade
) - Abra um Pull Request
O projeto GIRUS tem um plano de desenvolvimento contínuo com os seguintes objetivos:
- Expansão da biblioteca de laboratórios com o Girus Hub
- Melhorias na interface do usuário
- Suporte a múltiplos idiomas
- Integração com sistemas de badges/conquistas
- Implementação de recursos colaborativos
- Sistema de competições e desafios
- Métricas avançadas de progresso
- Suporte a plugins de extensão
O projeto GIRUS oferece diferentes canais para suporte e comunicação:
- GitHub Issues: github.com/badtuxx/girus/issues
- GitHub Discussions: github.com/badtuxx/girus/discussions
- Discord da Comunidade: discord.gg/linuxtips
O projeto GIRUS é distribuído sob a licença GPLv3, o que significa que:
- Você tem liberdade para usar, modificar e distribuir o software
- Modificações devem ser disponibilizadas sob a mesma licença
- Não há garantia para o software
Para mais detalhes, consulte o arquivo LICENSE
no repositório.
O GIRUS é possível graças à contribuição de muitas pessoas e projetos:
- Equipe LINUXtips: Pelo desenvolvimento e manutenção do projeto
- Contribuidores: Desenvolvedores, criadores de conteúdo e tradutores
- Projetos Open Source: Go, React, Kubernetes, Kind, Docker e muitos outros
- Comunidade: Todos os usuários e apoiadores que acreditam no projeto
Q: O GIRUS funciona offline?
A: Sim, após a instalação inicial e download das imagens, o GIRUS pode funcionar completamente offline.
Q: Quanto consome de recursos da minha máquina?
A: O GIRUS é otimizado para ser leve. Um cluster básico consome aproximadamente 1-2GB de RAM e requer cerca de 5GB de espaço em disco.
Q: Posso criar laboratórios personalizados para minha equipe/empresa?
A: Absolutamente! O sistema de templates é flexível e permite a criação de laboratórios específicos para suas necessidades.
Q: Como faço para atualizar o GIRUS para a versão mais recente?
A: Execute o mesmo script de instalação novamente ou use girus update
(disponível em versões mais recentes).
Q: O GIRUS funciona em ambientes corporativos com restrições de rede?
A: Sim, após o download inicial das imagens, o GIRUS opera localmente sem necessidade de conexão externa.
Q: Posso contribuir com novos laboratórios para o projeto?
A: Definitivamente! Contribuições são bem-vindas e valorizadas. Consulte a seção "Contribuição e Comunidade" para detalhes.