provisioning-code/templates/workspace/nickel/lib/hetzner_defaults.ncl

73 lines
1.6 KiB
Text
Raw Normal View History

# Hetzner Cloud Provider Defaults
# Pre-configured sensible defaults for Hetzner Cloud deployments
let provisioning = import "schemas/main.ncl" in
let lib = provisioning.lib in
{
# Provider identity
provider = "hetzner",
# Network configuration
network_private_ip = null, # Will be assigned by Hetzner
network_public_ip = null,
network_ipv6 = true,
# Liveness probing
liveness_ip = "{{network_public_ip}}",
liveness_port = 22,
liveness_interval = 300,
# Storage defaults for Hetzner
storages = [
({
name = "root",
size = 30,
total = 40,
type = "ext4",
mount = true,
mount_path = "/",
fstab = true,
parts = [
{
name = "root",
size = 30,
total = 30,
type = "ext4",
mount = true,
mount_path = "/",
},
{
name = "data",
size = 10,
total = 10,
type = "ext4",
mount = true,
mount_path = "/var/lib",
},
],
} | lib.Storage)
],
# Hetzner-specific region (eu-central, us-west, ap-southeast, etc.)
region = "eu-central",
# Plan/server type (common Hetzner plans)
# CX11 (1 vCPU, 1 GB RAM), CX21 (2 vCPU, 4 GB), CX31, CX41, CX51, CX61, CX81
plan = "CX21",
# Firewall and security defaults
labels = "provisioning=true,environment=production",
# Taskservs (empty, override per server)
taskservs = [],
# Server state
not_use = false,
nixos_anywhere_enabled = false, # Set to true to enable NixOS generation
# Hetzner Cloud API configuration (optional)
cloud_api_enabled = true,
datacenter = null, # Let Hetzner choose
}