Expose a few more configurable items and add input validators

This commit is contained in:
2026-08-12 20:27:42 -05:00
parent 66d4f2b775
commit 4ee9d1efdc
10 changed files with 49 additions and 15 deletions
+3 -3
View File
@@ -1,18 +1,18 @@
resource "digitalocean_droplet" "this" {
backups = true
backups = var.backups
backup_policy {
plan = var.backup_policy_plan
weekday = var.backup_policy_weekday
hour = var.backup_policy_hour
}
image = var.image_name
ipv6 = true
ipv6 = var.ipv6
lifecycle {
ignore_changes = [
image,
]
}
monitoring = true
monitoring = var.monitoring
name = "${var.host_name}.${var.domain_name}"
region = var.region
ssh_keys = var.ssh_keys
+5
View File
@@ -0,0 +1,5 @@
variable "backups" {
default = true
description = "Boolean controlling if backups are made"
type = bool
}
+5 -2
View File
@@ -1,6 +1,9 @@
variable "domain_name" {
description = "The domain name to use for the droplet's DNS record"
default = "example.com"
type = string
}
validation {
condition = can(regex("^[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$", var.domain_name))
error_message = "The domain name must be a valid fully-qualified domain name (e.g., example.com)."
}
}
+5 -2
View File
@@ -1,6 +1,9 @@
variable "host_name" {
description = "The hostname for the droplet"
default = "hello-world"
type = string
}
validation {
condition = can(regex("^[a-zA-Z0-9-]+$", var.host_name))
error_message = "The host name can only contain alphanumeric characters and hyphens."
}
}
+5 -2
View File
@@ -1,6 +1,9 @@
variable "image_name" {
description = "The image ID or slug to use for the droplet"
default = "fedora-42-x64"
type = string
}
validation {
condition = can(regex("^[a-zA-Z0-9-]+$", var.image_name))
error_message = "The image name must be a valid slug or ID."
}
}
+5
View File
@@ -0,0 +1,5 @@
variable "ipv6" {
default = true
description = "Boolean controlling if IPv6 is enabled"
type = bool
}
+5
View File
@@ -0,0 +1,5 @@
variable "monitoring" {
default = true
description = "Boolean controlling whether monitoring agent is installed"
type = bool
}
+5 -2
View File
@@ -1,6 +1,9 @@
variable "region" {
description = "The region where the droplet will be created"
default = "nyc3"
type = string
}
validation {
condition = can(regex("^[a-z]{3}[0-9]$", var.region))
error_message = "The region must be a valid DigitalOcean region format (e.g., nyc3, sfo3)."
}
}
+5 -2
View File
@@ -1,6 +1,9 @@
variable "size" {
description = "The slug indicating the size of the droplet"
default = "s-1vcpu-1gb"
type = string
}
validation {
condition = can(regex("^[a-zA-Z0-9-]+$", var.size))
error_message = "The size must be a valid DigitalOcean size slug (e.g., s-1vcpu-1gb)."
}
}
+6 -2
View File
@@ -1,6 +1,10 @@
variable "tags" {
description = "A list of tags to apply to the droplet"
default = []
description = "A list of tags to apply to the droplet"
type = list(string)
}
validation {
condition = alltrue([for t in var.tags : can(regex("^[a-zA-Z0-9-_]+$", t))]) || length(var.tags) == 0
error_message = "Tags must only contain alphanumeric characters, hyphens, and underscores."
}
}