❄️ Dotfiles and NixOS configurations
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: switch to hcloud dns

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>

+391 -221
+17 -12
.terraform.lock.hcl
··· 1 1 # This file is maintained automatically by "tofu init". 2 2 # Manual edits may be lost in future updates. 3 3 4 - provider "registry.opentofu.org/timohirt/hetznerdns" { 5 - version = "2.2.0" 6 - constraints = "~> 2.2.0" 4 + provider "registry.opentofu.org/hetznercloud/hcloud" { 5 + version = "1.57.0" 6 + constraints = "1.57.0" 7 7 hashes = [ 8 - "h1:HyskQAglrOueur79gSCBgx9MNDOs0tz39aNYQiFgxz8=", 9 - "zh:5bb0ab9f62be3ed92070235e507f3c290491d51391ef4edcc70df53b65a83019", 10 - "zh:5ccdfac7284f5515ac3cff748336b77f21c64760e429e811a1eeefa8ebb86e12", 11 - "zh:687c35665139ae37c291e99085be2e38071f6b355c4e1e8957c5a6a3bcdf9caf", 12 - "zh:6de27f0d0d1513b3a4b7e81923b4a8506c52759bd466e2b4f8156997b0478931", 13 - "zh:85770a9199a4c2d16ca41538d7a0f7a7bfc060678104a1faac19213e6f0a800c", 14 - "zh:a5ff723774a9ccfb27d5766c5e6713537f74dd94496048c89c5d64dba597e59e", 15 - "zh:bf9ab76fd37cb8aebb6868d73cbe8c08cee36fc25224cc1ef5949efa3c34b06c", 16 - "zh:db998fe3bdcd4902e99fa470bb3f355883170cf4c711c8da0b5f1f4510f1be41", 8 + "h1:Xk+Whn6wnhEJEeiO/mPII/mOL+buHLj05AKy4TbDz3U=", 9 + "zh:016ecc39328f34f6c0ffa413598f354824f7878c89cd031f123edb4bc8a687a2", 10 + "zh:10b362dc0847200c987214b129b5f85e2f7d8ad417261a1d2dd04ab74de15603", 11 + "zh:194647d9a61dca4f411f44580316b88a11095d7a99679d445f9b0f2c1ba976c4", 12 + "zh:1d8aafe2ce7890696385bb3a0c3286e7ee3020416d337f59935406e4c6f91de6", 13 + "zh:594585616210fb232fad4ebda2387ecd3f483931e00eff988fca83add6ce7cfc", 14 + "zh:65e50be33ffb85580546f119839e1293591cc6d4db729d809931d0408b6ae408", 15 + "zh:7d4ed5bd8c477ec304142e2160203a76a0d09c93d224950bda253172b2571038", 16 + "zh:90a70a70a266b78c8216903e711904e6969b3957d182602b5d788602ec9ef323", 17 + "zh:abb8e28e96fb8de270995873de980896b7cb53cfc550f02c50eaa42884624ba9", 18 + "zh:bbf34dca2de6e105ca7204222162a0402d8e9e9a28e1de5ffbaa2c0d6270a059", 19 + "zh:c1a9edb693d632dcb5c3c9ee84c97138e08eadb9354e28592efd581f68ac0385", 20 + "zh:dadbf1368fae314fe8dcb99ebefbc78409f3fc0e3808cd92ea573b8eee1cae98", 21 + "zh:e713e00ca27348abd18da2eeff861905e84050e3e7e008f14a0c63c70ab2ff84", 17 22 ] 18 23 }
+41 -23
duckhub_io.tf
··· 1 - resource "hetznerdns_zone" "duckhub_io" { 1 + data "hcloud_zone" "duckhub_io" { 2 2 name = "duckhub.io" 3 - ttl = 86400 4 3 } 5 4 6 - resource "hetznerdns_record" "root4_duckhub_io" { 7 - zone_id = hetznerdns_zone.duckhub_io.id 8 - name = "@" 9 - value = var.universe4 10 - type = "A" 11 - ttl = 3600 5 + resource "hcloud_zone_rrset" "root4_duckhub_io" { 6 + zone = data.hcloud_zone.duckhub_io.name 7 + name = "@" 8 + type = "A" 9 + 10 + records = [ 11 + { 12 + value = var.universe4 13 + comment = "universe" 14 + } 15 + ] 16 + 17 + ttl = 3600 12 18 } 13 19 14 - resource "hetznerdns_record" "root6_duckhub_io" { 15 - zone_id = hetznerdns_zone.duckhub_io.id 16 - name = "@" 17 - value = var.universe6 18 - type = "AAAA" 19 - ttl = 3600 20 + resource "hcloud_zone_rrset" "root6_duckhub_io" { 21 + zone = data.hcloud_zone.duckhub_io.name 22 + name = "@" 23 + type = "AAAA" 24 + 25 + records = [ 26 + { 27 + value = var.universe6 28 + comment = "universe" 29 + } 30 + ] 31 + 32 + ttl = 3600 20 33 } 21 34 22 - resource "hetznerdns_record" "rootcaa_duckhub_io" { 23 - for_each = toset(var.caa_records) 24 - zone_id = hetznerdns_zone.duckhub_io.id 25 - name = "@" 26 - value = each.key 27 - type = "CAA" 35 + resource "hcloud_zone_rrset" "rootcaa_duckhub_io" { 36 + zone = data.hcloud_zone.duckhub_io.name 37 + name = "@" 38 + type = "CAA" 39 + 40 + records = [for v in var.caa_records : { value = v }] 28 41 } 29 42 30 - resource "hetznerdns_record" "cnames_duckhub_io" { 43 + resource "hcloud_zone_rrset" "cnames_duckhub_io" { 31 44 for_each = toset(["quack"]) 32 - zone_id = hetznerdns_zone.duckhub_io.id 45 + zone = data.hcloud_zone.duckhub_io.name 33 46 name = each.key 34 - value = "${hetznerdns_zone.duckhub_io.name}." 35 47 type = "CNAME" 48 + 49 + records = [ 50 + { 51 + value = "${data.hcloud_zone.duckhub_io.name}." 52 + } 53 + ] 36 54 }
+33 -20
honeyarcus_art.tf
··· 1 - resource "hetznerdns_zone" "honeyarcus_art" { 1 + data "hcloud_zone" "honeyarcus_art" { 2 2 name = "honeyarcus.art" 3 - ttl = 86400 4 3 } 5 4 6 - resource "hetznerdns_record" "root4_honeyarcus_art" { 7 - zone_id = hetznerdns_zone.honeyarcus_art.id 8 - name = "@" 9 - value = var.universe4 10 - type = "A" 11 - ttl = 3600 5 + resource "hcloud_zone_rrset" "root4_honeyarcus_art" { 6 + zone = data.hcloud_zone.honeyarcus_art.name 7 + name = "@" 8 + type = "A" 9 + 10 + records = [ 11 + { 12 + value = var.universe4 13 + comment = "universe" 14 + } 15 + ] 16 + 17 + ttl = 3600 12 18 } 13 19 14 - resource "hetznerdns_record" "root6_honeyarcus_art" { 15 - zone_id = hetznerdns_zone.honeyarcus_art.id 16 - name = "@" 17 - value = var.universe6 18 - type = "AAAA" 19 - ttl = 3600 20 + resource "hcloud_zone_rrset" "root6_honeyarcus_art" { 21 + zone = data.hcloud_zone.honeyarcus_art.name 22 + name = "@" 23 + type = "AAAA" 24 + 25 + records = [ 26 + { 27 + value = var.universe6 28 + comment = "universe" 29 + } 30 + ] 31 + 32 + ttl = 3600 20 33 } 21 34 22 - resource "hetznerdns_record" "rootcaa_honeyarcus_art" { 23 - for_each = toset(var.caa_records) 24 - zone_id = hetznerdns_zone.honeyarcus_art.id 25 - name = "@" 26 - value = each.key 27 - type = "CAA" 35 + resource "hcloud_zone_rrset" "rootcaa_honeyarcus_art" { 36 + zone = data.hcloud_zone.honeyarcus_art.name 37 + name = "@" 38 + type = "CAA" 39 + 40 + records = [for v in var.caa_records : { value = v }] 28 41 }
+7 -6
provider.tf
··· 1 1 terraform { 2 2 required_providers { 3 - hetznerdns = { 4 - source = "timohirt/hetznerdns" 5 - version = "~> 2.2.0" 3 + hcloud = { 4 + source = "hetznercloud/hcloud" 5 + version = "1.57.0" 6 6 } 7 7 } 8 + 8 9 9 10 cloud { 10 11 hostname = "app.terraform.io" ··· 16 17 } 17 18 } 18 19 19 - variable "hetznerdns_token" { 20 + variable "hcloud_token" { 20 21 sensitive = true 21 22 } 22 23 23 - provider "hetznerdns" { 24 - apitoken = var.hetznerdns_token 24 + provider "hcloud" { 25 + token = var.hcloud_token 25 26 }
+129 -65
scrumplex_net.tf
··· 1 - resource "hetznerdns_zone" "scrumplex_net" { 1 + data "hcloud_zone" "scrumplex_net" { 2 2 name = "scrumplex.net" 3 - ttl = 86400 4 3 } 5 4 6 - resource "hetznerdns_record" "root4_scrumplex_net" { 7 - zone_id = hetznerdns_zone.scrumplex_net.id 8 - name = "@" 9 - value = var.universe4 10 - type = "A" 11 - ttl = 3600 5 + resource "hcloud_zone_rrset" "root4_scrumplex_net" { 6 + zone = data.hcloud_zone.scrumplex_net.name 7 + name = "@" 8 + type = "A" 9 + 10 + records = [ 11 + { 12 + value = var.universe4 13 + comment = "universe" 14 + } 15 + ] 16 + 17 + ttl = 3600 12 18 } 13 19 14 - resource "hetznerdns_record" "root6_scrumplex_net" { 15 - zone_id = hetznerdns_zone.scrumplex_net.id 16 - name = "@" 17 - value = var.universe6 18 - type = "AAAA" 19 - ttl = 3600 20 + resource "hcloud_zone_rrset" "root6_scrumplex_net" { 21 + zone = data.hcloud_zone.scrumplex_net.name 22 + name = "@" 23 + type = "AAAA" 24 + 25 + records = [ 26 + { 27 + value = var.universe6 28 + comment = "universe" 29 + } 30 + ] 31 + 32 + ttl = 3600 20 33 } 21 34 22 - resource "hetznerdns_record" "rootcaa_scrumplex_net" { 23 - for_each = toset(var.caa_records) 24 - zone_id = hetznerdns_zone.scrumplex_net.id 25 - name = "@" 26 - value = each.key 27 - type = "CAA" 35 + resource "hcloud_zone_rrset" "rootcaa_scrumplex_net" { 36 + zone = data.hcloud_zone.scrumplex_net.name 37 + name = "@" 38 + type = "CAA" 39 + 40 + records = [for v in var.caa_records : { value = v }] 28 41 } 29 42 30 - resource "hetznerdns_record" "cnames_scrumplex_net" { 43 + resource "hcloud_zone_rrset" "cnames_scrumplex_net" { 31 44 for_each = toset(["x", "live", "skins", "grafana", "beta"]) 32 - zone_id = hetznerdns_zone.scrumplex_net.id 45 + zone = data.hcloud_zone.scrumplex_net.name 33 46 name = each.key 34 - value = "${hetznerdns_zone.scrumplex_net.name}." 35 47 type = "CNAME" 48 + 49 + records = [ 50 + { 51 + value = "${data.hcloud_zone.scrumplex_net.name}." 52 + } 53 + ] 36 54 } 37 55 38 - resource "hetznerdns_record" "play_scrumplex_net" { 39 - zone_id = hetznerdns_zone.scrumplex_net.id 40 - name = "play" 41 - value = "home.sefa.cloud." 42 - type = "CNAME" 56 + resource "hcloud_zone_rrset" "play_scrumplex_net" { 57 + zone = data.hcloud_zone.scrumplex_net.name 58 + name = "play" 59 + type = "CNAME" 60 + 61 + records = [ 62 + { 63 + value = "home.sefa.cloud." 64 + } 65 + ] 43 66 } 44 67 45 68 # Verifications 46 69 47 - resource "hetznerdns_record" "verify_bing_scrumplex_net" { 48 - zone_id = hetznerdns_zone.scrumplex_net.id 49 - name = "3835887576857d098bf556039da5a1ed" 50 - value = "verify.bing.com." 51 - type = "CNAME" 70 + resource "hcloud_zone_rrset" "verify_bing_scrumplex_net" { 71 + zone = data.hcloud_zone.scrumplex_net.name 72 + name = "3835887576857d098bf556039da5a1ed" 73 + type = "CNAME" 74 + 75 + records = [ 76 + { 77 + value = "verify.bing.com." 78 + } 79 + ] 52 80 } 53 81 54 - resource "hetznerdns_record" "atproto_scrumplex_net" { 55 - zone_id = hetznerdns_zone.scrumplex_net.id 56 - name = "_atproto" 57 - value = "did=did:plc:cryskse2nxtwd4feybx3vhcq" 58 - type = "TXT" 82 + resource "hcloud_zone_rrset" "atproto_scrumplex_net" { 83 + zone = data.hcloud_zone.scrumplex_net.name 84 + name = "_atproto" 85 + type = "TXT" 86 + 87 + records = [ 88 + { 89 + value = "\"did=did:plc:cryskse2nxtwd4feybx3vhcq\"" 90 + } 91 + ] 59 92 } 60 93 61 - resource "hetznerdns_record" "discord_scrumplex_net" { 62 - zone_id = hetznerdns_zone.scrumplex_net.id 63 - name = "_discord" 64 - value = "dh=6b63a4f3f7bd4c47da77cc7dd3ecfb8060dcc8e5" 65 - type = "TXT" 94 + resource "hcloud_zone_rrset" "discord_scrumplex_net" { 95 + zone = data.hcloud_zone.scrumplex_net.name 96 + name = "_discord" 97 + type = "TXT" 98 + 99 + records = [ 100 + { 101 + value = "\"dh=6b63a4f3f7bd4c47da77cc7dd3ecfb8060dcc8e5\"" 102 + } 103 + ] 66 104 } 67 105 68 - resource "hetznerdns_record" "roottxt_scrumplex_net" { 69 - for_each = tomap({ 70 - google = "\"google-site-verification=NaynR7Wx8QUQ6X_LjIZn510VZ6Xk7OCwy-fXoNLkbzw\"" 71 - ariadne = "openpgp4fpr:e173237ac782296d98f5adace13dfd4b47127951" 72 - abuseipdb = "\"abuseipdb-verification=OL4gRvY2\"" 73 - }) 74 - zone_id = hetznerdns_zone.scrumplex_net.id 75 - name = "@" 76 - value = each.value 77 - type = "TXT" 106 + resource "hcloud_zone_rrset" "roottxt_scrumplex_net" { 107 + zone = data.hcloud_zone.scrumplex_net.name 108 + name = "@" 109 + type = "TXT" 110 + 111 + records = [ 112 + { 113 + value = "\"google-site-verification=NaynR7Wx8QUQ6X_LjIZn510VZ6Xk7OCwy-fXoNLkbzw\"" 114 + comment = "google" 115 + }, 116 + { 117 + value = "\"openpgp4fpr:e173237ac782296d98f5adace13dfd4b47127951\"" 118 + comment = "ariadne" 119 + }, 120 + { 121 + value = "\"abuseipdb-verification=OL4gRvY2\"" 122 + comment = "abuseipdb" 123 + }, 124 + { 125 + value = "\"v=spf1 include:mailbox.org -all\"" 126 + comment = "mailbox.org SPF" 127 + } 128 + ] 78 129 } 79 130 80 131 # Mailbox.org records 81 132 82 - resource "hetznerdns_record" "mbomx_scrumplex_net" { 83 - for_each = toset(["10 mxext1.mailbox.org.", "20 mxext3.mailbox.org.", "10 mxext2.mailbox.org."]) 84 - zone_id = hetznerdns_zone.scrumplex_net.id 85 - name = "@" 86 - value = each.key 87 - type = "MX" 133 + resource "hcloud_zone_rrset" "mbomx_scrumplex_net" { 134 + zone = data.hcloud_zone.scrumplex_net.name 135 + name = "@" 136 + type = "MX" 137 + 138 + records = [ 139 + { 140 + value = "10 mxext1.mailbox.org." 141 + }, 142 + { 143 + value = "20 mxext3.mailbox.org." 144 + }, 145 + { 146 + value = "10 mxext2.mailbox.org." 147 + } 148 + ] 88 149 } 89 150 90 - resource "hetznerdns_record" "mbotxt_scrumplex_net" { 151 + resource "hcloud_zone_rrset" "mbotxt_scrumplex_net" { 91 152 for_each = tomap({ 92 - "@" = "\"v=spf1 include:mailbox.org -all\"" 93 153 _dmarc = "\"v=DMARC1; p=none; rua=mailto:postmaster@scrumplex.net; ruf=mailto:postmaster@scrumplex.net; fo=1; pct=25; adkim=r; aspf=r\"" 94 154 "mbo0001._domainkey" = "\"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2K4PavXoNY8eGK2u61LIQlOHS8f5sWsCK5b+HMOfo0M+aNHwfqlVdzi/IwmYnuDKuXYuCllrgnxZ4fG4yVaux58v9grVsFHdzdjPlAQfp5rkiETYpCMZwgsmdseJ4CoZaosPHLjPumFE/Ua2WAQQljnunsM9TONM9L6KxrO9t5IISD1XtJb0bq1lVI/e72k3m\" \"nPd/q77qzhTDmwN4TSNJZN8sxzUJx9HNSMRRoEIHSDLTIJUK+Up8IeCx0B7CiOzG5w/cHyZ3AM5V8lkqBaTDK46AwTkTVGJf59QxUZArG3FEH5vy9HzDmy0tGG+053/x4RqkhqMg5/ClDm+lpZqWwIDAQAB\"" 95 155 "mbo0002._domainkey" = "\"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqxEKIg2c48ecfmy/+rj35sBOhdfIYGNDCMeHy0b36DX6MNtS7zA/VDR2q5ubtHzraL5uUGas8kb/33wtrWFYxierLRXy12qj8ItdYCRugu9tXTByEED05WdBtRzJmrb8YBMfeK0E0K3wwoWfhIk/wzKbjMkbqYBOTYLlIcVGQWzOfN7/n3n+VChfu6sGFK3k2\" \"qrJNnw22iFy4C8Ks7j77+tCpm0PoUwA2hOdLrRw3ldx2E9PH0GVwIMJRgekY6cS7DrbHrj/AeGlwfwwCSi9T23mYvc79nVrh2+82ZqmkpZSTD2qq+ukOkyjdRuUPck6e2b+x141Nzd81dIZVfOEiwIDAQAB\"" 96 156 }) 97 - zone_id = hetznerdns_zone.scrumplex_net.id 98 - name = each.key 99 - value = each.value 100 - type = "TXT" 157 + zone = data.hcloud_zone.scrumplex_net.name 158 + name = each.key 159 + type = "TXT" 160 + records = [ 161 + { 162 + value = each.value 163 + } 164 + ] 101 165 }
+52 -31
scrumplex_rocks.tf
··· 1 - resource "hetznerdns_zone" "scrumplex_rocks" { 1 + data "hcloud_zone" "scrumplex_rocks" { 2 2 name = "scrumplex.rocks" 3 - ttl = 86400 4 3 } 5 4 6 - resource "hetznerdns_record" "root4_scrumplex_rocks" { 7 - zone_id = hetznerdns_zone.scrumplex_rocks.id 8 - name = "@" 9 - value = var.universe4 10 - type = "A" 11 - ttl = 3600 5 + resource "hcloud_zone_rrset" "root4_scrumplex_rocks" { 6 + zone = data.hcloud_zone.scrumplex_rocks.name 7 + name = "@" 8 + type = "A" 9 + 10 + records = [ 11 + { 12 + value = var.universe4 13 + comment = "universe" 14 + } 15 + ] 16 + 17 + ttl = 3600 12 18 } 13 19 14 - resource "hetznerdns_record" "root6_scrumplex_rocks" { 15 - zone_id = hetznerdns_zone.scrumplex_rocks.id 16 - name = "@" 17 - value = var.universe6 18 - type = "AAAA" 19 - ttl = 3600 20 + resource "hcloud_zone_rrset" "root6_scrumplex_rocks" { 21 + zone = data.hcloud_zone.scrumplex_rocks.name 22 + name = "@" 23 + type = "AAAA" 24 + 25 + records = [ 26 + { 27 + value = var.universe6 28 + comment = "universe" 29 + } 30 + ] 31 + 32 + ttl = 3600 20 33 } 21 34 22 - resource "hetznerdns_record" "rootcaa_scrumplex_rocks" { 23 - for_each = toset(var.caa_records) 24 - zone_id = hetznerdns_zone.scrumplex_rocks.id 25 - name = "@" 26 - value = each.key 27 - type = "CAA" 35 + resource "hcloud_zone_rrset" "rootcaa_scrumplex_rocks" { 36 + zone = data.hcloud_zone.scrumplex_rocks.name 37 + name = "@" 38 + type = "CAA" 39 + 40 + records = [for v in var.caa_records : { value = v }] 28 41 } 29 42 30 - resource "hetznerdns_record" "cnames_scrumplex_rocks" { 43 + resource "hcloud_zone_rrset" "cnames_scrumplex_rocks" { 31 44 for_each = toset(["x"]) 32 - zone_id = hetznerdns_zone.scrumplex_rocks.id 45 + zone = data.hcloud_zone.scrumplex_rocks.name 33 46 name = each.key 34 - value = "${hetznerdns_zone.scrumplex_rocks.name}." 35 47 type = "CNAME" 48 + 49 + records = [ 50 + { 51 + value = "${data.hcloud_zone.scrumplex_rocks.name}." 52 + } 53 + ] 36 54 } 37 55 38 56 # Verifications 39 57 40 - resource "hetznerdns_record" "roottxt_scrumplex_rocks" { 41 - for_each = tomap({ 42 - ariadne = "openpgp4fpr:e173237ac782296d98f5adace13dfd4b47127951" 43 - }) 44 - zone_id = hetznerdns_zone.scrumplex_rocks.id 45 - name = "@" 46 - value = each.value 47 - type = "TXT" 58 + resource "hcloud_zone_rrset" "roottxt_scrumplex_rocks" { 59 + zone = data.hcloud_zone.scrumplex_rocks.name 60 + name = "@" 61 + type = "TXT" 62 + 63 + records = [ 64 + { 65 + value = "\"openpgp4fpr:e173237ac782296d98f5adace13dfd4b47127951\"" 66 + comment = "ariadne" 67 + } 68 + ] 48 69 }
+112 -64
sefa_cloud.tf
··· 1 - resource "hetznerdns_zone" "sefa_cloud" { 1 + data "hcloud_zone" "sefa_cloud" { 2 2 name = "sefa.cloud" 3 - ttl = 86400 4 3 } 5 4 6 - resource "hetznerdns_record" "rootcaa_sefa_cloud" { 7 - for_each = toset(var.caa_records) 8 - zone_id = hetznerdns_zone.sefa_cloud.id 9 - name = "@" 10 - value = each.key 11 - type = "CAA" 5 + resource "hcloud_zone_rrset" "rootcaa_sefa_cloud" { 6 + zone = data.hcloud_zone.sefa_cloud.name 7 + name = "@" 8 + type = "CAA" 9 + 10 + records = [for v in var.caa_records : { value = v }] 12 11 } 13 12 14 - resource "hetznerdns_record" "cosmos4_sefa_cloud" { 15 - zone_id = hetznerdns_zone.sefa_cloud.id 16 - name = "cosmos" 17 - value = "10.0.0.11" 18 - type = "A" 13 + resource "hcloud_zone_rrset" "cosmos4_sefa_cloud" { 14 + zone = data.hcloud_zone.sefa_cloud.name 15 + name = "cosmos" 16 + type = "A" 17 + 18 + records = [ 19 + { 20 + value = "10.0.0.11" 21 + } 22 + ] 19 23 } 20 24 21 - resource "hetznerdns_record" "cosmos6_sefa_cloud" { 22 - zone_id = hetznerdns_zone.sefa_cloud.id 23 - name = "cosmos" 24 - value = "fd19:783f:b287:0:dea6:32ff:fe54:1a63" 25 - type = "AAAA" 25 + resource "hcloud_zone_rrset" "cosmos6_sefa_cloud" { 26 + zone = data.hcloud_zone.sefa_cloud.name 27 + name = "cosmos" 28 + type = "AAAA" 29 + 30 + records = [ 31 + { 32 + value = "fd19:783f:b287:0:dea6:32ff:fe54:1a63" 33 + } 34 + ] 26 35 } 27 36 28 - resource "hetznerdns_record" "cosmoscnames_sefa_cloud" { 37 + resource "hcloud_zone_rrset" "cosmoscnames_sefa_cloud" { 29 38 for_each = toset([ 30 39 "asf", 31 40 ]) 32 - zone_id = hetznerdns_zone.sefa_cloud.id 33 - name = "${each.key}.cosmos" 34 - value = "cosmos.sefa.cloud." 35 - type = "CNAME" 41 + zone = data.hcloud_zone.sefa_cloud.name 42 + name = "${each.key}.cosmos" 43 + type = "CNAME" 44 + 45 + records = [ 46 + { 47 + value = "cosmos.sefa.cloud." 48 + } 49 + ] 36 50 } 37 51 38 - resource "hetznerdns_record" "eclipse4_sefa_cloud" { 39 - zone_id = hetznerdns_zone.sefa_cloud.id 40 - name = "eclipse" 41 - value = "10.10.10.12" 42 - type = "A" 52 + resource "hcloud_zone_rrset" "eclipse4_sefa_cloud" { 53 + zone = data.hcloud_zone.sefa_cloud.name 54 + name = "eclipse" 55 + type = "A" 56 + 57 + records = [ 58 + { 59 + value = "10.10.10.12" 60 + } 61 + ] 43 62 } 44 63 45 - resource "hetznerdns_record" "eclipse6_sefa_cloud" { 46 - zone_id = hetznerdns_zone.sefa_cloud.id 47 - name = "eclipse" 48 - value = "fdcc:546e:5cf:0:da5e:d3ff:feea:f48e" 49 - type = "AAAA" 64 + resource "hcloud_zone_rrset" "eclipse6_sefa_cloud" { 65 + zone = data.hcloud_zone.sefa_cloud.name 66 + name = "eclipse" 67 + type = "AAAA" 68 + 69 + records = [ 70 + { 71 + value = "fdcc:546e:5cf:0:da5e:d3ff:feea:f48e" 72 + } 73 + ] 50 74 } 51 75 52 - resource "hetznerdns_record" "eclipsecnames_sefa_cloud" { 76 + resource "hcloud_zone_rrset" "eclipsecnames_sefa_cloud" { 53 77 for_each = toset([ 54 78 "nzb", 55 79 "paperless", ··· 60 84 "syncthing", 61 85 "torrent", 62 86 ]) 63 - zone_id = hetznerdns_zone.sefa_cloud.id 64 - name = "${each.key}.eclipse" 65 - value = "eclipse.sefa.cloud." 66 - type = "CNAME" 87 + zone = data.hcloud_zone.sefa_cloud.name 88 + name = "${each.key}.eclipse" 89 + type = "CNAME" 90 + 91 + records = [ 92 + { 93 + value = "eclipse.sefa.cloud." 94 + } 95 + ] 67 96 } 68 97 69 - resource "hetznerdns_record" "cnames_sefa_cloud" { 98 + resource "hcloud_zone_rrset" "cnames_sefa_cloud" { 70 99 for_each = toset([ 71 100 "audiobookshelf", 72 101 "box", ··· 82 111 "vault", 83 112 "view", 84 113 ]) 85 - zone_id = hetznerdns_zone.sefa_cloud.id 86 - name = each.key 87 - value = "${hetznerdns_zone.sefa_cloud.name}." 88 - type = "CNAME" 114 + zone = data.hcloud_zone.sefa_cloud.name 115 + name = each.key 116 + type = "CNAME" 117 + 118 + records = [ 119 + { 120 + value = "${data.hcloud_zone.sefa_cloud.name}." 121 + } 122 + ] 89 123 } 90 124 91 - resource "hetznerdns_record" "cnames_arson_sefa_cloud" { 125 + resource "hcloud_zone_rrset" "cnames_arson_sefa_cloud" { 92 126 for_each = toset([ 93 127 "hass", 94 128 ]) 95 - zone_id = hetznerdns_zone.sefa_cloud.id 96 - name = each.key 97 - value = "arson.${hetznerdns_zone.sefa_cloud.name}." 98 - type = "CNAME" 129 + zone = data.hcloud_zone.sefa_cloud.name 130 + name = each.key 131 + type = "CNAME" 132 + 133 + records = [ 134 + { 135 + value = "arson.${data.hcloud_zone.sefa_cloud.name}." 136 + } 137 + ] 99 138 } 100 139 101 140 # Verifications 102 141 103 - resource "hetznerdns_record" "roottxt_sefa_cloud" { 104 - for_each = tomap({ 105 - sendinblue = "Sendinblue-code:40fc54f18aa321c1ef380e8bc74c0f1f" 106 - }) 107 - zone_id = hetznerdns_zone.sefa_cloud.id 108 - name = "@" 109 - value = each.value 110 - type = "TXT" 111 - } 142 + resource "hcloud_zone_rrset" "roottxt_sefa_cloud" { 143 + zone = data.hcloud_zone.sefa_cloud.name 144 + name = "@" 145 + type = "TXT" 112 146 113 - # Send in Blue records 147 + records = [ 148 + { 149 + value = "\"Sendinblue-code:40fc54f18aa321c1ef380e8bc74c0f1f\"" 150 + comment = "Brevo/Send in Blue Verification" 151 + }, 152 + { 153 + value = "\"v=spf1 include:spf.sendinblue.com mx ~all\"" 154 + comment = "Brevo/Send in Blue SPF" 155 + } 156 + ] 157 + } 114 158 115 - resource "hetznerdns_record" "mbotxt_sefa_cloud" { 159 + resource "hcloud_zone_rrset" "brevotxt_sefa_cloud" { 116 160 for_each = tomap({ 117 - "@" = "\"v=spf1 include:spf.sendinblue.com mx ~all\"" 118 161 _dmarc = "\"v=DMARC1; p=none; sp=none; rua=mailto:dmarc@mailinblue.com!10m; ruf=mailto:dmarc@mailinblue.com!10m; rf=afrf; pct=100; ri=86400\"" 119 162 "mail._domainkey" = "\"k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDeMVIzrCa3T14JsNY0IRv5/2V1/v2itlviLQBwXsa7shBD6TrBkswsFUToPyMRWC9tbR/5ey0nRBH0ZVxp+lsmTxid2Y2z+FApQ6ra2VsXfbJP3HE6wAO0YTVEJt1TmeczhEd2Jiz/fcabIISgXEdSpTYJhb0ct0VJRxcg4c8c7wIDAQAB\"" 120 163 }) 121 - zone_id = hetznerdns_zone.sefa_cloud.id 122 - name = each.key 123 - value = each.value 124 - type = "TXT" 164 + zone = data.hcloud_zone.sefa_cloud.name 165 + name = each.key 166 + type = "TXT" 167 + 168 + records = [ 169 + { 170 + value = each.value 171 + } 172 + ] 125 173 }