🐧 Projeto de Provisionamento Automático com Terraform, Ansible, Docker, Prometheus, Grafana, InfluxDB, Uptime-kuma e Speedtest
Este projeto automatiza a criação e configuração de um ambiente de monitoramento e serviços utilizando:
- Terraform para provisionamento da infraestrutura no Proxmox VE.
- Ansible para a configuração pós-provisionamento das VMs/CTs.
- Docker para orquestração dos containers necessários para as aplicações:
- Portainer
- Prometheus
- Node Exporter
- Alertmanager
- cadvisor
- Grafana
- Speedtest Exporter
- InfluxDB
- UptimeKuma
├── ansible
│ ├── inventory.ini
│ ├── provision.yml
│ └── files
│ ├── .env
│ ├── docker-compose.yml
│ ├── prometheus.yml
│ ├── alert.rules
│ ├── grafana/
│ │ └── provisioning/
│ │ ├── dashboards.yml
│ │ ├── dashboards/
│ │ │ └── speedtest.json
│ │ └── datasources/
│ │ └── prometheus.yml
│ └── alertmanager/
│ └── config.yml
├── scripts
│ └── run_ansible.sh
├── main.tf
├── variables.tf
├── terraform.tfvars
Para que o Terraform se conecte ao Proxmox utilizando API Token:
- Acesse a interface web do Proxmox (ex:
https://IP-DO-PROXMOX:8006
). - Vá até:
Datacenter > Permissions > API Tokens
. - Clique em "Add":
- User:
terraform@pve
(ou outro usuário com permissões adequadas) - Token ID:
tf-token
(ou outro nome amigável) - Marque a opção "Privilege Separation".
- User:
- Após salvar, será exibido o "Secret" — copie imediatamente, pois ele não será mostrado novamente.
Certifique-se de que o usuário possui permissões para VM, LXC e leitura em Datacenter. Para mais segurança, o ideal é armazenar esse token usando um gerenciador de segredos ou como variável de ambiente.
pm_api_token_id = "terraform@pve!tf-token"
pm_api_token_secret = "SEU_TOKEN_SECRETO"
- Permissões adequadas no Proxmox:
- Usuário com permissão para criar e gerenciar VMs/CTs.
- Adicionar
pve
realm ao Terraform:
Exemplo emterraform.tfvars
:
proxmox_api_url = "https://proxmox.local:8006/api2/json"
proxmox_user = "root@pam"
proxmox_token_id = "terraform"
proxmox_token_secret = "seu_token"
- Inicializar o Terraform:
terraform init
- Aplicar infraestrutura:
terraform apply
- Provisionamento com Ansible:
Esse trecho, também está no "main.tf" em "run_ansible_playbook" do Terraform.
bash ./scripts/run_ansible.sh
- No Proxmox, acesse
Datacenter > Metric Server
. - Clique em "Add" e escolha "InfluxDB".
- Preencha os seguintes campos:
- Server:
192.168.18.152
- Port:
8086
- Organization:
MinhaOrganizacao
- Token:
TokenSecretoInflux
- Bucket:
MeuBucket
- Verify Certificate:
No
- Server:
- Salve as configurações e o Proxmox começará a enviar as métricas automaticamente.
- No Grafana, acesse
Dashboards > Import
. - No campo "Import via grafana.com", insira o ID
17051
. - Clique em "Load".
- Selecione a fonte de dados configurada para o InfluxDB.
- Clique em "Import" para finalizar.
Referência: Monitoring Proxmox with InfluxDB and Grafana - Tanner Cude
Sistema completo de monitoramento automatizado, com integração Proxmox + InfluxDB + Grafana:
- Dashboards em tempo real
- Métricas de uso de CPU, Memória, Rede e Disco das VMs/CTs
A imagem de arquitetura pode ser encontrada em ./docs/imagem-arquitetura.png
- Proxmox VE
- Terraform 1.6+
- Ansible 2.14+
- Docker e Docker Compose
- Acesso SSH ao Proxmox
Este projeto é livre para uso e modificação.