Major changes

This commit is contained in:
2025-06-05 23:27:50 +02:00
parent a2dc223d1f
commit 3ea65f060f
107 changed files with 714 additions and 76 deletions
+7
View File
@@ -0,0 +1,7 @@
terraform {
backend "s3" {
bucket = "a13labs.infra.eu"
key = "cloudns.core.infra.tfstate"
region = "eu-west-1"
}
}
+207
View File
@@ -0,0 +1,207 @@
locals {
vps_1 = {
id = data.terraform_remote_state.contabo.outputs.instances[0].id
name = data.terraform_remote_state.contabo.outputs.instances[0].name
ip = data.terraform_remote_state.contabo.outputs.instances[0].ip_config[0].v4[0].ip
}
default_ttl = "3600"
domains = {
"a13labs.me" = [
{
type = "A"
value = local.vps_1.ip
},
{
type = "MX"
priority = "10"
value = "mail-pt.securemail.pro"
},
{
type = "TXT"
value = "v=spf1 include:_spf.tem.scaleway.com include:spf.webapps.net ~all"
},
{
name = "imap"
type = "CNAME"
value = "${local.vps_1.name}.a13labs.me"
},
{
name = "mail"
type = "CNAME"
value = "mail-pt.securemail.pro"
},
{
name = "smtp"
type = "CNAME"
value = "${local.vps_1.name}.a13labs.me"
},
{
name = "_dmarc"
type = "TXT"
value = "v=DMARC1; p=none; rua=mailto:admin@a13labs.me"
},
{
name = local.vps_1.name
type = "A"
value = local.vps_1.ip
},
{
name = "_imap._tcp"
type = "SRV"
priority = "0"
weight = "1"
port = "993"
value = "imap.a13labs.me"
},
{
name = "_smtp._tcp"
type = "SRV"
priority = "0"
weight = "1"
port = "465"
value = "smtp.a13labs.me"
},
{
name = "${var.scaleway_dkim_key}._domainkey"
type = "TXT"
value = "v=DKIM1; h=sha256; k=rsa; p=${var.a13labs_me_scaleway_dkim_value}"
},
],
"alexpires.me" = [
{
type = "A"
value = local.vps_1.ip
},
{
name = ""
type = "MX"
priority = "10"
value = "mail-pt.securemail.pro"
},
{
type = "TXT"
value = "v=spf1 include:_spf.tem.scaleway.com include:spf.webapps.net ~all"
},
{
name = "tv"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "www"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "blog"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "code"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "imap"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "mail"
type = "CNAME"
value = "mail-pt.securemail.pro"
},
{
name = "smtp"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "cloud"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "_dmarc"
type = "TXT"
value = "v=DMARC1; p=none; rua=mailto:admin@alexpires.me"
},
{
name = "prod-01"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "_keybase"
type = "TXT"
value = "keybase-site-verification=${var.keybase_site_verification}"
},
{
name = "rustdesk"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = local.vps_1.name
type = "A"
value = local.vps_1.ip
},
{
name = "_imap._tcp"
type = "SRV"
priority = "0"
weight = "1"
port = "993"
value = "imap.alexpires.me"
},
{
name = "_smtp._tcp"
type = "SRV"
priority = "0"
weight = "1"
port = "465"
value = "smtp.alexpires.me"
},
{
name = "${var.scaleway_dkim_key}._domainkey"
type = "TXT"
value = "v=DKIM1; h=sha256; k=rsa; p=${var.alexpires_me_scaleway_dkim_value}"
},
{
name = "webdav"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
{
name = "ai"
type = "CNAME"
value = "${local.vps_1.name}.alexpires.me"
},
]
}
records = flatten([for domain, records in local.domains : [
for record in records : {
name = lookup(record, "name", "")
zone = domain
type = record.type
value = record.value
priority = lookup(record, "priority", null)
weight = lookup(record, "weight", null)
port = lookup(record, "port", null)
}
]])
}
data "terraform_remote_state" "contabo" {
backend = "s3"
config = {
bucket = "a13labs.infra.eu"
key = "contabo.core.infra.tfstate"
region = "eu-west-1"
}
}
+14
View File
@@ -0,0 +1,14 @@
terraform {
required_version = "~>1.8"
required_providers {
cloudns = {
source = "ClouDNS/cloudns"
version = "~>1.0"
}
}
}
provider "cloudns" {
auth_id = var.cloudns_auth_id
password = var.cloudns_password
}
+26
View File
@@ -0,0 +1,26 @@
resource "cloudns_dns_zone" "zones" {
for_each = local.domains
domain = each.key
type = "master"
}
import {
for_each = local.domains
to = cloudns_dns_zone.zones[each.key]
id = each.key
}
resource "cloudns_dns_record" "records" {
for_each = {
for i, record in local.records :
i => record
}
name = each.value.name
zone = each.value.zone
type = each.value.type
value = each.value.value
priority = lookup(each.value, "priority", null)
weight = lookup(each.value, "weight", null)
port = lookup(each.value, "port", null)
ttl = lookup(each.value, "ttl", local.default_ttl)
}
+8
View File
@@ -0,0 +1,8 @@
AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY
AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY
TF_VAR_cloudns_auth_id=$CLOUDNS_AUTH_ID
TF_VAR_cloudns_password=$CLOUDNS_PASSWORD
TF_VAR_scaleway_dkim_key=$SCALEWAY_DKIM_KEY
TF_VAR_alexpires_me_scaleway_dkim_value=$ALEXPIRES_ME_SCALEWAY_DKIM_VALUE
TF_VAR_a13labs_me_scaleway_dkim_value=$A13LABS_ME_SCALEWAY_DKIM_VALUE
TF_VAR_keybase_site_verification=$KEYBASE_SITE_VERIFICATION
+36
View File
@@ -0,0 +1,36 @@
variable "cloudns_auth_id" {
description = "Cloudns Auth ID"
type = string
sensitive = true
}
variable "cloudns_password" {
description = "Cloudns Password"
type = string
sensitive = true
}
variable "scaleway_dkim_key" {
description = "Scaleway DKIM key"
type = string
sensitive = true
}
variable "alexpires_me_scaleway_dkim_value" {
description = "Scaleway DKIM value (alexpires.me)"
type = string
sensitive = true
}
variable "a13labs_me_scaleway_dkim_value" {
description = "Scaleway DKIM value (a13labs.me)"
type = string
sensitive = true
}
variable "keybase_site_verification" {
description = "Keybase site verification"
type = string
sensitive = true
}