diff --git a/proxy/.terraform.lock.hcl b/proxy/.terraform.lock.hcl index c43767b..90a14ad 100644 --- a/proxy/.terraform.lock.hcl +++ b/proxy/.terraform.lock.hcl @@ -25,18 +25,23 @@ provider "registry.terraform.io/digitalocean/digitalocean" { ] } -provider "registry.terraform.io/timohirt/hetznerdns" { - version = "2.2.0" - constraints = "2.2.0" +provider "registry.terraform.io/hetznercloud/hcloud" { + version = "1.64.0" + constraints = "~> 1.55" hashes = [ - "h1:HyskQAglrOueur79gSCBgx9MNDOs0tz39aNYQiFgxz8=", - "zh:5bb0ab9f62be3ed92070235e507f3c290491d51391ef4edcc70df53b65a83019", - "zh:5ccdfac7284f5515ac3cff748336b77f21c64760e429e811a1eeefa8ebb86e12", - "zh:687c35665139ae37c291e99085be2e38071f6b355c4e1e8957c5a6a3bcdf9caf", - "zh:6de27f0d0d1513b3a4b7e81923b4a8506c52759bd466e2b4f8156997b0478931", - "zh:85770a9199a4c2d16ca41538d7a0f7a7bfc060678104a1faac19213e6f0a800c", - "zh:a5ff723774a9ccfb27d5766c5e6713537f74dd94496048c89c5d64dba597e59e", - "zh:bf9ab76fd37cb8aebb6868d73cbe8c08cee36fc25224cc1ef5949efa3c34b06c", - "zh:db998fe3bdcd4902e99fa470bb3f355883170cf4c711c8da0b5f1f4510f1be41", + "h1:FUkTfFrWlmv0JhsbjQvTk3zY7A2Q0LuoSs0PKEzaLpk=", + "zh:5bf7f8f429b1a8f485988d199f46295676a6cdf7d84ad11f1f4613faecfa89d5", + "zh:63b3d182474dd5afd0d5ab3f5f66228b752504436bcb2f4721bd6f1233d0f2ae", + "zh:6867da2d89d297b6760d80dde373e74df511bea72f7daccf6a944a9de4b4d4ed", + "zh:766fdcea1b03038a92414eafaa430b9ac0c57b36ce4c1573e6e291431659d528", + "zh:7f3186dfcae4028eac4f2c9c2c382b49c1fad0b63d0471b50748ee6817fbd8d2", + "zh:bb8a33b6ff9a4d3bce87628c49b08a4780e2c034762f40112058d96f5a4e52bd", + "zh:cc93751c7c90a37f180cf3e5439ed34f3154e60de5920a13d153d93954938239", + "zh:d6e2abf05a0eb8fe0544eb099960a4962db61532e7757016ccacbf0b83bcd1ae", + "zh:da9e3adedd8d33623aac4929fa8b1210f98d2931d5737c201da0dda992dd25ab", + "zh:dffc931aec4d7b0733690e115b1aabdf5c157b7d347a09a9d149ee6b7e9d8ce3", + "zh:e565dea4f28182099a271f794e3b781f069ea54976f5f05dbb79a1c2b6627459", + "zh:e79411287af28ccf6187bd418b7ea2ee217e642026392ddc8027bf3e3287fb80", + "zh:f5102d7141a04c193dffbb5cbc3f7e3588c41b87e11877d2e20d57ea5ef64123", ] } diff --git a/proxy/proxy.tf b/proxy/proxy.tf index 9897f10..0d609e1 100644 --- a/proxy/proxy.tf +++ b/proxy/proxy.tf @@ -1,11 +1,11 @@ terraform { required_providers { - hetznerdns = { - source = "timohirt/hetznerdns" - version = "2.2.0" + hcloud = { + source = "hetznercloud/hcloud" + version = "~> 1.55" } digitalocean = { - source = "digitalocean/digitalocean" + source = "digitalocean/digitalocean" version = "2.39.2" } @@ -19,10 +19,11 @@ variable "DO_TOKEN" { sensitive = true } -variable "HETZNERDNS_TOKEN" { +variable "HCLOUD_DNS_TOKEN" { type = string - nullable = false + nullable = true sensitive = true + default = null } variable "proxy_count" { @@ -48,11 +49,11 @@ provider "digitalocean" { token = var.DO_TOKEN } -provider "hetznerdns" { - apitoken = var.HETZNERDNS_TOKEN +provider "hcloud" { + token = var.HCLOUD_DNS_TOKEN } -data "hetznerdns_zone" "zone" { +data "hcloud_zone" "zone" { count = var.hetznerdns_zone != null ? 1 : 0 name = var.hetznerdns_zone } @@ -66,29 +67,29 @@ data "digitalocean_ssh_keys" "keys" { # Create a new Web Droplet in the nyc2 region resource "digitalocean_droplet" "proxy" { - count = var.proxy_count - image = "ubuntu-24-04-x64" - name = "proxy${count.index + 1}" - region = "fra1" - size = "s-1vcpu-512mb-10gb" - ssh_keys = [for k in data.digitalocean_ssh_keys.keys.ssh_keys : k.id] + count = var.proxy_count + image = "ubuntu-24-04-x64" + name = "proxy${count.index + 1}" + region = "fra1" + size = "s-1vcpu-512mb-10gb" + ssh_keys = [for k in data.digitalocean_ssh_keys.keys.ssh_keys : k.id] user_data = templatefile("user_data_proxy.tftpl", {}) } -resource "hetznerdns_record" "proxy_dns" { - count = var.proxy_count - zone_id = data.hetznerdns_zone.zone[0].id +resource "hcloud_zone_rrset" "proxy_dns" { + count = var.hetznerdns_zone != null ? var.proxy_count : 0 + zone = data.hcloud_zone.zone[0].name name = "proxy${count.index + 1}${local.subdomain}" - value = digitalocean_droplet.proxy[count.index].ipv4_address type = "A" ttl = 60 + records = [{ value = digitalocean_droplet.proxy[count.index].ipv4_address }] } -resource "hetznerdns_record" "proxy_rr_dns" { - count = var.proxy_count - zone_id = data.hetznerdns_zone.zone[0].id +resource "hcloud_zone_rrset" "proxy_rr_dns" { + count = var.hetznerdns_zone != null ? 1 : 0 + zone = data.hcloud_zone.zone[0].name name = "proxy${local.subdomain}" - value = digitalocean_droplet.proxy[count.index].ipv4_address type = "A" ttl = 60 + records = [for d in digitalocean_droplet.proxy : { value = d.ipv4_address }] } diff --git a/proxy/terraform.tfvars.sample b/proxy/terraform.tfvars.sample index 7a04848..97092f0 100644 --- a/proxy/terraform.tfvars.sample +++ b/proxy/terraform.tfvars.sample @@ -1,2 +1,2 @@ -hetznerdns_zone = "bambi.ovh" -subdomain = "prod" +hetznerdns_zone = "bambi.ovh" +subdomain = "prod" diff --git a/terraform/.terraform.lock.hcl b/terraform/.terraform.lock.hcl index 8d9c4ea..6df2fce 100644 --- a/terraform/.terraform.lock.hcl +++ b/terraform/.terraform.lock.hcl @@ -2,39 +2,22 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hetznercloud/hcloud" { - version = "1.35.2" - constraints = "1.35.2" + version = "1.64.0" + constraints = "~> 1.55" hashes = [ - "h1:a/DH+2jHvgikSDajup5feRZRUwNw8OT9NBPKezjgM5g=", - "zh:1a7cb8f9cbd51b62bdbb4f36cdb070dd99059d86115c4777193e0f8536798d4d", - "zh:29c104aae7f7a4e1a4aea32febc9caa2d7d86589cd9d01d5b93dbe2cb0a73220", - "zh:29f082195d8f4e4cfb4050fae2ed62ed5616659c6dfaa7b5f1eb42d94d130864", - "zh:3cfe3876763659e27696adcb945e6da2dc2ec014ff8a2e8f0f3e610e3bfd9b73", - "zh:3d967f4b1aef78ffce389dd32cdea4b558ef826cec96ceb4bdafde4bb4a9b655", - "zh:3e160f581f7912c2053f86d6d8a3e3470fcf1fe8228b59ac216a7e40a1dd444c", - "zh:5138022c8b4c8a572e8097749241d929a96d3522e67ce25f86bb9fd51c4b343c", - "zh:5783febc4d8ac4b7fdb49607cab92ad13509d87ad4ca1999067ac3d20e815d12", - "zh:7f8ce9268d48beb5fa0103a8510d4fe644aaac6cd328fc4441dd37e8bdbfadab", - "zh:8ab6aea82657fd6f97d79b41e6cd129a33a47ce727a7d0b52205590fa3785ce1", - "zh:9e4bebe3bbee7875dc2e3ceca3cf0fec3254a8b481c7b96ba9a5d65647ea9092", - "zh:af2a912db9a6fce844ac8c0e695a5d92a5625f2df126129940051a6b1021443d", - "zh:bfe86d80e55f44a99dbbdca9d1caf0c837fe21d91e78674ee36263b7de71fd38", - "zh:d9538a361bd8979c4a87273a82fc5dec7110f3aa7ec69fffb8c70fe8937bc1f4", - ] -} - -provider "registry.terraform.io/timohirt/hetznerdns" { - version = "2.2.0" - constraints = "2.2.0" - hashes = [ - "h1:HyskQAglrOueur79gSCBgx9MNDOs0tz39aNYQiFgxz8=", - "zh:5bb0ab9f62be3ed92070235e507f3c290491d51391ef4edcc70df53b65a83019", - "zh:5ccdfac7284f5515ac3cff748336b77f21c64760e429e811a1eeefa8ebb86e12", - "zh:687c35665139ae37c291e99085be2e38071f6b355c4e1e8957c5a6a3bcdf9caf", - "zh:6de27f0d0d1513b3a4b7e81923b4a8506c52759bd466e2b4f8156997b0478931", - "zh:85770a9199a4c2d16ca41538d7a0f7a7bfc060678104a1faac19213e6f0a800c", - "zh:a5ff723774a9ccfb27d5766c5e6713537f74dd94496048c89c5d64dba597e59e", - "zh:bf9ab76fd37cb8aebb6868d73cbe8c08cee36fc25224cc1ef5949efa3c34b06c", - "zh:db998fe3bdcd4902e99fa470bb3f355883170cf4c711c8da0b5f1f4510f1be41", + "h1:FUkTfFrWlmv0JhsbjQvTk3zY7A2Q0LuoSs0PKEzaLpk=", + "zh:5bf7f8f429b1a8f485988d199f46295676a6cdf7d84ad11f1f4613faecfa89d5", + "zh:63b3d182474dd5afd0d5ab3f5f66228b752504436bcb2f4721bd6f1233d0f2ae", + "zh:6867da2d89d297b6760d80dde373e74df511bea72f7daccf6a944a9de4b4d4ed", + "zh:766fdcea1b03038a92414eafaa430b9ac0c57b36ce4c1573e6e291431659d528", + "zh:7f3186dfcae4028eac4f2c9c2c382b49c1fad0b63d0471b50748ee6817fbd8d2", + "zh:bb8a33b6ff9a4d3bce87628c49b08a4780e2c034762f40112058d96f5a4e52bd", + "zh:cc93751c7c90a37f180cf3e5439ed34f3154e60de5920a13d153d93954938239", + "zh:d6e2abf05a0eb8fe0544eb099960a4962db61532e7757016ccacbf0b83bcd1ae", + "zh:da9e3adedd8d33623aac4929fa8b1210f98d2931d5737c201da0dda992dd25ab", + "zh:dffc931aec4d7b0733690e115b1aabdf5c157b7d347a09a9d149ee6b7e9d8ce3", + "zh:e565dea4f28182099a271f794e3b781f069ea54976f5f05dbb79a1c2b6627459", + "zh:e79411287af28ccf6187bd418b7ea2ee217e642026392ddc8027bf3e3287fb80", + "zh:f5102d7141a04c193dffbb5cbc3f7e3588c41b87e11877d2e20d57ea5ef64123", ] } diff --git a/terraform/bambi.tf b/terraform/bambi.tf index 25c2abd..1f20f71 100644 --- a/terraform/bambi.tf +++ b/terraform/bambi.tf @@ -1,12 +1,9 @@ terraform { required_providers { - hetznerdns = { - source = "timohirt/hetznerdns" - version = "2.2.0" - } hcloud = { - source = "hetznercloud/hcloud" - version = "1.35.2" + source = "hetznercloud/hcloud" + version = "~> 1.55" + configuration_aliases = [hcloud.dns] } } required_version = ">= 1.0" @@ -18,9 +15,10 @@ variable "HCLOUD_TOKEN" { sensitive = true } -variable "HETZNERDNS_TOKEN" { +variable "HCLOUD_DNS_TOKEN" { type = string sensitive = true + default = null } variable "home_location" { @@ -47,13 +45,15 @@ provider "hcloud" { token = var.HCLOUD_TOKEN } -provider "hetznerdns" { - apitoken = var.HETZNERDNS_TOKEN +provider "hcloud" { + alias = "dns" + token = coalesce(var.HCLOUD_DNS_TOKEN, var.HCLOUD_TOKEN) } -data "hetznerdns_zone" "zone" { - count = var.hetznerdns_zone != null ? 1 : 0 - name = var.hetznerdns_zone +data "hcloud_zone" "zone" { + provider = hcloud.dns + count = var.hetznerdns_zone != null ? 1 : 0 + name = var.hetznerdns_zone } data "hcloud_ssh_keys" "all_keys" { diff --git a/terraform/bambichecker.tf b/terraform/bambichecker.tf index ebc8737..8c8bec9 100644 --- a/terraform/bambichecker.tf +++ b/terraform/bambichecker.tf @@ -16,13 +16,14 @@ data "hcloud_image" "bambichecker" { most_recent = true } -resource "hetznerdns_record" "bambchecker_dns" { - count = var.hetznerdns_zone != null ? var.checker_count : 0 - zone_id = data.hetznerdns_zone.zone[0].id - name = "checker${count.index + 1}${local.subdomain}" - value = hcloud_server.bambichecker[count.index].ipv4_address - type = "A" - ttl = 60 +resource "hcloud_zone_rrset" "bambchecker_dns" { + provider = hcloud.dns + count = var.hetznerdns_zone != null ? var.checker_count : 0 + zone = data.hcloud_zone.zone[0].name + name = "checker${count.index + 1}${local.subdomain}" + type = "A" + ttl = 60 + records = [{ value = hcloud_server.bambichecker[count.index].ipv4_address }] } resource "hcloud_server" "bambichecker" { diff --git a/terraform/bambielk.tf b/terraform/bambielk.tf index a272fee..3a545ae 100644 --- a/terraform/bambielk.tf +++ b/terraform/bambielk.tf @@ -33,13 +33,14 @@ resource "hcloud_floating_ip_assignment" "bambielk_ipa" { server_id = hcloud_server.bambielk[0].id } -resource "hetznerdns_record" "bambielk_dns" { - count = var.hetznerdns_zone != null ? var.elk_count : 0 - zone_id = data.hetznerdns_zone.zone[0].id - name = "elk${local.subdomain}" - value = hcloud_server.bambielk[0].ipv4_address - type = "A" - ttl = 60 +resource "hcloud_zone_rrset" "bambielk_dns" { + provider = hcloud.dns + count = var.hetznerdns_zone != null ? var.elk_count : 0 + zone = data.hcloud_zone.zone[0].name + name = "elk${local.subdomain}" + type = "A" + ttl = 60 + records = [{ value = hcloud_server.bambielk[0].ipv4_address }] } resource "hcloud_server" "bambielk" { diff --git a/terraform/bambiengine.tf b/terraform/bambiengine.tf index c26dee6..90eb2f3 100644 --- a/terraform/bambiengine.tf +++ b/terraform/bambiengine.tf @@ -33,13 +33,14 @@ resource "hcloud_floating_ip_assignment" "bambiengine_ipa" { server_id = hcloud_server.bambiengine[0].id } -resource "hetznerdns_record" "bambiengine_dns" { - count = var.hetznerdns_zone != null ? var.engine_count : 0 - zone_id = data.hetznerdns_zone.zone[0].id - name = "engine${local.subdomain}" - value = hcloud_floating_ip.bambiengine_ip.ip_address - type = "A" - ttl = 60 +resource "hcloud_zone_rrset" "bambiengine_dns" { + provider = hcloud.dns + count = var.hetznerdns_zone != null ? var.engine_count : 0 + zone = data.hcloud_zone.zone[0].name + name = "engine${local.subdomain}" + type = "A" + ttl = 60 + records = [{ value = hcloud_floating_ip.bambiengine_ip.ip_address }] } resource "hcloud_server" "bambiengine" { diff --git a/terraform/bambirouter.tf b/terraform/bambirouter.tf index 1def14a..fa58041 100644 --- a/terraform/bambirouter.tf +++ b/terraform/bambirouter.tf @@ -33,13 +33,14 @@ resource "hcloud_floating_ip_assignment" "bambirouter_ipa" { server_id = hcloud_server.bambirouter[count.index].id } -resource "hetznerdns_record" "bambirouter_dns" { - count = var.hetznerdns_zone != null ? var.router_count : 0 - zone_id = data.hetznerdns_zone.zone[0].id - name = "router${count.index + 1}${local.subdomain}" - value = hcloud_floating_ip.bambirouter_ip[count.index].ip_address - type = "A" - ttl = 60 +resource "hcloud_zone_rrset" "bambirouter_dns" { + provider = hcloud.dns + count = var.hetznerdns_zone != null ? var.router_count : 0 + zone = data.hcloud_zone.zone[0].name + name = "router${count.index + 1}${local.subdomain}" + type = "A" + ttl = 60 + records = [{ value = hcloud_floating_ip.bambirouter_ip[count.index].ip_address }] } resource "hcloud_server" "bambirouter" { diff --git a/terraform/bambivulnbox.tf b/terraform/bambivulnbox.tf index 774c515..22d9cf3 100644 --- a/terraform/bambivulnbox.tf +++ b/terraform/bambivulnbox.tf @@ -16,13 +16,14 @@ data "hcloud_image" "bambivulnbox" { most_recent = true } -resource "hetznerdns_record" "bambivulnbox_dns" { - count = var.hetznerdns_zone != null ? var.vulnbox_count : 0 - zone_id = data.hetznerdns_zone.zone[0].id - name = "team${count.index + 1}${local.subdomain}" - value = hcloud_server.bambivulnbox[count.index].ipv4_address - type = "A" - ttl = 60 +resource "hcloud_zone_rrset" "bambivulnbox_dns" { + provider = hcloud.dns + count = var.hetznerdns_zone != null ? var.vulnbox_count : 0 + zone = data.hcloud_zone.zone[0].name + name = "team${count.index + 1}${local.subdomain}" + type = "A" + ttl = 60 + records = [{ value = hcloud_server.bambivulnbox[count.index].ipv4_address }] } resource "hcloud_server" "bambivulnbox" {