# ============================================================================= # Reseau prive Hetzner # ============================================================================= # Le noeud de donnees n'est JAMAIS joignable depuis Internet sur 5432/6379. # Tout le trafic applicatif -> base passe par ce reseau prive, isole au niveau # du projet Hetzner. # # Attention : le trafic sur un reseau prive Hetzner n'est pas chiffre par # l'hyperviseur. On ajoute donc deux couches par-dessus : # 1. TLS PostgreSQL (ssl = on + DATABASE_SSL=true cote applicatif) # 2. Filtrage nftables sur db-01 (cf. scripts/01-setup-data-node.sh) # Les firewalls Hetzner Cloud ne filtrent que les interfaces PUBLIQUES. resource "hcloud_network" "main" { name = "${var.project_name}-net" ip_range = var.network_cidr labels = { project = var.project_name managed = "terraform" } } resource "hcloud_network_subnet" "main" { network_id = hcloud_network.main.id type = "cloud" network_zone = "eu-central" ip_range = var.subnet_cidr } # Cle SSH partagee par les deux serveurs. resource "hcloud_ssh_key" "admin" { name = "${var.project_name}-admin" public_key = var.ssh_public_key labels = { project = var.project_name managed = "terraform" } } # Repartit les deux VMs sur des hotes physiques differents : une panne materielle # ne peut pas emporter l'app ET la base en meme temps. resource "hcloud_placement_group" "spread" { name = "${var.project_name}-spread" type = "spread" labels = { project = var.project_name managed = "terraform" } }