provider "hcloud" { token = var.hcloud_token } resource "hcloud_ssh_key" "default" { name = var.hcloud_ssh_key_name public_key = file(var.hcloud_ssh_key_file_path) } resource "hcloud_server" "web" { name = var.hcloud_server_name image = var.hcloud_server_image location = "hel1" server_type = var.hcloud_server_type ssh_keys = [hcloud_ssh_key.default.id] user_data = file("${path.module}/cloud-init.yml") } resource "hcloud_firewall" "web" { name = "${var.hcloud_server_name}-firewall" rule { direction = "in" protocol = "tcp" port = "22" source_ips = ["0.0.0.0/0"] } rule { direction = "in" protocol = "tcp" port = "80" source_ips = ["0.0.0.0/0"] } rule { direction = "in" protocol = "tcp" port = "443" source_ips = ["0.0.0.0/0"] } rule { direction = "in" protocol = "tcp" port = "3000" source_ips = ["0.0.0.0/0"] } } resource "hcloud_firewall_attachment" "web" { firewall_id = hcloud_firewall.web.id server_ids = [hcloud_server.web.id] }