Files

176 lines
4.1 KiB
HCL

variable "rg_name" {
type = string
}
variable "location" {
type = string
}
variable "base_name" {
type = string
default = null
}
variable "name" {
type = string
default = null
validation {
condition = (
(var.name != null && trimspace(var.name) != "") ||
(var.base_name != null && trimspace(var.base_name) != "")
)
error_message = "Provide name or base_name with a non-empty value."
}
}
variable "account_tier" {
type = string
default = "Standard"
}
variable "account_replication_type" {
type = string
default = "LRS"
}
variable "allow_nested_items_to_be_public" {
type = bool
default = false
}
variable "public_network_access_enabled" {
type = bool
default = true
}
variable "enable_blob_soft_delete" {
type = bool
default = false
}
variable "blob_soft_delete_retention_days" {
type = number
default = null
validation {
condition = (
var.enable_blob_soft_delete == false ||
var.blob_soft_delete_retention_days == null ||
(var.blob_soft_delete_retention_days >= 1 && var.blob_soft_delete_retention_days <= 365)
)
error_message = "blob_soft_delete_retention_days must be between 1 and 365."
}
}
variable "enable_container_soft_delete" {
type = bool
default = false
}
variable "container_soft_delete_retention_days" {
type = number
default = null
validation {
condition = (
var.enable_container_soft_delete == false ||
var.container_soft_delete_retention_days == null ||
(var.container_soft_delete_retention_days >= 1 && var.container_soft_delete_retention_days <= 365)
)
error_message = "container_soft_delete_retention_days must be between 1 and 365."
}
}
variable "enable_blob_versioning" {
type = bool
default = false
}
variable "enable_blob_change_feed" {
type = bool
default = false
}
variable "enable_point_in_time_restore_for_containers" {
type = bool
default = false
validation {
condition = (
var.enable_point_in_time_restore_for_containers == false ||
(
var.enable_blob_soft_delete &&
var.enable_blob_versioning &&
var.enable_blob_change_feed
)
)
error_message = "enable_point_in_time_restore_for_containers requires enable_blob_soft_delete, enable_blob_versioning, and enable_blob_change_feed to be true."
}
}
variable "point_in_time_restore_days" {
type = number
default = null
validation {
condition = (
var.enable_point_in_time_restore_for_containers == false ||
var.point_in_time_restore_days != null
)
error_message = "point_in_time_restore_days must be set when enable_point_in_time_restore_for_containers is true."
}
validation {
condition = (
var.enable_point_in_time_restore_for_containers == false ||
(var.point_in_time_restore_days >= 1 && var.point_in_time_restore_days <= 365)
)
error_message = "point_in_time_restore_days must be between 1 and 365."
}
validation {
condition = (
var.enable_point_in_time_restore_for_containers == false ||
var.point_in_time_restore_days < coalesce(var.blob_soft_delete_retention_days, 7)
)
error_message = "point_in_time_restore_days must be less than blob_soft_delete_retention_days."
}
}
variable "tags" {
type = map(string)
default = {}
description = "A map of tags to apply to the storage account resource."
}
variable "containers" {
type = map(object({
name = string
container_access_type = string
}))
default = {}
# Separate validations to provide specific error messages for each condition
validation {
condition = alltrue([
for container in values(var.containers) : (
container.name != null &&
trimspace(container.name) != ""
)
])
error_message = "container name must be a non-empty string."
}
validation {
condition = alltrue([
for container in values(var.containers) :
contains(["private", "blob", "container"], container.container_access_type)
])
error_message = "container_access_type must be one of 'private', 'blob', or 'container'."
}
}