xpeditis2.0/infra/prod/terraform/network.tf
2026-09-07 21:40:50 +02:00

53 lines
1.6 KiB
HCL

# =============================================================================
# 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"
}
}