From 60b159d2c8691514e91c3570bc7a39982676f863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20T=C3=B6lle?= Date: Wed, 30 Mar 2022 19:46:33 +0200 Subject: [PATCH] feat: add terraria server --- gameservers.tf | 38 +++++++++++++++++++++++++ gameservers/docker-compose.terraria.yml | 11 +++++++ provider_hcloud.tf | 6 +++- 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 gameservers/docker-compose.terraria.yml diff --git a/gameservers.tf b/gameservers.tf index e8553b3..c5bfb6a 100644 --- a/gameservers.tf +++ b/gameservers.tf @@ -16,3 +16,41 @@ resource "hcloud_volume_attachment" "minecraft_data" { volume_id = hcloud_volume.minecraft_data.id server_id = hcloud_server.minecraft.id } + +## Terraria + +resource "hcloud_server" "terraria" { + name = "terraria" + image = "ubuntu-20.04" + server_type = "cx21" + location = "nbg1" + ssh_keys = [data.hcloud_ssh_key.default.id] + + provisioner "file" { + content = templatefile("./gameservers/docker-compose.terraria.yml", { + image = "ryshe/terraria" + image_tag = "tshock-1.4.3.6-4.5.17-2" + volume_id = hcloud_volume.terraria_data.id + world_name = "TheDriftingMoon" + }) + destination = "/terraria/docker-compose.yml" + + connection { + type = "ssh" + host = self.ipv4_address + } + } +} + +resource "hcloud_volume" "terraria_data" { + name = "terraria-data" + size = 20 + location = "nbg1" + format = "ext4" +} + +resource "hcloud_volume_attachment" "terraria_data" { + volume_id = hcloud_volume.terraria_data.id + server_id = hcloud_server.terraria.id + automount = true +} diff --git a/gameservers/docker-compose.terraria.yml b/gameservers/docker-compose.terraria.yml new file mode 100644 index 0000000..14b6035 --- /dev/null +++ b/gameservers/docker-compose.terraria.yml @@ -0,0 +1,11 @@ +version: "3.8" + +services: + tshock: + image: ${image}:${image_tag} + ports: + - 7777:7777 + volumes: + - /mnt/HC_VOLUME_${volume_id}/Terraria/Worlds/:/root/.local/share/Terraria/Worlds/ + environment: + WORLD_FILENAME: ${world_name}.wld diff --git a/provider_hcloud.tf b/provider_hcloud.tf index e761ceb..b667d92 100755 --- a/provider_hcloud.tf +++ b/provider_hcloud.tf @@ -3,6 +3,10 @@ variable "hcloud_token" {} # Configure the Hetzner Cloud Provider -provider hcloud { +provider "hcloud" { token = var.hcloud_token } + +data "hcloud_ssh_key" "default" { + name = "default" +}