diff --git a/terraform/.terraform.lock.hcl b/terraform/.terraform.lock.hcl index b8291d9..a995441 100644 --- a/terraform/.terraform.lock.hcl +++ b/terraform/.terraform.lock.hcl @@ -1,6 +1,30 @@ # This file is maintained automatically by "terraform init". # Manual edits may be lost in future updates. +provider "registry.terraform.io/digitalocean/digitalocean" { + version = "2.26.0" + constraints = "~> 2.0" + hashes = [ + "h1:u4iQgY0Z/TLGqZiejnhU+CFob45+AcY8vW6oKHh+whY=", + "zh:10fc569e4669f1589b02e8d7e43398f2140872c3e74d11429ad74d7c0464176e", + "zh:402be0350250b133db11780704f26226a176ba6fa5016aef2be08f79e76edaa6", + "zh:506b886bf77ebad868283310dc886d40a793a98534dab7278eca826d0cdd7049", + "zh:745c82487f8fbfea15de975682bb6ba70ea79acfd783feeee9702a6b42e689c8", + "zh:85ed296ca9fe707afec0b2ca9263ef167e784e474a13d631c051fdbb90ad324d", + "zh:87d1eea592c70508df371793834e4aa73cc7cbd830ce8509950c26172734201e", + "zh:8c72fc549941c69aac988d2908d8922ea1a48338f73e8d2f8e5fb57fb6ac1197", + "zh:8d6b692e5351c92acf0bbc34865136ce7d961f82546c5cbe47f0050a088d46a8", + "zh:92cb56af41969755d803ff8d528f63012fa51e2c5e83861c1fd92df4dc680688", + "zh:9820f10523f7c6bca62c0eb12d8c923bf303846d679778158032e9c2e6ad29b6", + "zh:9ba0fe7fe519509acdc69d9d9d8a5bd0c06673d5730474ec15d6dfc81f790d31", + "zh:a670d7f7deae78285e469d8ff350629c8d34fdc6b0da05ff0b855c7846ff9342", + "zh:bb8bf49bdb163757b214c6f645b25e6a3eb9952ec6d1fb3dade56da33cd26460", + "zh:c347ed08e2b929718eb7c97406574b28c8e08a5c00068a40a9dd934ab487ef6b", + "zh:e4e423fdbcf1cc86c585738a0ea8a29413ac0e478dc338dee5594257a13f2fb3", + "zh:ee42adc96a03b94d0bdfd226bf691687d4b38e46eb81570674ae7a86cd58e3a6", + ] +} + provider "registry.terraform.io/hashicorp/aws" { version = "4.55.0" hashes = [ diff --git a/terraform/main.tf b/terraform/main.tf index 312e8a7..0d5f612 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -15,3 +15,37 @@ provider "kubernetes" { module "aws-parameters-external-secrets" { source = "./modules/aws-parameters-external-secrets" } + +module "do_dns" { + source = "./modules/do_dns" + + root_domain_name = "badjware.dev" + root_domain_ip = "104.152.168.30" + + records = { + "mail" = { + type = "CNAME" + value = "@" + } + "public" = { + type = "CNAME" + value = "@" + } + "cloud" = { + type = "A" + value = "159.203.54.249" + } + "code" = { + type = "A" + value = "159.203.54.249" + } + "drone" = { + type = "A" + value = "159.203.54.249" + } + "grafana" = { + type = "A" + value = "159.203.54.249" + } + } +} \ No newline at end of file diff --git a/terraform/modules/do_dns/main.tf b/terraform/modules/do_dns/main.tf new file mode 100644 index 0000000..d9e03bb --- /dev/null +++ b/terraform/modules/do_dns/main.tf @@ -0,0 +1,30 @@ +terraform { + required_providers { + digitalocean = { + source = "digitalocean/digitalocean" + version = "~> 2.0" + } + } +} + +resource "digitalocean_domain" "root" { + name = var.root_domain_name + ip_address = var.root_domain_ip +} + +resource "digitalocean_record" "mx_root" { + domain = digitalocean_domain.root.name + type = "MX" + name = "@" + priority = 0 + value = "mail.${digitalocean_domain.root.name}." +} + +resource "digitalocean_record" "records" { + for_each = var.records + + domain = digitalocean_domain.root.name + type = each.value.type + name = each.key + value = each.value.value +} diff --git a/terraform/modules/do_dns/variables.tf b/terraform/modules/do_dns/variables.tf new file mode 100644 index 0000000..42f31de --- /dev/null +++ b/terraform/modules/do_dns/variables.tf @@ -0,0 +1,16 @@ +variable "root_domain_name" { + type = string + description = "The DNS root domain" +} + +variable "root_domain_ip" { + type = string + description = "The ip the root domain points to" +} + +# https://registry.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/record +variable "records" { + type = map(map(string)) + description = "A map of DNS records to install" + default = {} +} \ No newline at end of file