This commit is contained in:
Mike McFetridge
2026-07-20 09:23:17 -04:00
parent c1315882da
commit 72272e4006
3179 changed files with 562960 additions and 14 deletions
@@ -0,0 +1,29 @@
data "cloudflare_zone" "zone" {
zone_id = "<< cloudflare_zone_id >>"
}
resource "cloudflare_dns_record" "<< resource_name >>" {
zone_id = data.cloudflare_zone.zone.zone_id
name = "<< name >>"
type = "<< record_type >>"
<%- if record_type == "A" %>
content = "<< ipv4_address >>"
proxied = << proxied | lower >>
<%- endif %>
<%- if record_type == "AAAA" %>
content = "<< ipv6_address >>"
proxied = << proxied | lower >>
<%- endif %>
<%- if record_type == "CNAME" %>
content = "<< target_hostname >>"
proxied = << proxied | lower >>
<%- endif %>
<%- if record_type == "TXT" %>
content = "<< text_value >>"
<%- endif %>
<%- if record_type == "MX" %>
content = "<< mail_server >>"
priority = << priority >>
<%- endif %>
ttl = << ttl >>
}
@@ -0,0 +1,175 @@
{
"slug": "cloudflare-dns-record",
"kind": "terraform",
"metadata": {
"name": "Cloudflare DNS Record",
"description": "Creates a single Cloudflare DNS record for A, AAAA, CNAME, TXT, or MX with type-specific inputs, TTL, and proxying where supported.",
"icon": {
"provider": "selfhst",
"id": "cloudflare",
"color": "default"
},
"draft": false,
"version": {
"name": "1.0.0",
"source_dep_name": "manual/cloudflare-dns-record"
}
},
"variables": [
{
"name": "terraform",
"title": "Terraform",
"items": [
{
"name": "resource_name",
"title": "Resource Name",
"type": "str",
"default": "dns_record",
"config": {
"placeholder": "dns_record"
}
}
]
},
{
"name": "record",
"title": "DNS Record",
"items": [
{
"name": "cloudflare_zone_id",
"title": "Cloudflare Zone ID",
"type": "str",
"config": {
"placeholder": "123456789"
},
"required": true
},
{
"name": "name",
"title": "Record Name",
"description": "DNS record name (use @ for the root domain).",
"type": "str",
"default": "app",
"config": {
"placeholder": "app"
}
},
{
"name": "record_type",
"title": "DNS record type",
"type": "enum",
"default": "A",
"config": {
"options": [
"A",
"AAAA",
"CNAME",
"TXT",
"MX"
]
}
},
{
"name": "ttl",
"title": "TTL",
"description": "Time to live (1 = automatic, or 60-86400 seconds)",
"type": "int",
"default": 1,
"config": {
"placeholder": "1",
"unit": "seconds"
}
},
{
"name": "ipv4_address",
"title": "IPv4 Address",
"description": "IPv4 address for an A record.",
"type": "str",
"required": true,
"needs": [
"record_type=A"
],
"config": {
"placeholder": "192.0.2.1"
}
},
{
"name": "ipv6_address",
"title": "IPv6 Address",
"description": "IPv6 address for an AAAA record.",
"type": "str",
"required": true,
"needs": [
"record_type=AAAA"
],
"config": {
"placeholder": "2001:db8::1"
}
},
{
"name": "target_hostname",
"title": "Target Hostname",
"description": "Canonical hostname target for a CNAME record.",
"type": "str",
"required": true,
"needs": [
"record_type=CNAME"
],
"config": {
"placeholder": "origin.example.com"
}
},
{
"name": "text_value",
"title": "TXT Value",
"description": "Text value for a TXT record.",
"type": "str",
"required": true,
"needs": [
"record_type=TXT"
],
"config": {
"placeholder": "v=spf1 include:_spf.example.com ~all",
"textarea": true
}
},
{
"name": "mail_server",
"title": "Mail Server",
"description": "Mail server hostname for an MX record.",
"type": "str",
"required": true,
"needs": [
"record_type=MX"
],
"config": {
"placeholder": "mail.example.com"
}
},
{
"name": "priority",
"title": "Priority",
"description": "MX record priority (lower value = higher priority).",
"type": "int",
"default": 10,
"required": true,
"needs": [
"record_type=MX"
],
"config": {
"placeholder": "10"
}
},
{
"name": "proxied",
"title": "Proxy",
"type": "bool",
"default": true,
"needs": [
"record_type=A,AAAA,CNAME"
]
}
]
}
]
}