48 lines
1.1 KiB
HCL
48 lines
1.1 KiB
HCL
terraform {
|
|
required_providers {
|
|
hcloud = {
|
|
source = "hetznercloud/hcloud"
|
|
version = "~> 1.60.1"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Der Token sollte NIEMALS hart im Code stehen.
|
|
# Wir nutzen eine Variable dafür.
|
|
variable "hcloud_token" {
|
|
sensitive = true
|
|
}
|
|
|
|
provider "hcloud" {
|
|
token = var.hcloud_token
|
|
}
|
|
|
|
# 1. SSH-Key bei Hetzner registrieren (oder einen vorhandenen nutzen)
|
|
resource "hcloud_ssh_key" "default" {
|
|
name = "treff-key"
|
|
public_key = file("~/.ssh/id_ed25519.pub")
|
|
}
|
|
|
|
# 2. Den Server definieren
|
|
resource "hcloud_server" "web_server" {
|
|
name = "linux-treff-demo"
|
|
image = "fedora-43"
|
|
server_type = "cx23"
|
|
location = "nbg1" # Nürnberg
|
|
ssh_keys = [hcloud_ssh_key.default.id]
|
|
|
|
# Hier binden wir das Cloud-Init Skript ein
|
|
user_data = file("${path.module}/user_data.yaml")
|
|
|
|
# Optional: Labels für die Ordnung
|
|
labels = {
|
|
veranstaltung = "linuxtreff"
|
|
typ = "demo"
|
|
}
|
|
}
|
|
|
|
# Output der IP, damit man sich sofort verbinden kann
|
|
output "server_ip" {
|
|
value = hcloud_server.web_server.ipv4_address
|
|
}
|
|
|