mirror of
https://github.com/2martens/terraform.git
synced 2026-10-17 18:26:50 +02:00
change: Add further DNS records to terraform
feat: Support MX-only domains feat: Support Uberspace domain key
This commit is contained in:
+56
-26
@@ -1,74 +1,104 @@
|
|||||||
import {
|
import {
|
||||||
to = hcloud_zone.twomartens_de
|
to = module.keycloak_domain.hcloud_zone_rrset.a[0]
|
||||||
id = "2martens.de"
|
|
||||||
}
|
|
||||||
|
|
||||||
import {
|
|
||||||
to = module.keycloak_domain.hcloud_zone_rrset.a
|
|
||||||
id = "2martens.de/id/A"
|
id = "2martens.de/id/A"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.keycloak_domain.hcloud_zone_rrset.aaaa
|
to = module.keycloak_domain.hcloud_zone_rrset.aaaa[0]
|
||||||
id = "2martens.de/id/AAAA"
|
id = "2martens.de/id/AAAA"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.keycloak_domain.hcloud_zone_rrset.mx[0]
|
to = module.keycloak_domain.hcloud_zone_rrset.uberspace_domain_key[0]
|
||||||
id = "2martens.de/id/MX"
|
id = "2martens.de/uberspace._domainkey.id/TXT"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.keycloak_domain.hcloud_zone_rrset.txt[0]
|
to = module.gitea_domain.hcloud_zone_rrset.a[0]
|
||||||
id = "2martens.de/id/TXT"
|
|
||||||
}
|
|
||||||
|
|
||||||
import {
|
|
||||||
to = module.gitea_domain.hcloud_zone_rrset.a
|
|
||||||
id = "2martens.de/git/A"
|
id = "2martens.de/git/A"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.gitea_domain.hcloud_zone_rrset.aaaa
|
to = module.gitea_domain.hcloud_zone_rrset.aaaa[0]
|
||||||
id = "2martens.de/git/AAAA"
|
id = "2martens.de/git/AAAA"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.helm-repo_domain.hcloud_zone_rrset.a
|
to = module.helm-repo_domain.hcloud_zone_rrset.a[0]
|
||||||
id = "2martens.de/repo/A"
|
id = "2martens.de/repo/A"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.helm-repo_domain.hcloud_zone_rrset.aaaa
|
to = module.helm-repo_domain.hcloud_zone_rrset.aaaa[0]
|
||||||
id = "2martens.de/repo/AAAA"
|
id = "2martens.de/repo/AAAA"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.statping_domain.hcloud_zone_rrset.a
|
to = module.statping_domain.hcloud_zone_rrset.a[0]
|
||||||
id = "2martens.de/status/A"
|
id = "2martens.de/status/A"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.statping_domain.hcloud_zone_rrset.aaaa
|
to = module.statping_domain.hcloud_zone_rrset.aaaa[0]
|
||||||
id = "2martens.de/status/AAAA"
|
id = "2martens.de/status/AAAA"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.personal_website_domain.hcloud_zone_rrset.a
|
to = module.personal_website_domain.hcloud_zone_rrset.a[0]
|
||||||
id = "2martens.de/@/A"
|
id = "2martens.de/@/A"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.personal_website_domain.hcloud_zone_rrset.aaaa
|
to = module.personal_website_domain.hcloud_zone_rrset.aaaa[0]
|
||||||
id = "2martens.de/@/AAAA"
|
id = "2martens.de/@/AAAA"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.personal_website_domain.hcloud_zone_rrset.mx[0]
|
to = module.personal_website_domain.hcloud_zone_rrset.uberspace_domain_key[0]
|
||||||
id = "2martens.de/@/MX"
|
id = "2martens.de/uberspace._domainkey/TXT"
|
||||||
}
|
}
|
||||||
|
|
||||||
import {
|
import {
|
||||||
to = module.personal_website_domain.hcloud_zone_rrset.txt[0]
|
to = module.medium_domain.hcloud_zone_rrset.a[0]
|
||||||
id = "2martens.de/@/TXT"
|
id = "2martens.de/medium/A"
|
||||||
|
}
|
||||||
|
|
||||||
|
import {
|
||||||
|
to = module.medium_domain.hcloud_zone_rrset.aaaa[0]
|
||||||
|
id = "2martens.de/medium/AAAA"
|
||||||
|
}
|
||||||
|
|
||||||
|
import {
|
||||||
|
to = module.appreview_domain.hcloud_zone_rrset.mx[0]
|
||||||
|
id = "2martens.de/appreview/MX"
|
||||||
|
}
|
||||||
|
|
||||||
|
import {
|
||||||
|
to = module.appreview_domain.hcloud_zone_rrset.txt[0]
|
||||||
|
id = "2martens.de/appreview/TXT"
|
||||||
|
}
|
||||||
|
|
||||||
|
import {
|
||||||
|
to = module.appreview_domain.hcloud_zone_rrset.uberspace_domain_key[0]
|
||||||
|
id = "2martens.de/uberspace._domainkey.appreview/TXT"
|
||||||
|
}
|
||||||
|
|
||||||
|
import {
|
||||||
|
to = module.cms_domain.hcloud_zone_rrset.a[0]
|
||||||
|
id = "2martens.de/cms/A"
|
||||||
|
}
|
||||||
|
|
||||||
|
import {
|
||||||
|
to = module.cms_domain.hcloud_zone_rrset.aaaa[0]
|
||||||
|
id = "2martens.de/cms/AAAA"
|
||||||
|
}
|
||||||
|
|
||||||
|
import {
|
||||||
|
to = module.nas_domain.hcloud_zone_rrset.a[0]
|
||||||
|
id = "2martens.de/nas/A"
|
||||||
|
}
|
||||||
|
|
||||||
|
import {
|
||||||
|
to = module.nas_domain.hcloud_zone_rrset.aaaa[0]
|
||||||
|
id = "2martens.de/nas/AAAA"
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
resource "hcloud_zone_rrset" "a" {
|
resource "hcloud_zone_rrset" "a" {
|
||||||
|
count = var.hasIPRecords ? 1 : 0
|
||||||
|
|
||||||
zone = var.domain
|
zone = var.domain
|
||||||
name = var.subdomain != "" ? var.subdomain : "@"
|
name = var.subdomain != "" ? var.subdomain : "@"
|
||||||
type = "A"
|
type = "A"
|
||||||
@@ -10,6 +12,8 @@ resource "hcloud_zone_rrset" "a" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resource "hcloud_zone_rrset" "aaaa" {
|
resource "hcloud_zone_rrset" "aaaa" {
|
||||||
|
count = var.hasIPRecords ? 1 : 0
|
||||||
|
|
||||||
zone = var.domain
|
zone = var.domain
|
||||||
name = var.subdomain != "" ? var.subdomain : "@"
|
name = var.subdomain != "" ? var.subdomain : "@"
|
||||||
type = "AAAA"
|
type = "AAAA"
|
||||||
@@ -46,3 +50,16 @@ resource "hcloud_zone_rrset" "txt" {
|
|||||||
{ value = provider::hcloud::txt_record(txtValue) }
|
{ value = provider::hcloud::txt_record(txtValue) }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "hcloud_zone_rrset" "uberspace_domain_key" {
|
||||||
|
count = var.uberspaceDomainKey != "" ? 1 : 0
|
||||||
|
|
||||||
|
zone = var.domain
|
||||||
|
name = var.subdomain != "" ? format("%s.%s", "uberspace._domainkey", var.subdomain) : "uberspace._domainkey"
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
|
||||||
|
records = [
|
||||||
|
{ value = provider::hcloud::txt_record(var.uberspaceDomainKey) }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
variable "ipv4" {
|
variable "ipv4" {
|
||||||
type = string
|
type = string
|
||||||
|
default = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "ipv6" {
|
variable "ipv6" {
|
||||||
type = string
|
type = string
|
||||||
|
default = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "domain" {
|
variable "domain" {
|
||||||
@@ -12,6 +14,7 @@ variable "domain" {
|
|||||||
|
|
||||||
variable "subdomain" {
|
variable "subdomain" {
|
||||||
type = string
|
type = string
|
||||||
|
default = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "hasMXRecord" {
|
variable "hasMXRecord" {
|
||||||
@@ -19,6 +22,11 @@ variable "hasMXRecord" {
|
|||||||
default = false
|
default = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "hasIPRecords" {
|
||||||
|
type = bool
|
||||||
|
default = true
|
||||||
|
}
|
||||||
|
|
||||||
variable "hostName" {
|
variable "hostName" {
|
||||||
type = string
|
type = string
|
||||||
default = ""
|
default = ""
|
||||||
@@ -33,3 +41,8 @@ variable "txtValues" {
|
|||||||
type = list(string)
|
type = list(string)
|
||||||
default = []
|
default = []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "uberspaceDomainKey" {
|
||||||
|
type = string
|
||||||
|
default = ""
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,3 +7,18 @@ resource "hcloud_zone" "twomartens_de" {
|
|||||||
delete_protection = true
|
delete_protection = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module "medium_domain" {
|
||||||
|
source = "./modules/domain"
|
||||||
|
domain = hcloud_zone.twomartens_de.name
|
||||||
|
subdomain = "medium"
|
||||||
|
ipv4 = "162.159.153.4"
|
||||||
|
ipv6 = "2606:4700:7::a29f:9804"
|
||||||
|
}
|
||||||
|
|
||||||
|
module "nas_domain" {
|
||||||
|
source = "./modules/domain"
|
||||||
|
domain = hcloud_zone.twomartens_de.name
|
||||||
|
subdomain = "nas"
|
||||||
|
ipv4 = "31.19.63.181"
|
||||||
|
ipv6 = "2a02:8108:c19:c400:9209:d0ff:fe70:7570"
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ module "keycloak_domain" {
|
|||||||
hostName = "monoceres.uberspace.de"
|
hostName = "monoceres.uberspace.de"
|
||||||
mxPrio = 0
|
mxPrio = 0
|
||||||
txtValues = ["v=spf1 include:spf.uberspace.de ~all"]
|
txtValues = ["v=spf1 include:spf.uberspace.de ~all"]
|
||||||
|
uberspaceDomainKey = "v=DKIM1;t=s;n=core;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqs3bFL8W77z7VJHCFbsJ3o68Y1uBbVsbIS1y35CMfRv6wp7si7aIG2ZeKqzdh2dTMsvtvSMaYVq1gT/EtRmTbU/BYC21ff8sqcVqn/ll5nNsk5jKWXTYAlTQp4LBQN7icw94ZNGr5/SDYcnv2nsBYFf2GUviObWXGHX4RaBFNj9NVUNWNin/HicvW+LsbfYq37QtlhjmUn9K96VCwKcTV1mx+Ek0osErYefcOVNawqWIlVRQDLkHZhk1StLsOpRqV+qEjhzTk4n4ZiNtLJG1D9CpHl24d5DKsQDyVFdEfqHimFTSNgiitlkuXg+i+NMiRA9G3gNJtvw8uvfN8f+stQIDAQAB"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Angular frontends
|
// Angular frontends
|
||||||
@@ -61,6 +62,7 @@ module "personal_website_domain" {
|
|||||||
"google-site-verification=nUFiHQFxBpBMdX96ELH3TcfyIfXf2ZlwMFYtXjVq5lo",
|
"google-site-verification=nUFiHQFxBpBMdX96ELH3TcfyIfXf2ZlwMFYtXjVq5lo",
|
||||||
"v=spf1 include:spf.uberspace.de ~all"
|
"v=spf1 include:spf.uberspace.de ~all"
|
||||||
]
|
]
|
||||||
|
uberspaceDomainKey = "v=DKIM1;t=s;n=core;p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3inJYRQRdWD0NQf9WRVcct8Z+GF74WYCK9Q9E/hl9qRSrqHLbm4AZ8gDWZDUQ7O0WbsQ4wcBa2SLB0znpW2UmVrp0iMhqGXVU5USWTHLgAPOVo9DKKbY5wCuugftQe99hvW1Z5BNhzvGUczknQHW/oZF/a7l1nwkYuAZ9YyzQY+sB8o3euuZ0QxaVde0UNDMGpjUO/Nd8MRZj1WBNNyy12ppKVskg7GzuVpulkskslM/mAWdTJ7HKZh1HHPjjGS2ttyDMGWU7/sxuenZ5Z46PvKWQ37djwEsXqXuqYrLI+QBoefolhisHNhHA9cwuUU3bq/+zXhLTN4bYZVPeV31mM6cguKJibPXg0HgYUImJ0A/sADYcd4q7ryZ/sAzCydPT4FDrx64apRPlaIhugSU1KCz+N+7UtCjrQaJLA8i/F4+krfZpfiYr5MJrI8jTAZFW9lzGL7NTVLe1yDf/9aJGc7R/TyI/c5uGFGUnu0C+AKC5KJCIf/I2hJ9ARRRzKe1RtmiTJMAxi8FqzRQoEQwfSDi+vGXtrUC4JCV2Zh7xgwmZV+lMiP5M6x3aOM7FI26WPx+7tdRlzWiYu7okS5ayAgu26EYoKjGuWWHGUuKSKNqjTy3oBunZv3LzdnhOAn4eOrE7+2qn8hiL8SLa9oGcUv1BI0KQmopIAY+BiaX6JkCAwEAAQ=="
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nextcloud
|
// Nextcloud
|
||||||
@@ -75,3 +77,28 @@ module "personal_website_domain" {
|
|||||||
# mxPrio = 0
|
# mxPrio = 0
|
||||||
# mxSpf = "v=spf1 include:spf.uberspace.de ~all"
|
# mxSpf = "v=spf1 include:spf.uberspace.de ~all"
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
// App Review (Mail only)
|
||||||
|
module "appreview_domain" {
|
||||||
|
source = "./modules/domain"
|
||||||
|
domain = hcloud_zone.twomartens_de.name
|
||||||
|
subdomain = "appreview"
|
||||||
|
|
||||||
|
hasIPRecords = false
|
||||||
|
hasMXRecord = true
|
||||||
|
hostName = "wolf.uberspace.de"
|
||||||
|
mxPrio = 0
|
||||||
|
txtValues = [
|
||||||
|
"v=spf1 include:spf.uberspace.de ~all"
|
||||||
|
]
|
||||||
|
uberspaceDomainKey = "v=DKIM1;t=s;n=core;p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuzbMYDHwmAtKti6DFFZu7ySxbWE87XgA14OPck78rj4QX3cNFdnn+WkUpmp0x76NN1rhm3EKCcbBUs9I6MvFQU7A9QJFpMoGq+u7OJ63SSDSmnzUld0mKnWbj/gNp1r4ChQB5JSFIT2A6Q3ias6IM1DscBqfsGsp6StbWaIiBF7Mro7p64sHX4kUgW1iBtNiix0GHqi6imzAryOiGg+X3GhjhwV0j+15rBeBSaFOX2TudlE5VHLox59TLb8ctfdir3kT7UFWJT2GW1iWgUxaTxU6OsSLe2vuQcXIYFBcTN2lbw/dXp7LdBPFzXygC9LZsjxao2bxwAs5MpCLpMrFZVbCEDSO9fEiSsGqgBcwiyxG0DnHexGbKMpr2Ergt+Q9NhfzUjcfNzGvG0HaPEIM70J+yK8gi4mGT7hTRjAFL9+8hGW8qjvna89WAu/ACKSGw3sKIqtevO4Cpc2FMZ1v0FmW7eshe++qfe7lodCmUeaZnQD9H6iR+Q4UJm4QBjIB3uz6ZiXMSZdhfc14T493o14V0j/IAu/OngeZM4O24XR8xCj0NvNAObh6OlKKEIv0fyPlauhQnz573K8fhsPeAFxNnc5lDRTRL96FJFIy3tefDJVHFr5yaFzxQPtaf17mBIaLqKOj42YkZmgcd7+1kN/G8HvrhzsCuz+Zr6z12rcCAwEAAQ=="
|
||||||
|
}
|
||||||
|
|
||||||
|
// Payload CMS
|
||||||
|
module "cms_domain" {
|
||||||
|
source = "./modules/domain"
|
||||||
|
domain = hcloud_zone.twomartens_de.name
|
||||||
|
subdomain = "cms"
|
||||||
|
ipv4 = "95.143.172.212"
|
||||||
|
ipv6 = "2001:1a50:11:0:247a:8ff:fe00:5f6c"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user