Manage DO domains in Terraform!!

This is a nice step forward, for me. But there are some challenges
here I need to fix.

The first, and biggest one, is that DO rate limits API requests per
minute to ~250. If I'm doing even a small amount of changes and
iterating a lot I will run into issues with that just due to recrods;
each record pull appears to be its OWN CALL. God.

With that in mind, an easy next step seems like splitting the domain
management into their own submodules to prevent unnecessary calls.

For now, i'm just happy to have this managed in code :).
master
josiah 9 months ago
parent d80830f8d3
commit 9046da30d9

@ -0,0 +1,26 @@
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.
provider "registry.terraform.io/digitalocean/digitalocean" {
version = "2.29.0"
constraints = "~> 2.29.0"
hashes = [
"h1:OLSxMaqLOUl6DjQ3vz14odCyMCcLA63ltBNPgrIQHG4=",
"zh:0af0a1a2de818c5dc8ee7ad4dc4731452848e84cfa0c1ce514af1c7aad15c53c",
"zh:27229f3162b4142be48554f56227265982f3b74e4c79fa5d2528c8a3912d1e19",
"zh:31d6e73bfe12231fa0ab3bbeef0e4aa9822a2008ae2a1a8b22557bdada4af7a3",
"zh:6e7417413e96b87a11d47e9acbc88e6d707a6ab23a7de6b584fc600d9d3cbf00",
"zh:9faf40798a698b80e8d56e502c220856d2d5f55d5137b9cf5371f2fdaeadd70a",
"zh:b9ab9caf21b3f928fdd891e749fd8d33f6d441b39a08d725edf58cf8027a9b7b",
"zh:be32b3a35474f8acbab4d0ad8676810fa05a87918cc1874b53672159005016c0",
"zh:c2e8f7c08cad44b46e2e5580183e1ef2a4f1803347de136d1a35f333973a25f0",
"zh:cf0aba5b5042c762da489050716815652f809f3ef0ededb0f981f11691dbef03",
"zh:d1c0874c0ae0aa1eae86dbd131978796303599709c35b5dee926887d375f4cc8",
"zh:d4eecb61e763950a5a0f40cddc7a58345419a522b783aae7b0703309a354bb0c",
"zh:d866df86dd78eb2a9e54ebff637301522766710bb6dc7f8e330f1146822b62ee",
"zh:da51541ef96d0a5745740dc623bff3ccfb6b098b548d78cf5e9d95a15c69963a",
"zh:ede343be1528b468feae3a1cbf781e223f63ce33446a008a42f2fb799a23b436",
"zh:f20a60e2cecd29bbcc73d59e95aca368e2c55b7648f1923df2c0f7578026b048",
"zh:fccaf963f2db1e271e9d28276172910ca6b95471b8e0dfac758daf0495ce17f5",
]
}

@ -0,0 +1,15 @@
resource "digitalocean_domain" "tfer--awful-002E-club" {
name = "awful.club"
}
resource "digitalocean_domain" "tfer--home-002E-jowj-002E-net" {
name = "home.jowj.net"
}
resource "digitalocean_domain" "tfer--jowj-002E-net" {
name = "jowj.net"
}
resource "digitalocean_domain" "tfer--services-002E-jowj-002E-net" {
name = "services.jowj.net"
}

