176 lines
4.1 KiB
HCL
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'."
|
|
}
|
|
}
|