Olá a todos.
Recordam-se do nosso ultimo post sobre o n8n? O produto de automação processual? Foi me pedido pelos representantes de várias empresas se conhecia algo não mainstream mas que fosse suportado. Este post é precisamente sobre isso.
A automação de tarefas no nosso homelab e empresa está a tornar-se cada vez mais essencial à medida que a nossa infraestrutura cresce.
Entre as diversas ferramentas disponíveis, o Windmill destaca se como uma alternativa viável ao n8n, pela sua flexibilidade, robustez e suporte. Neste post, iremos explorar como instalar e integrar o Windmill em um ambiente Docker e como ele pode transformar a maneira como gerimos as nossas operações diárias da nossa infraestrutura, seja pessoal, seja da empresa.
O Que é Windmill?
Windmill é uma plataforma de automação em opensource que permite a criação e execução de workflows complexos de maneira simples e intuitiva. Ela é ideal para gerir e automatizar tarefas repetitivas, o que é crucial em um ambiente de homelab onde a eficiência e a organização são essenciais, e sobretudo o Windmill é uma excelente plataforma de low code.
Principais Funcionalidades do Windmill
- Automação de Workflow: Criação de fluxos de trabalho automatizados que podem ser acionados por eventos ou pré-programados.
- Interface Intuitiva: Uma interface gráfica que facilita a criação e o gestão de workflows e low-code sem a necessidade de conhecimentos avançados em programação.
- Integração com Serviços Externos: Capacidade de se integrar com diversas APIs e serviços externos, ampliando as possibilidades de automação.
- Execução Escalável: Projetado para escalar conforme necessário, suportando um grande volume de tarefas simultâneas.
- Low Code – Galore!
Instalando o Windmill em Docker.
Para começar a utilizar o Windmill na nossa infraestrutura, a instalação via Docker é uma das opções mais práticas. Docker permite a criação de containers isolados que garantem que a aplicação Windmill e suas dependências executem de maneira consistente em qualquer ambiente.
Passo a Passo da Instalação
1. Pré-requisitos: Docker instalado em um sistema. Podem seguir as instruções no site oficial do Docker para instalar.
2. Descarreguem a versão correta do software. Abram o vosso terminal e executem:
docker pull windmill/windmill
3. Executando o container do Windmill:
docker run -d -p 3000:3000 --name windmill windmill/windmill
Este comando faz o seguinte:
– `-d`: Executa o container em segundo plano.
– `-p 3000:3000`: Mapeia a porta 3000 do container para a porta 3000 do host.
– `–name windmill`: Nomeia o container como “windmill”.
4. Verificando a Instalação:
Após iniciarem o container, podem aceder a interface web do Windmill através do browser, utilizando o endereço `http://$ip:3000`. Se tudo estiver configurado corretamente, irão ver a interface de gestão do Windmill.
Integrando o Windmill no Homelab
Com o Windmill instalado e executando, o próximo passo é integrá-lo ao nosso homelab/infraestrutura para automatizar tarefas.
Exploremos portanto algumas maneiras práticas de fazer isso.
Automação de Backups
Uma das tarefas mais importantes em um homelab é garantir que os dados estejam seguros. Podemos configurar o Windmill para automatizar backups de bancos de dados ou arquivos importantes.
1. Criando um Workflow de Backup de uma DB de mysql:
– Acedam a interface do Windmill e criem um novo workflow.
– Adicione num script para realizar o backup do seu banco de dados ou arquivos. Por exemplo, para fazer backup de um banco de dados MySQL:
mysqldump -u user -p password database_name > /backup/backup.sql
– Configurem o workflow para ser executado em intervalos regulares, como diariamente ou semanalmente.
Monitorização e Notificações
Manterem-se informados sobre o estado da vossa infraestrutura é crucial. O Windmill pode ser configurado para monitorizar recursos e enviar notificações em caso de falhas ou anomalias.
Configurando Monitorização:
– Criem um workflow para verificar o status dos vossos servidores, serviços ou containers Docker. Por exemplo:
docker ps
– Adicionem condições if para detetar se algum serviço está offline ou apresentando problemas.
– Integrem com serviços de notificação, como email, slack ou ntfy, para alertar imediatamente sobre qualquer problema.
Gestão de Tarefas de Manutenção:
Outra aplicação útil do Windmill é a automação de tarefas de manutenção, como atualizações de software, limpeza de logs ou otimização de bases de dados.
Automatizando Atualizações:
– Criem um workflow para atualizar automaticamente os pacotes do sistema ou aplicações específicas. Por exemplo, para atualizar pacotes em um sistema RockyLinux:
sudo dnf clean all && dnf update -y
Integração com APIs e Serviços Externos
O Windmill permite integração com diversas APIs e serviços externos, expandindo ainda mais as possibilidades de automação no nosso homelab.
Integrando com Serviços de DNS Dinâmico:
– Se utilizam um serviço de DNS dinâmico, podem automatizar a atualização de registos DNS sempre que o IP do seu homelab mudar.
– Criem um workflow que verifique o IP atual e atualize o registo DNS utilizando a API do seu provedor de DNS.
Exemplo Completo: Automação de Backup e Notificação
Vamos criar um exemplo completo que combina backup da base de dados com notificação via email.
Criando um Workflow de Backup de uma DB de mysql:
– Acedam a interface do Windmill e criem um novo workflow.
– Adicione num script para realizar o backup do seu banco de dados ou arquivos. Por exemplo, para fazer backup de um banco de dados MySQL:
mysqldump -u user -p password database_name > /backup/backup.sql
– Configurem o workflow para ser executado em intervalos regulares, como diariamente ou semanalmente.
– Adicionem um script para enviar uma notificação por email utilizando um serviço como SendGrid:
import smtplib from email.mime.text import MIMEText msg = MIMEText("Backup realizado com sucesso.") msg['Subject'] = "Notificação de Backup" msg['From'] = "[email protected]" msg['To'] = "[email protected]" with smtplib.SMTP('smtp.sendgrid.net', 587) as server: server.login("apikey", "sua-chave-api") server.sendmail(msg['From'], [msg['To']], msg.as_string())
– Configure o workflow para ser executado diariamente.
Com este exemplo, sempre que o workflow de backup for executado, irão receber uma notificação por email confirmando o sucesso da operação.
Conclusão
O Windmill é uma ferramenta poderosa para automatizar tarefas no seu homelab, proporcionando maior eficiência e controle sobre suas operações e um suporte a condizer. Ao integrar o Windmill com Docker, irão garantir uma instalação fácil e escalável. Seja para automação de backups, monitorização, manutenção ou integração com serviços externos, o Windmill oferece uma solução flexível e robusta.
Experimentem implementar estas soluções no vosso homelab e descubram como o Windmill pode transformar a vossa rotina de gestão, permitindo que você se concentre em tarefas mais estratégicas e menos operacionais.
Até ao próximo post. E já sabem. Se acharem algo menos correto, já sabem onde me encontrar.
Um abraço
Nuno