@ -0,0 +1,375 @@
output "digitalocean_domain_tfer--awful-002E-club_id" {
value = "${digitalocean_domain.tfer--awful-002E-club.id}"
}
output "digitalocean_domain_tfer--home-002E-jowj-002E-net_id" {
value = "${digitalocean_domain.tfer--home-002E-jowj-002E-net.id}"
}
output "digitalocean_domain_tfer--jowj-002E-net_id" {
value = "${digitalocean_domain.tfer--jowj-002E-net.id}"
}
output "digitalocean_domain_tfer--services-002E-jowj-002E-net_id" {
value = "${digitalocean_domain.tfer--services-002E-jowj-002E-net.id}"
}
output "digitalocean_record_tfer--100209615_id" {
value = "${digitalocean_record.tfer--100209615.id}"
}
output "digitalocean_record_tfer--100210294_id" {
value = "${digitalocean_record.tfer--100210294.id}"
}
output "digitalocean_record_tfer--103887854_id" {
value = "${digitalocean_record.tfer--103887854.id}"
}
output "digitalocean_record_tfer--108277404_id" {
value = "${digitalocean_record.tfer--108277404.id}"
}
output "digitalocean_record_tfer--116320524_id" {
value = "${digitalocean_record.tfer--116320524.id}"
}
output "digitalocean_record_tfer--152768913_id" {
value = "${digitalocean_record.tfer--152768913.id}"
}
output "digitalocean_record_tfer--155501426_id" {
value = "${digitalocean_record.tfer--155501426.id}"
}
output "digitalocean_record_tfer--271237190_id" {
value = "${digitalocean_record.tfer--271237190.id}"
}
output "digitalocean_record_tfer--273016322_id" {
value = "${digitalocean_record.tfer--273016322.id}"
}
output "digitalocean_record_tfer--273019963_id" {
value = "${digitalocean_record.tfer--273019963.id}"
}
output "digitalocean_record_tfer--273019964_id" {
value = "${digitalocean_record.tfer--273019964.id}"
}
output "digitalocean_record_tfer--273019965_id" {
value = "${digitalocean_record.tfer--273019965.id}"
}
output "digitalocean_record_tfer--273019966_id" {
value = "${digitalocean_record.tfer--273019966.id}"
}
output "digitalocean_record_tfer--273019998_id" {
value = "${digitalocean_record.tfer--273019998.id}"
}
output "digitalocean_record_tfer--273021791_id" {
value = "${digitalocean_record.tfer--273021791.id}"
}
output "digitalocean_record_tfer--273021801_id" {
value = "${digitalocean_record.tfer--273021801.id}"
}
output "digitalocean_record_tfer--273021839_id" {
value = "${digitalocean_record.tfer--273021839.id}"
}
output "digitalocean_record_tfer--273024307_id" {
value = "${digitalocean_record.tfer--273024307.id}"
}
output "digitalocean_record_tfer--273196064_id" {
value = "${digitalocean_record.tfer--273196064.id}"
}
output "digitalocean_record_tfer--274480755_id" {
value = "${digitalocean_record.tfer--274480755.id}"
}
output "digitalocean_record_tfer--274483081_id" {
value = "${digitalocean_record.tfer--274483081.id}"
}
output "digitalocean_record_tfer--274922110_id" {
value = "${digitalocean_record.tfer--274922110.id}"
}
output "digitalocean_record_tfer--274924072_id" {
value = "${digitalocean_record.tfer--274924072.id}"
}
output "digitalocean_record_tfer--274930691_id" {
value = "${digitalocean_record.tfer--274930691.id}"
}
output "digitalocean_record_tfer--282780675_id" {
value = "${digitalocean_record.tfer--282780675.id}"
}
output "digitalocean_record_tfer--282785060_id" {
value = "${digitalocean_record.tfer--282785060.id}"
}
output "digitalocean_record_tfer--282785080_id" {
value = "${digitalocean_record.tfer--282785080.id}"
}
output "digitalocean_record_tfer--282785089_id" {
value = "${digitalocean_record.tfer--282785089.id}"
}
output "digitalocean_record_tfer--282785137_id" {
value = "${digitalocean_record.tfer--282785137.id}"
}
output "digitalocean_record_tfer--289972404_id" {
value = "${digitalocean_record.tfer--289972404.id}"
}
output "digitalocean_record_tfer--318001321_id" {
value = "${digitalocean_record.tfer--318001321.id}"
}
output "digitalocean_record_tfer--318333757_id" {
value = "${digitalocean_record.tfer--318333757.id}"
}
output "digitalocean_record_tfer--326222435_id" {
value = "${digitalocean_record.tfer--326222435.id}"
}
output "digitalocean_record_tfer--353715597_id" {
value = "${digitalocean_record.tfer--353715597.id}"
}
output "digitalocean_record_tfer--354353835_id" {
value = "${digitalocean_record.tfer--354353835.id}"
}
output "digitalocean_record_tfer--355653914_id" {
value = "${digitalocean_record.tfer--355653914.id}"
}
output "digitalocean_record_tfer--360787392_id" {
value = "${digitalocean_record.tfer--360787392.id}"
}
output "digitalocean_record_tfer--361691456_id" {
value = "${digitalocean_record.tfer--361691456.id}"
}
output "digitalocean_record_tfer--367911478_id" {
value = "${digitalocean_record.tfer--367911478.id}"
}
output "digitalocean_record_tfer--50599690_id" {
value = "${digitalocean_record.tfer--50599690.id}"
}
output "digitalocean_record_tfer--50599691_id" {
value = "${digitalocean_record.tfer--50599691.id}"
}
output "digitalocean_record_tfer--50599692_id" {
value = "${digitalocean_record.tfer--50599692.id}"
}
output "digitalocean_record_tfer--50599693_id" {
value = "${digitalocean_record.tfer--50599693.id}"
}
output "digitalocean_record_tfer--50601774_id" {
value = "${digitalocean_record.tfer--50601774.id}"
}
output "digitalocean_record_tfer--50892537_id" {
value = "${digitalocean_record.tfer--50892537.id}"
}
output "digitalocean_record_tfer--53060224_id" {
value = "${digitalocean_record.tfer--53060224.id}"
}
output "digitalocean_record_tfer--53273061_id" {
value = "${digitalocean_record.tfer--53273061.id}"
}
output "digitalocean_record_tfer--53273081_id" {
value = "${digitalocean_record.tfer--53273081.id}"
}
output "digitalocean_record_tfer--56070115_id" {
value = "${digitalocean_record.tfer--56070115.id}"
}
output "digitalocean_record_tfer--58893317_id" {
value = "${digitalocean_record.tfer--58893317.id}"
}
output "digitalocean_record_tfer--61254814_id" {
value = "${digitalocean_record.tfer--61254814.id}"
}
output "digitalocean_record_tfer--61255364_id" {
value = "${digitalocean_record.tfer--61255364.id}"
}
output "digitalocean_record_tfer--61255373_id" {
value = "${digitalocean_record.tfer--61255373.id}"
}
output "digitalocean_record_tfer--61255385_id" {
value = "${digitalocean_record.tfer--61255385.id}"
}
output "digitalocean_record_tfer--61255389_id" {
value = "${digitalocean_record.tfer--61255389.id}"
}
output "digitalocean_record_tfer--68245405_id" {
value = "${digitalocean_record.tfer--68245405.id}"
}
output "digitalocean_record_tfer--72232806_id" {
value = "${digitalocean_record.tfer--72232806.id}"
}
output "digitalocean_record_tfer--74148930_id" {
value = "${digitalocean_record.tfer--74148930.id}"
}
output "digitalocean_record_tfer--81354418_id" {
value = "${digitalocean_record.tfer--81354418.id}"
}
output "digitalocean_record_tfer--87842326_id" {
value = "${digitalocean_record.tfer--87842326.id}"
}
output "digitalocean_record_tfer--87842328_id" {
value = "${digitalocean_record.tfer--87842328.id}"
}
output "digitalocean_record_tfer--87842329_id" {
value = "${digitalocean_record.tfer--87842329.id}"
}
output "digitalocean_record_tfer--87842330_id" {
value = "${digitalocean_record.tfer--87842330.id}"
}
output "digitalocean_record_tfer--87843293_id" {
value = "${digitalocean_record.tfer--87843293.id}"
}
output "digitalocean_record_tfer--87843462_id" {
value = "${digitalocean_record.tfer--87843462.id}"
}
output "digitalocean_record_tfer--87843474_id" {
value = "${digitalocean_record.tfer--87843474.id}"
}
output "digitalocean_record_tfer--87843507_id" {
value = "${digitalocean_record.tfer--87843507.id}"
}
output "digitalocean_record_tfer--87843681_id" {
value = "${digitalocean_record.tfer--87843681.id}"
}
output "digitalocean_record_tfer--89005178_id" {
value = "${digitalocean_record.tfer--89005178.id}"
}
output "digitalocean_record_tfer--93798711_id" {
value = "${digitalocean_record.tfer--93798711.id}"
}
output "digitalocean_record_tfer--93798712_id" {
value = "${digitalocean_record.tfer--93798712.id}"
}
output "digitalocean_record_tfer--93798713_id" {
value = "${digitalocean_record.tfer--93798713.id}"
}
output "digitalocean_record_tfer--93798714_id" {
value = "${digitalocean_record.tfer--93798714.id}"
}
output "digitalocean_record_tfer--93798774_id" {
value = "${digitalocean_record.tfer--93798774.id}"
}
output "digitalocean_record_tfer--93798785_id" {
value = "${digitalocean_record.tfer--93798785.id}"
}
output "digitalocean_record_tfer--93798884_id" {
value = "${digitalocean_record.tfer--93798884.id}"
}
output "digitalocean_record_tfer--93798891_id" {
value = "${digitalocean_record.tfer--93798891.id}"
}
output "digitalocean_record_tfer--93798898_id" {
value = "${digitalocean_record.tfer--93798898.id}"
}
output "digitalocean_record_tfer--93798944_id" {
value = "${digitalocean_record.tfer--93798944.id}"
}
output "digitalocean_record_tfer--93798958_id" {
value = "${digitalocean_record.tfer--93798958.id}"
}
output "digitalocean_record_tfer--93798970_id" {
value = "${digitalocean_record.tfer--93798970.id}"
}
output "digitalocean_record_tfer--93798992_id" {
value = "${digitalocean_record.tfer--93798992.id}"
}
output "digitalocean_record_tfer--93799014_id" {
value = "${digitalocean_record.tfer--93799014.id}"
}
output "digitalocean_record_tfer--95790425_id" {
value = "${digitalocean_record.tfer--95790425.id}"
}
output "digitalocean_record_tfer--95970598_id" {
value = "${digitalocean_record.tfer--95970598.id}"
}
output "digitalocean_record_tfer--95970600_id" {
value = "${digitalocean_record.tfer--95970600.id}"
}
output "digitalocean_record_tfer--95970760_id" {
value = "${digitalocean_record.tfer--95970760.id}"
}
output "digitalocean_record_tfer--96515486_id" {
value = "${digitalocean_record.tfer--96515486.id}"
}
output "digitalocean_record_tfer--97254927_id" {
value = "${digitalocean_record.tfer--97254927.id}"
}
output "digitalocean_record_tfer--98495666_id" {
value = "${digitalocean_record.tfer--98495666.id}"
}

@ -2,11 +2,12 @@ terraform {
required_providers {
digitalocean = {
source = "digitalocean/digitalocean"
version = "~> 2.0"
version = "~> 2.29.0"
}
}
}
provider "digitalocean" {
token = var.DO_PAT
token = var.DO_PAT
}

@ -0,0 +1,10 @@
* Terraform and DigitalOcean domains
Terraform is a fucking baby about everything and I found this really annoying to work on!! It does seem like it works now, though.
* FAQs
** Importing from existing resources with terraformer
I had to run this, post import, in order to get ~terraform plan~ to work, due to a discrepency in how providers are tagged / labelled /somethign?
~terraform state replace-provider -auto-approve "registry.terraform.io/-/digitalocean" "digitalocean/digitalocean"~

File diff suppressed because it is too large Load Diff

@ -1,5 +1,5 @@
variable "DO_PAT" {
description = "Personal access token for DO."
description = "Personal access token for managing DO infra."
type = string
sensitive = true
}

@ -1,6 +0,0 @@
resource "digitalocean_domain" "default" {
name = "jowj.net"
ip_address = digitalocean_loadbalancer.www-lb.ip
}
Loading…
Cancel
Save