feat: add servers module
Signed-off-by: Lander Van den Bulcke <landervandenbulcke@gmail.com>
This commit is contained in:
parent
1fffa79b9d
commit
b9f3259f6a
7 changed files with 151 additions and 0 deletions
65
.terraform.lock.hcl
generated
65
.terraform.lock.hcl
generated
|
|
@ -22,3 +22,68 @@ provider "registry.opentofu.org/cloudflare/cloudflare" {
|
|||
"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
37
modules/server/main.tf
Normal 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"
|
||||
}
|
||||
7
modules/server/outputs.tf
Normal file
7
modules/server/outputs.tf
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
output "ipv4_address" {
|
||||
value = hcloud_server.server.ipv4_address
|
||||
}
|
||||
|
||||
output "ipv6_address" {
|
||||
value = hcloud_server.server.ipv6_address
|
||||
}
|
||||
12
modules/server/providers.tf
Normal file
12
modules/server/providers.tf
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
22
modules/server/variables.tf
Normal file
22
modules/server/variables.tf
Normal 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"
|
||||
}
|
||||
|
|
@ -18,7 +18,13 @@ terraform {
|
|||
source = "cloudflare/cloudflare"
|
||||
version = "5.0.0-rc1"
|
||||
}
|
||||
hcloud = {
|
||||
source = "opentofu/hcloud"
|
||||
version = "~> 1.49.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "cloudflare" {}
|
||||
|
||||
provider "hcloud" {}
|
||||
|
|
|
|||
2
servers.tf
Normal file
2
servers.tf
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue