feat: add servers module

Signed-off-by: Lander Van den Bulcke <landervandenbulcke@gmail.com>
This commit is contained in:
Lander Van den Bulcke 2025-01-13 15:29:50 +01:00
parent 1fffa79b9d
commit b9f3259f6a
Signed by: lander
GPG key ID: 0142722B4B0C536F
7 changed files with 151 additions and 0 deletions

65
.terraform.lock.hcl generated
View file

@ -22,3 +22,68 @@ provider "registry.opentofu.org/cloudflare/cloudflare" {
"zh:f809ab383cca0a5f83072981c64208cbd7fa67e986a86ee02dd2c82333221e32", "zh:f809ab383cca0a5f83072981c64208cbd7fa67e986a86ee02dd2c82333221e32",
] ]
} }
provider "registry.opentofu.org/hashicorp/cloudflare" {
version = "4.50.0"
hashes = [
"h1:0qvD5ZKn2tMZ8cOjQrUSITIC9tKCZbrSaSswV9lOyiU=",
"zh:0ef99ed39472a94e6a0d6fa733cf0a46bce3bf66eba2873efae8846efdddc237",
"zh:2929cbbffcead171d45c88e4a7a59e9c013ea775dafa68b10da8db7cd04b6140",
"zh:462601c87118088e1a718842e367af7d8e7620598d426980a6d6b33de759865e",
"zh:56766eb62a74a9d88d9efb8486dd3a0c5c9db873d0a980ae9ef1e8af27d74231",
"zh:6b4e8810d99498a5a20a5872982a0f1354e79cfc4a7dfe7cc656f1c7eaae47d8",
"zh:6d65bdb4ec94b6eecc8abe26d94e2ca09262dc1e7a9934db829f418be0119920",
"zh:71adeaf31e41a358ec6095004062e43f56ee7d4b2504e5613ab351d511695641",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
"zh:89761c15908ccc2cf9c50bb5cb3be45d3ad0c45fc7c608c6b95f48c0288b7160",
"zh:8cc5d7c5939da89cfd01f3e51c84f3576564783acea9db86bd9e32049805ed96",
"zh:987cff8225b1dd436cdcb4fc6228689ae7e4281de6896412a2a9a3325c49f05e",
"zh:991e83ebb89867d71e01a1c215ed159efb425683b0a44707be8579eb0a337f06",
"zh:ab8177ae2d8f5cfa90043a6f867435012cae115f6061b832a7e2462e0ae87a67",
"zh:d1ca34df1398f201274a6a18102975148c10ca15aa43cfc56cc9897620929509",
"zh:d34946f70201baf6dda03e3b294c6bbe40d95d0278e97b9f636ded94822b24ac",
]
}
provider "registry.opentofu.org/hashicorp/hcloud" {
version = "1.49.1"
hashes = [
"h1:FKGRNHVbcfQJd8EWrb8Ze5QHkaGr8zI+ZKxBMjvOwPk=",
"zh:3d5f9773da4f8203cf625d04a5a0e4ff7e202684c010a801a945756140c61cde",
"zh:446305d492017cda91e5c15122ec16ff15bfe3ef4d3fd6bcea0cdf7742ab1b86",
"zh:44d4f9156ed8b4f0444bd4dc456825940be49048828565964a192286d28c9f20",
"zh:492ad893d2f89bb17c9beb877c8ceb4a16caf39db1a79030fefeada6c7aa217f",
"zh:68dc552c19ad9d209ec6018445df6e06fb77a637513a53cc66ddce1b024082be",
"zh:7492495ffda6f6c49ab38b539bd2eb965b1150a63fb6b191a27dec07d17601cb",
"zh:850fe92005981ea00db86c3e49ba5b49732fdf1f7bd5530a68f6e272847059fc",
"zh:8cb67f744c233acfb1d68a6c27686315439d944edf733b95f113b4aa63d86713",
"zh:8e13dac46e8c2497772ed1baee701b1d1c26bcc95a63b5c4566c83468f504868",
"zh:c44249c6a8ba931e208a334792686b5355ab2da465cadea03c1ea8e73c02db12",
"zh:d103125a28a85c89aea0cb0c534fe3f504416c4d4fc75c37364b9ec5f66dd77d",
"zh:ed8f64e826aa9bfca95b72892271678cb78411b40d7b404a52404141e05a4ab1",
"zh:f40efad816de00b279bd1e2cbf62c76b0e5b2da150a0764f259984b318e30945",
"zh:f5e912d0873bf4ecc43feba4ceccdf158048080c76d557e47f34749139fdd452",
]
}
provider "registry.opentofu.org/opentofu/hcloud" {
version = "1.49.1"
constraints = "~> 1.49.1"
hashes = [
"h1:FKGRNHVbcfQJd8EWrb8Ze5QHkaGr8zI+ZKxBMjvOwPk=",
"zh:3d5f9773da4f8203cf625d04a5a0e4ff7e202684c010a801a945756140c61cde",
"zh:446305d492017cda91e5c15122ec16ff15bfe3ef4d3fd6bcea0cdf7742ab1b86",
"zh:44d4f9156ed8b4f0444bd4dc456825940be49048828565964a192286d28c9f20",
"zh:492ad893d2f89bb17c9beb877c8ceb4a16caf39db1a79030fefeada6c7aa217f",
"zh:68dc552c19ad9d209ec6018445df6e06fb77a637513a53cc66ddce1b024082be",
"zh:7492495ffda6f6c49ab38b539bd2eb965b1150a63fb6b191a27dec07d17601cb",
"zh:850fe92005981ea00db86c3e49ba5b49732fdf1f7bd5530a68f6e272847059fc",
"zh:8cb67f744c233acfb1d68a6c27686315439d944edf733b95f113b4aa63d86713",
"zh:8e13dac46e8c2497772ed1baee701b1d1c26bcc95a63b5c4566c83468f504868",
"zh:c44249c6a8ba931e208a334792686b5355ab2da465cadea03c1ea8e73c02db12",
"zh:d103125a28a85c89aea0cb0c534fe3f504416c4d4fc75c37364b9ec5f66dd77d",
"zh:ed8f64e826aa9bfca95b72892271678cb78411b40d7b404a52404141e05a4ab1",
"zh:f40efad816de00b279bd1e2cbf62c76b0e5b2da150a0764f259984b318e30945",
"zh:f5e912d0873bf4ecc43feba4ceccdf158048080c76d557e47f34749139fdd452",
]
}

