Olá a todos,
Como já me conhecem, estou sempre a procura de boas ideias para melhorar a minha eficiência de trabalho e aumentar o valor que a minha equipa entrega aos Clientes.
Isto aplica-se também a minha area de origem, administração de sistemas e agora com a vertente de automatismo. Que outro caminho seguiria agora que não a combinação da minha nova paixão, a AI?
Esta revolução da inteligência artificial está a transformar radicalmente o modo como desenvolvemos, implementamos e gerimos infraestruturas tecnológicas. Uma das menções honrosas para esta transformação encontra-se no OpenHands, uma plataforma open-source extraordinária que está a redefinir completamente o panorama da Infrastructure as Code (IaC) e da administração de sistemas automatizada.
O Que É o OpenHands?
O OpenHands, anteriormente conhecido como OpenDevin, é uma plataforma revolucionária de desenvolvimento de software alimentada por inteligência artificial que funciona como um verdadeiro assistente digital para engenheiros DevOps e administradores de sistemas. Esta ferramenta inovadora permite que agentes de IA executem exactamente as mesmas tarefas que um programador humano: modificar código, executar comandos no terminal, navegar na web, chamar APIs e até mesmo copiar snippets de código do StackOverflow.
Os agentes de OpenHands conseguem fazer perto de tudo o que o developer humano consegue fazer: modificar código, correr comandos, procurar na internet, chamar APIs, e sim —até copiar snippets de código diretamente do StackOverflow (cof cof). Esta capacidade única torna o OpenHands numa ferramenta excepcionalmente poderosa para quem trabalha com Infrastructure as Code e automatização de sistemas.
Mas Por Que o considero um Game Changer?
Automatização Completa de Tarefas DevOps
O OpenHands destaca-se por ser capaz de automatizar virtualmente qualquer tarefa relacionada com DevOps e administração de sistemas. A plataforma pode criar código novo ou modificar bases de código existentes com base em instruções do utilizador, o que significa que pode gerar e modificar scripts Terraform, configurações Ansible, manifestos Kubernetes e muito mais, tudo através de instruções em linguagem natural.
Esta capacidade é particularmente relevante para profissionais que trabalham com Infrastructure as Code, pois elimina a necessidade de escrever manualmente código repetitivo e propenso a erros. Em vez de passar horas a criar templates Terraform ou scripts de automatização, pode simplesmente descrever o que pretende alcançar e deixar o OpenHands tratar de toda a implementação.
Integração Nativa com Ferramentas DevOps
Uma das características mais impressionantes do OpenHands é a sua capacidade de integração com o ecossistema DevOps existente. A plataforma pode gerir a instalação de módulos necessários e administrar dependências de projectos, além de poder adicionar novas GitHub Actions aos projectos, como configurar workflows de linting. Esta integração profunda significa que o OpenHands não é apenas mais uma ferramenta isolada – é um componente que se encaixa perfeitamente no vosso workflow existente, potenciando todas as outras ferramentas que já utilizais.
Capacidades de Troubleshooting Avançadas
Para administradores de sistemas como eu, uma das funcionalidades mais valiosas do OpenHands é a sua capacidade de diagnóstico e resolução de problemas. O OpenHands pode ajudar a identificar e resolver problemas de código e bugs, o que se traduz numa ferramenta excepcionalmente útil para detectar problemas em configurações de infraestrutura, scripts de automatização e pipelines CI/CD.
Instalação e Configuração do OpenHands
Requisitos do Sistema
Antes de proceder à instalação, é importante garantir que o vosso sistema cumpre os requisitos mínimos. O OpenHands funciona melhor com modelos LLM de última geração, pelo que necessitareis de uma chave API de fornecedores como Anthropic (Claude) ou OpenAI (GPT-4), ou se preferirem podem ligar ao vosso fiel Ollama local.
Instalação via Docker
A forma mais simples e recomendada de executar o OpenHands é através do Docker. Este método garante um ambiente isolado e consistente, ideal para testing e produção.
Passo 1: Preparação do Ambiente
Primeiro, criem um directório de trabalho para o OpenHands:
mkdir ~/openhands-workspace
cd ~/openhands-workspace
Passo 2: Download e Execução
Executem o seguinte comando para fazer download e executar o OpenHands:
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39
Passo 3: Configuração do Workspace
Para apontar o OpenHands a código existente que pretendem modificar, podem especificar um directório workspace:
export WORKSPACE_BASE=$(pwd)/workspace
docker run -it --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e SANDBOX_USER_ID=$(id -u) \
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
-v $WORKSPACE_BASE:/opt/workspace_base \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39
Passo 4: Acesso à Interface Web
Após executar o comando, o OpenHands estará disponível em http://localhost:3000
. Abram este URL no vosso browser para aceder à interface web completa. Se tiverem o vosso ambiente como eu num sistema dedicado, substituam localhost pelo ip correcto.
Configuração de API Keys
Quando acederem pela primeira vez ao OpenHands, ser-vos-á solicitado para configurar um fornecedor de LLM:
- Anthropic Claude (Recomendado): O modelo
anthropic/claude-3-7-sonnet-20250219
oferece os melhores resultados - OpenAI: GPT-4o ou GPT-4 também funcionam bem
- Outros fornecedores: O OpenHands suporta múltiplos fornecedores através do LiteLLM, ou do nosso amigo Ollama.
Configuração para Ambientes de Produção
Para deployments mais robustos, especialmente em ambientes empresariais, o manual recomenda utilizar o guia de instalação segura:
# Para redes públicas, utilizai configurações de segurança reforçadas
docker run -it --rm \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 127.0.0.1:3000:3000 \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39
Configuração via Variáveis de Ambiente
Para automatizar a configuração de forma a melhor servir a vossa necessidade, podem definir variáveis de ambiente:
export LLM_MODEL="anthropic/claude-3-7-sonnet-20250219"
export LLM_API_KEY="your-api-key-here"
export SANDBOX_VOLUMES="/path/to/your/workspace"
Verificação da Instalação
Para confirmarem que tudo está a funcionar correctamente:
- Acedam a
http://localhost:3000
(ou ao IP de serviço, conforme falado acima) - Configurem a vossa API key
- Testem com um comando simples como “Create a hello world Python script”
- Verifiquem que o OpenHands consegue executar comandos e modificar ficheiros
Troubleshooting
Aqui iremos distinguir os administradores dos script kiddies…
Da minha experiencia a utilizar este software nas ultimas semanas notei os seguintes pontos:
Problemas de Permissões: Se encontrarem erros de permissões, garantirem que o Docker daemon está em execução e que o vosso utilizador tem acesso ao Docker socket.
Problemas de Rede: Em redes corporativas, ou segregadas poderá ser necessário configurar proxies ou firewall rules para permitir acesso às APIs dos fornecedores LLM.
Recursos Insuficientes: O OpenHands requer recursos computacionais significativos. Recomenda-se pelo menos 4GB de RAM e processamento moderno. Tenho estado a correr numa VM com 16GB de ram e noto por vezes solavancos.
Modo CLI para Administradores de Sistemas
Para administradores que preferem trabalhar exclusivamente no terminal, ou desejem integrar com n8n ou outros automatismos por script o OpenHands oferece um modo CLI bastante util:
# Configurar variáveis de ambiente
export LLM_MODEL="anthropic/claude-3-7-sonnet-20250219"
export LLM_API_KEY="your-api-key-here"
export SANDBOX_VOLUMES="/path/to/workspace"
# Executar em modo CLI interactivo
python -m openhands.core.cli
Comandos CLI Úteis (para mim) :-):
/init
– Ajuda o agente a compreender o vosso projeto criando um ficheiro.openhands/microagents/repo.md
/help
– Mostra lista de comandos disponíveis/settings
– Acede a configuração avançada de LLM/resume
– Continua conversa após pausa (Ctrl-P)
OpenHands Cloud vs Self-Hosted.
Aqui é o tema e o debate normal: Quero ir para cloud? Quero ou preciso ficar em on-premise? O código que tenho é confidencial?
A resposta a estas questões ajudar-vos-á a escolher.
OpenHands Cloud:
- Oferece $50 em créditos gratuitos para novos utilizadores.
- Ideal para testes rápidos e equipas pequenas.
- Sem necessidade de configuração local.
Self-Hosted / On premise (Docker):
- Controlo total sobre dados e ambiente.
- Ideal para empresas com requisitos de segurança.
- Configuração personalizada e integração com sistemas internos.
- Minha escolha e recomendação pessoal.
Configuração para CI/CD
Um dos meus amigos tem usado muito o OpenHands para delivery de código em CI/CD e entregou-me este mini how-to para como o fazer:
# Modo headless para scripts
docker run --rm \
-e LLM_MODEL="anthropic/claude-3-7-sonnet-20250219" \
-e LLM_API_KEY="$LLM_API_KEY" \
-v "$(pwd):/workspace" \
docker.all-hands.dev/all-hands-ai/openhands:0.39 \
--mode headless \
--task "Update Terraform configurations for new environment"
Casos de Uso Práticos em Infrastructure as Code
Terraform e Automatização de Cloud
Chegamos agora a parte que mais me toca. Automação.
O OpenHands revoluciona completamente a forma como trabalhamos com Terraform. Em vez de escrever manualmente ficheiros .tf complexos, podeis simplesmente descrever a infraestrutura que pretendem e deixar o OpenHands gerar todo o código necessário. Por exemplo:
- Criação automática de módulos Terraform para recursos AWS, Azure ou GCP
- Geração de pipelines CI/CD para implementação automatizada de infraestrutura
- Criação de scripts de validação e testes para configurações Terraform
- Automatização de tarefas de manutenção como rotação de chaves, backups e monitoring
Gestão de Configurações e Ansible/Puppet
Para quem trabalha com Ansible/Puppet, o OpenHands oferece capacidades extraordinárias de automatização. Pode gerar e actualizar documentação de projectos, o que é crucial para manter uma base de código de automatização bem documentada e organizada.
O OpenHands pode:
- Gerar playbooks Ansible complexos baseados em descrições de alto nível
- Criar roles reutilizáveis e best practices automaticamente
- Implementar estratégias de deployment blue-green ou canary
- Automatizar a criação de inventários dinâmicos para diferentes ambientes
Nota que o OpenHands é excelente para o refactoring de código ansible e puppet. Tenho exemplos de módulos custom que tinam para cima de 5 mil linhas, ficarem reduzidos a 3000.
Kubernetes e Orquestração de Containers
Na era dos microserviços e containers, o OpenHands demonstra capacidades impressionantes na gestão de ambientes Kubernetes. O OpenHands consegue criar novas rotas de API e endpoints em projectos existentes, o que se traduz na capacidade de gerar manifestos Kubernetes completos, incluindo Deployments, Services, Ingress e ConfigMaps.
Arquitectura e Flexibilidade
Modularidade e Extensibilidade
Isto é tudo muito giro, mas a verdade é que estar a mudar de ferramenta a cada dois ou três meses acaba por criar curvas de aprendizagem muito agressivas.
Aqui o OpenHands, e a sua arquitectura modular da plataforma permite uma integração seamless com diversos fornecedores de LLM. O módulo LLM: gere todas as interacções com modelos de linguagem de grande escala. Funciona com qualquer modelo de completion subjacente, graças ao LiteLLM.
Basicamente, ele cresce com as vossas necessidades o que no meu mundo é um plus.
Esta flexibilidade significa que podem utilizar o OpenHands com diferentes modelos de IA, desde Claude 3.7 Sonnet até GPT-4 e Ollama, adaptando-se às vossas necessidades específicas e orçamento.
EventStream e Comunicação
O sistema de eventos do OpenHands é particularmente elegante. O EventStream serve como espinha dorsal para toda a comunicação no OpenHands, permitindo uma coordenação eficiente entre todos os componentes da plataforma.
Para mim é uma dos elementos mais importantes desta ferramenta.
E Quais os Modos de Operação?
O OpenHands fornece varias formas de interação e de operar, para todos os gostos:
Interface Web Completa
O modo principal com uma interface de utilizador completa que permite aos utilizadores interagir com agentes através de uma interface web oferece uma experiência user-friendly para quem prefere interfaces gráficas. Esta interface é ideal para prototipagem rápida e experimentação com diferentes configurações de infraestrutura.
Modo CLI Interactivo
Para administradores que vivem como eu no terminal, ou dependem de ferramentas extras de automatismo o modo CLI fornece uma interface de linha de comandos interactiva poderosa que permite interagir com o OpenHands directamente a partir do terminal. Este modo é perfeito para integração em scripts existentes e workflows automatizados.
Modo Headless para Automatização
O modo não-interactivo para automatização e scripting permite integrar o OpenHands directamente em pipelines CI/CD e sistemas de automatização, tornando-o numa ferramenta verdadeiramente enterprise-ready.
E Quais os Benefícios Práticos para Equipas DevOps
Redução Drástica de Tempo de Desenvolvimento
O impacto do OpenHands no tempo de desenvolvimento é extraordinário. Tarefas que tradicionalmente demorariam horas ou dias podem agora ser completadas em minutos. O OpenHands demonstrou capacidades impressionantes, resolvendo mais de 50% dos problemas reais do GitHub em benchmarks de engenharia de software, o que demonstra a sua eficácia em cenários do mundo real.
Democratização de Conhecimento Técnico
Uma das vantagens mais significativas do OpenHands é como democratiza conhecimento técnico avançado. Profissionais com menos experiência em Infrastructure as Code podem agora gerar configurações complexas simplesmente descrevendo os seus requisitos em linguagem natural.
Consistência e Standardização
Ao utilizar o OpenHands para gerar código de infraestrutura, as equipas garantem maior consistência e aderência a best practices. A ferramenta pode ser configurada para seguir patterns específicos da organização, garantindo que todo o código gerado está alinhado com os standards internos.
Segurança e Controlo? São Importantes. Existem?
Ambiente Sandboxed
O OpenHands executa todas as operações num ambiente controlado e isolado, garantindo que as experimentações e testes não comprometem sistemas de produção. Esta abordagem sandbox é crucial para manter a segurança em ambientes empresariais ou testar código que se pode eventualmente atravessar, especialmente quando o fazemos em ambientes partilhados.
Auditoria e Rastreabilidade
Todas as operações executadas pelo OpenHands são registadas e podem ser auditadas, proporcionando total transparência sobre as alterações realizadas na infraestrutura. Esta capacidade de auditoria é essencial para compliance e debugging.
Casos de Sucesso e Implementação.
Nota: Desde que descobri o produto, tenho procurado nos subreddits /r/selfhosted, posts sbore os mesmos. Os exemplos abaixo são uma compilação do que já foi reportado que utilizaram o OpenHands para o conseguir
Configuração de Ambientes Multi-Cloud
O OpenHands excela na criação de configurações multi-cloud complexas. Pode gerar código Terraform que provisions recursos simultaneamente em AWS, Azure e GCP, gerindo as nuances específicas de cada provider de forma transparente.
Automatização de Disaster Recovery
Para implementação de estratégias de disaster recovery, o OpenHands pode gerar automaticamente scripts e configurações que garantem alta disponibilidade e recuperação rápida em caso de falhas.
Monitoring e Observabilidade
A ferramenta pode criar configurações completas de monitoring, incluindo dashboards Grafana, alertas Prometheus e colecção de métricas personalizadas, tudo baseado em requisitos descritos em linguagem natural.
GitHub Actions e GitLab CI
A plataforma pode adicionar novas GitHub Actions aos projectos, como configurar workflows de linting, facilitando a criação de pipelines CI/CD robustos e automatizados. O OpenHands pode gerar workflows completos que incluem testes, validação de código, deployment automatizado e rollback strategies.
Jenkins e Azure DevOps
A integração com sistemas CI/CD tradicionais como Jenkins e Azure DevOps é seamless, permitindo que equipas migrem gradualmente para workflows mais automatizados sem disruption dos processos existentes.
Desafios e Considerações
Como não há bela sem senão, e apesar da sua facilidade de uso, maximizar o potencial do OpenHands requer compreensão dos princípios fundamentais de Infrastructure as Code e DevOps. É importante que as equipas invistam tempo a aprender como formular pedidos efectivos e como validar o código gerado. E não, AI não irá substituir nenhum programador ou developer any time soon.
Validação e Testes
Embora o OpenHands gere código de alta qualidade, é crucial implementar processos robustos de validação e testes. O código gerado deve sempre ser revista e testado antes de ser aplicado em ambientes de produção.
Gestão de Dependências
O OpenHands requer modelos de linguagem de grande escala de última geração; não pode funcionar com modelos locais ou modelos menores que tenham janelas de contexto limitadas. Esta dependência de modelos LLM avançados significa que é necessário ter acesso a APIs de fornecedores como Anthropic ou OpenAI.
O Futuro da Infrastructure as Code
O OpenHands representa um paradigm shift fundamental na forma como pensamos sobre Infrastructure as Code. Estamos a mover-nos de um modelo onde programamos infraestrutura para um modelo onde descrevemos infraestrutura e a IA trata da implementação. Caveats e cuidados básicos como os descritos acima no ponto de validação e testing aplicam-se, e a premissa de se o problema for demasiado grande, decomponham em bocados é completamente válido. E de que maneira.
E chegamos ao fim de mais um post semanal. Neste vimos como o OpenHands representa verdadeiramente um game changer para profissionais que trabalham com Infrastructure as Code e administração de sistemas. A sua capacidade de automatizar tarefas complexas, integrar-se seamlessly com ferramentas existentes, e democratizar conhecimento técnico avançado torna-o numa ferramenta indispensável para equipas DevOps modernas.
A combinação de uma interface intuitiva, capacidades de automatização robustas, e uma arquitectura flexível posiciona o OpenHands como a ferramenta definitiva para quem pretende maximizar a eficiência e minimizar erros em ambientes de infraestrutura complexos.
Para equipas que ainda hesitam em adoptar ferramentas de IA para Infrastructure as Code, o OpenHands oferece um ponto de entrada acessível e poderoso. Com a sua licença MIT permissiva e comunidade activa, representa um investimento seguro no futuro da automatização de infraestrutura.
O futuro da Infrastructure as Code chega todos os dias e desta vez tem o nome OpenHands. É altura de abraçar esta evolução e transformar a forma como gerimos e automatizamos as nossas infraestruturas tecnológicas.
Até ao post da próxima semana, e claro que se notarem algo que esteja menos correcto ou queriam acrescentar, já sabem onde me encontrar.
Abraço,
Nuno