# gitea is a PITA to automate installation of, watch this pr for when it'll be # fully setup-able from the cli https://github.com/go-gitea/gitea/issues/9210 variable "gitea_db_passwd" { type = string } variable "cloudflare_functionalidiot_zoneid" { type = string } variable "short_dns_ttl" { type = bool default = true description = "Whether to set short dns ttl's or not." } locals { dns_ttl = var.short_dns_ttl ? 120 : 43200 } resource "cloudflare_record" "root" { depends_on = [ linode_instance.prod, cloudflare_record.functionalidiot_com_ns1, cloudflare_record.functionalidiot_com_ns2 ] zone_id = var.cloudflare_functionalidiot_zoneid name = "@" value = linode_instance.prod.ip_address type = "A" ttl = local.dns_ttl } resource "cloudflare_record" "splat" { depends_on = [ linode_instance.prod, cloudflare_record.functionalidiot_com_ns1, cloudflare_record.functionalidiot_com_ns2 ] zone_id = var.cloudflare_functionalidiot_zoneid name = "*" value = linode_instance.prod.ip_address type = "A" ttl = local.dns_ttl } # resource "cloudflare_record" "root6" { # depends_on = [ # linode_instance.prod, # cloudflare_record.functionalidiot_com_ns1, # cloudflare_record.functionalidiot_com_ns2 ] # zone_id = var.cloudflare_functionalidiot_zoneid # name = "@" # value = local.ipv6 # type = "AAAA" # ttl = local.dns_ttl # } # resource "cloudflare_record" "splat6" { # depends_on = [ # linode_instance.prod, # cloudflare_record.functionalidiot_com_ns1, # cloudflare_record.functionalidiot_com_ns2 ] # zone_id = var.cloudflare_functionalidiot_zoneid # name = "*" # value = local.ipv6 # type = "AAAA" # ttl = local.dns_ttl # proxied = true # } resource "cloudflare_record" "www" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "www" value = "functionalidiot.com" type = "CNAME" ttl = local.dns_ttl } resource "cloudflare_record" "git" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "git" value = "functionalidiot.com" type = "CNAME" ttl = local.dns_ttl } # MX record setup for fastmail dkim/spf on root and all subdomains resource "cloudflare_record" "mx-cname-1" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "fm1._domainkey" value = "fm1.functionalidiot.com.dkim.fmhosted.com" type = "CNAME" ttl = local.dns_ttl } resource "cloudflare_record" "mx-cname-2" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "fm2._domainkey" value = "fm2.functionalidiot.com.dkim.fmhosted.com" type = "CNAME" ttl = local.dns_ttl } resource "cloudflare_record" "mx-cname-3" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "fm3._domainkey" value = "fm3.functionalidiot.com.dkim.fmhosted.com" type = "CNAME" ttl = local.dns_ttl } resource "cloudflare_record" "mx-10-root" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "@" value = "in1-smtp.messagingengine.com" type = "MX" priority = "10" ttl = local.dns_ttl } resource "cloudflare_record" "mx-20-root" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "@" value = "in2-smtp.messagingengine.com" type = "MX" priority = "20" ttl = local.dns_ttl } resource "cloudflare_record" "mx-10-splat" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "*" value = "in1-smtp.messagingengine.com" type = "MX" priority = "10" ttl = local.dns_ttl } resource "cloudflare_record" "mx-20-splat" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "*" value = "in2-smtp.messagingengine.com" type = "MX" priority = "20" ttl = local.dns_ttl } resource "cloudflare_record" "txt-mx-root" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "@" value = "v=spf1 include:spf.messagingengine.com ?all" type = "TXT" ttl = local.dns_ttl } resource "cloudflare_record" "txt-mx-splat" { depends_on = [ cloudflare_record.root, cloudflare_record.splat ] zone_id = var.cloudflare_functionalidiot_zoneid name = "*" value = "v=spf1 include:spf.messagingengine.com ?all" type = "TXT" ttl = local.dns_ttl } resource "cloudflare_record" "functionalidiot_com_ns1" { zone_id = var.cloudflare_functionalidiot_zoneid name = "@" value = "mitch.ns.cloudflare.com" type = "NS" } resource "cloudflare_record" "functionalidiot_com_ns2" { zone_id = var.cloudflare_functionalidiot_zoneid name = "@" value = "tegan.ns.cloudflare.com" type = "NS" } resource "null_resource" "functionalidiot_com_setup_new_gitea" { depends_on = [ null_resource.gitea_install ] count = fileexists("${path.module}/attic/gitea.txz") ? 0 : 1 connection { host = linode_instance.prod.ip_address user = "root" private_key = file("~/.ssh/id_rsa") } provisioner "file" { source = "setup_gitea.sh" destination = "/tmp/setup_gitea.sh" } provisioner "remote-exec" { inline = [< /var/www/default/htdocs/index.html rc-service nginx restart FIN ] } }