commit af00f58f92d2889f7b7dd7fcbea1ed999e4b68ce Author: alessandrovitali Date: Wed Sep 2 20:17:04 2026 +0200 add cloudflare DNS module diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..144b0be --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# macOS +.DS_Store \ No newline at end of file diff --git a/modules/cloudflare_dns/main.tf b/modules/cloudflare_dns/main.tf new file mode 100644 index 0000000..d4662ce --- /dev/null +++ b/modules/cloudflare_dns/main.tf @@ -0,0 +1,21 @@ +terraform { + required_version = ">= 1.0.0" + required_providers { + cloudflare = { source = "cloudflare/cloudflare", version = "~> 5.23.0" } + } +} + +data "cloudflare_zone" "this" { + filter = { + name = var.zone_name + } +} + +resource "cloudflare_dns_record" "this" { + zone_id = data.cloudflare_zone.this.id + name = var.record_name + type = var.record_type + content = var.record_value + proxied = var.proxied + ttl = var.proxied ? 1 : var.ttl +} \ No newline at end of file diff --git a/modules/cloudflare_dns/variables.tf b/modules/cloudflare_dns/variables.tf new file mode 100644 index 0000000..1e1438e --- /dev/null +++ b/modules/cloudflare_dns/variables.tf @@ -0,0 +1,35 @@ +variable "zone_name" { + type = string + description = "Apex domain of the Cloudflare zone (e.g. domain.tld)" +} + +variable "record_name" { + type = string + description = "Subdomain label to create the record for (e.g. sub → sub.domain.tld)" +} + +variable "record_type" { + type = string + description = "DNS record type: A, AAAA, CNAME, MX, TXT" +} + +variable "record_value" { + type = string + description = "Record content (IP address, target hostname, text)" +} + +variable "proxied" { + type = bool + description = "Route through the Cloudflare proxy (orange cloud)" + default = true +} + +variable "ttl" { + type = number + description = "TTL in seconds (ignored when proxied)" + default = 3600 + validation { + condition = var.ttl >= 60 && var.ttl <= 86400 + error_message = "ttl must be between 60 and 86400 seconds" + } +} \ No newline at end of file