homelab/terraform/er605/main.tf
gaia 893e7dba7c feat: inicial IaC - estrutura base + Docker Compose + Ansible
- Estrutura Terraform para ER605/Omada
- Ansible inventory e role base para Dockerino
- Docker Compose files para todos os serviços do Dockerino
- Docker Compose para Media stack (Jellyfin, Sonarr, Radarr, etc)
- Documentação ARCHITECTURE.md e NEXT_STEPS.md (via Héstia)
2026-04-09 01:06:05 -03:00

119 lines
3.0 KiB
HCL

# Terraform configuration for TP-Link ER605 Router via Omada Controller
# Router: TP-Link ER605 (Omada Controller on dockerino:8043)
terraform {
required_version = ">= 1.0"
required_providers {
omada = {
source = "jkbo/RF-omada"
version = "~> 1.0"
}
}
}
provider "omada" {
omada_url = var.omada_url
omada_username = var.omada_username
omada_password = var.omada_password
ssl_verify = var.ssl_verify
}
# Data sources to get existing network info
data "omada_networks" "homelab" {
site_name = var.site_name
}
# VLAN 1 - Infraestrutura (10.0.0.0/24)
resource "omada_network" "vlan1_infra" {
site_name = var.site_name
name = "VLAN1-INFRA"
purpose = "Management"
type = "L3"
subnet = "10.0.0.0/24"
gateway_ip = "10.0.0.1"
vlan_id = 1
dhcp_relay_enabled = false
}
# VLAN 10 - Geral (10.0.10.0/24)
resource "omada_network" "vlan10_geral" {
site_name = var.site_name
name = "VLAN10-GERAL"
purpose = "Corporate"
type = "L3"
subnet = "10.0.10.0/24"
gateway_ip = "10.0.10.1"
vlan_id = 10
dhcp_relay_enabled = false
}
# VLAN 20 - IOT (10.0.20.0/24)
resource "omada_network" "vlan20_iot" {
site_name = var.site_name
name = "VLAN20-IOT"
purpose = "Corporate"
type = "L3"
subnet = "10.0.20.0/24"
gateway_ip = "10.0.20.1"
vlan_id = 20
dhcp_relay_enabled = false
}
# VLAN 30 - Guests (10.0.30.0/24)
resource "omada_network" "vlan30_guests" {
site_name = var.site_name
name = "VLAN30-GUESTS"
purpose = "Guest"
type = "L3"
subnet = "10.0.30.0/24"
gateway_ip = "10.0.30.1"
vlan_id = 30
dhcp_relay_enabled = false
}
# DHCP Static Leases (examples)
# Add static DHCP entries for known devices
resource "omada_dhcp_static" "truenas" {
site_name = var.site_name
network_id = omada_network.vlan1_infra.id
mac_address = var.truenas_mac
ip_address = "10.0.0.30"
hostname = "truenas"
}
resource "omada_dhcp_static" "proxmox" {
site_name = var.site_name
network_id = omada_network.vlan1_infra.id
mac_address = var.proxmox_mac
ip_address = "10.0.0.20"
hostname = "proxmox"
}
resource "omada_dhcp_static" "dockerino" {
site_name = var.site_name
network_id = omada_network.vlan1_infra.id
mac_address = var.dockerino_mac
ip_address = "10.0.0.50"
hostname = "dockerino"
}
resource "omada_dhcp_static" "media" {
site_name = var.site_name
network_id = omada_network.vlan1_infra.id
mac_address = var.media_mac
ip_address = "10.0.0.36"
hostname = "media"
}
resource "omada_dhcp_static" "homeassistant" {
site_name = var.site_name
network_id = omada_network.vlan1_infra.id
mac_address = var.homeassistant_mac
ip_address = "10.0.0.100"
hostname = "homeassistant"
}
# DNS routes for internal resolution
# *.hackerfortress.cc -> 10.0.0.50 (dockerino/NPM)