diff --git a/main.tf b/main.tf index 5af648c..e893ff1 100644 --- a/main.tf +++ b/main.tf @@ -1,95 +1,3 @@ -# -# Variables -# - -variable "hcloud_token" { - description = "Hetzner Cloud token" - type = string - sensitive = true -} - -variable "ssh_fingerprint" { - description = "SSH key fingerprint" - type = string - sensitive = true -} - -variable "ssh_pub_key" { - description = "SSH public key" - type = string - sensitive = true -} - -variable "passwd" { - description = "Password for the user" - type = string - sensitive = true -} - - -# -# Provider -# - -terraform { - required_providers { - hcloud = { - source = "hetznercloud/hcloud" - } - } -} - -# Define Hetzner provider token -provider "hcloud" { - token = var.hcloud_token -} - -# Obtain ssh key data -data "hcloud_ssh_key" "ssh_key" { - fingerprint = var.ssh_fingerprint -} - - -# -# Create the staging server -# - -resource "hcloud_server" "staging" { - name = "staging" - image = "debian-11" - server_type = "cx11" - location = "nbg1" - ssh_keys = ["${data.hcloud_ssh_key.ssh_key.id}"] - user_data = templatefile("user_data.yml.tpl", { - ssh_pub_key = var.ssh_pub_key - passwd = var.passwd - fqdn = "staging.forgejo.dev" - }) -} - -# Set RDNS entry of staging server IPv4 -resource "hcloud_rdns" "staging-rdns-v4" { - server_id = hcloud_server.staging.id - ip_address = hcloud_server.staging.ipv4_address - dns_ptr = "staging.forgejo.dev" -} - -# Set RDNS entry of staging server IPv6 -resource "hcloud_rdns" "staging-rdns-v6" { - server_id = hcloud_server.staging.id - ip_address = hcloud_server.staging.ipv6_address - dns_ptr = "staging.forgejo.dev" -} - -# Output Server Public IP address -output "server_ipv4_staging" { - value = "${hcloud_server.staging.ipv4_address}" -} -output "server_ipv6_staging" { - value = "${hcloud_server.staging.ipv6_address}" -} - - # # Create the production server # @@ -130,43 +38,3 @@ output "server_ipv4_production" { output "server_ipv6_production" { value = "${hcloud_server.production.ipv6_address}" } - - -## -## Create the s3 migration server -## -# -#resource "hcloud_server" "s3-migration" { -# name = "s3-migration" -# image = "debian-11" -# server_type = "cx11" -# location = "nbg1" -# ssh_keys = ["${data.hcloud_ssh_key.ssh_key.id}"] -# user_data = templatefile("user_data.yml.tpl", { -# ssh_pub_key = var.ssh_pub_key -# passwd = var.passwd -# fqdn = "s3-mig.forgejo.dev" -# }) -#} -# -## Set RDNS entry of s3 migration server IPv4 -#resource "hcloud_rdns" "s3-migration-rdns-v4" { -# server_id = hcloud_server.s3-migration.id -# ip_address = hcloud_server.s3-migration.ipv4_address -# dns_ptr = "s3-mig.forgejo.dev" -#} -# -## Set RDNS entry of s3 migration server IPv6 -#resource "hcloud_rdns" "s3-migration-rdns-v6" { -# server_id = hcloud_server.s3-migration.id -# ip_address = hcloud_server.s3-migration.ipv6_address -# dns_ptr = "s3-mig.forgejo.dev" -#} -# -## Output Server Public IP address -#output "server_ipv4_s3-migration" { -# value = "${hcloud_server.s3-migration.ipv4_address}" -#} -#output "server_ipv6_s3-migration" { -# value = "${hcloud_server.s3-migration.ipv6_address}" -#} diff --git a/s3-mig.tf b/s3-mig.tf new file mode 100644 index 0000000..ab254de --- /dev/null +++ b/s3-mig.tf @@ -0,0 +1,38 @@ +## +## Create the s3 migration server +## +# +#resource "hcloud_server" "s3-migration" { +# name = "s3-migration" +# image = "debian-11" +# server_type = "cx11" +# location = "nbg1" +# ssh_keys = ["${data.hcloud_ssh_key.ssh_key.id}"] +# user_data = templatefile("user_data.yml.tpl", { +# ssh_pub_key = var.ssh_pub_key +# passwd = var.passwd +# fqdn = "s3-mig.forgejo.dev" +# }) +#} +# +## Set RDNS entry of s3 migration server IPv4 +#resource "hcloud_rdns" "s3-migration-rdns-v4" { +# server_id = hcloud_server.s3-migration.id +# ip_address = hcloud_server.s3-migration.ipv4_address +# dns_ptr = "s3-mig.forgejo.dev" +#} +# +## Set RDNS entry of s3 migration server IPv6 +#resource "hcloud_rdns" "s3-migration-rdns-v6" { +# server_id = hcloud_server.s3-migration.id +# ip_address = hcloud_server.s3-migration.ipv6_address +# dns_ptr = "s3-mig.forgejo.dev" +#} +# +## Output Server Public IP address +#output "server_ipv4_s3-migration" { +# value = "${hcloud_server.s3-migration.ipv4_address}" +#} +#output "server_ipv6_s3-migration" { +# value = "${hcloud_server.s3-migration.ipv6_address}" +#} diff --git a/staging.tf b/staging.tf new file mode 100644 index 0000000..7bd2b30 --- /dev/null +++ b/staging.tf @@ -0,0 +1,38 @@ +# +# Create the staging server +# + +resource "hcloud_server" "staging" { + name = "staging" + image = "debian-11" + server_type = "cx11" + location = "nbg1" + ssh_keys = ["${data.hcloud_ssh_key.ssh_key.id}"] + user_data = templatefile("user_data.yml.tpl", { + ssh_pub_key = var.ssh_pub_key + passwd = var.passwd + fqdn = "staging.forgejo.dev" + }) +} + +# Set RDNS entry of staging server IPv4 +resource "hcloud_rdns" "staging-rdns-v4" { + server_id = hcloud_server.staging.id + ip_address = hcloud_server.staging.ipv4_address + dns_ptr = "staging.forgejo.dev" +} + +# Set RDNS entry of staging server IPv6 +resource "hcloud_rdns" "staging-rdns-v6" { + server_id = hcloud_server.staging.id + ip_address = hcloud_server.staging.ipv6_address + dns_ptr = "staging.forgejo.dev" +} + +# Output Server Public IP address +output "server_ipv4_staging" { + value = "${hcloud_server.staging.ipv4_address}" +} +output "server_ipv6_staging" { + value = "${hcloud_server.staging.ipv6_address}" +} diff --git a/utils.tf b/utils.tf new file mode 100644 index 0000000..6bb269c --- /dev/null +++ b/utils.tf @@ -0,0 +1,50 @@ +# +# Variables +# + +variable "hcloud_token" { + description = "Hetzner Cloud token" + type = string + sensitive = true +} + +variable "ssh_fingerprint" { + description = "SSH key fingerprint" + type = string + sensitive = true +} + +variable "ssh_pub_key" { + description = "SSH public key" + type = string + sensitive = true +} + +variable "passwd" { + description = "Password for the user" + type = string + sensitive = true +} + + +# +# Provider +# + +terraform { + required_providers { + hcloud = { + source = "hetznercloud/hcloud" + } + } +} + +# Define Hetzner provider token +provider "hcloud" { + token = var.hcloud_token +} + +# Obtain ssh key data +data "hcloud_ssh_key" "ssh_key" { + fingerprint = var.ssh_fingerprint +}