37
modules/server/main.tf Normal file
View file

@ -0,0 +1,37 @@
resource "hcloud_server" "server" {
name = var.hostname
image = "debian-12"
server_type = var.type
location = var.location
ssh_keys = ["cardno:22_498_026"]
public_net {
ipv4_enabled = true
ipv6_enabled = true
}
}
data "cloudflare_zone" "zone" {
filter = {
name = var.dns_zone
}
}
resource "cloudflare_dns_record" "a" {
zone_id = data.cloudflare_zone.zone.id
name = "${var.hostname}.${var.dns_zone}"
content = hcloud_server.server.ipv4_address
type = "A"
ttl = "1"
}
resource "cloudflare_dns_record" "aaaa" {
zone_id = data.cloudflare_zone.zone.id
name = "${var.hostname}.${var.dns_zone}"
content = hcloud_server.server.ipv6_address
type = "AAAA"
ttl = "1"
}

View file

@ -0,0 +1,7 @@
output "ipv4_address" {
value = hcloud_server.server.ipv4_address
}
output "ipv6_address" {
value = hcloud_server.server.ipv6_address
}

View file

@ -0,0 +1,12 @@
terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "5.0.0-rc1"
}
hcloud = {
source = "opentofu/hcloud"
version = "~> 1.49.1"
}
}
}

View file

@ -0,0 +1,22 @@
variable "hostname" {
type = string
description = "The hostname for the server"
}
variable "location" {
type = string
description = "The datacenter location for the server"
default = "nbg1"
}
variable "type" {
type = string
description = "The server type"
default = "cax11"
}
variable "dns_zone" {
type = string
description = "The Cloudflare DNS zone"
default = "escapeangle.com"
}

View file

@ -18,7 +18,13 @@ terraform {
source = "cloudflare/cloudflare" source = "cloudflare/cloudflare"
version = "5.0.0-rc1" version = "5.0.0-rc1"
} }
hcloud = {
source = "opentofu/hcloud"
version = "~> 1.49.1"
}
} }
} }
provider "cloudflare" {} provider "cloudflare" {}
provider "hcloud" {}

2
servers.tf Normal file
View file

@ -0,0 +1,2 @@