variables.tf (204 lines of code) (raw):

variable "location" { type = string description = "The Azure location where the resources will be deployed." nullable = false } variable "name" { type = string description = "Name of public IP address resource" validation { condition = can(regex("^[a-zA-Z0-9]([a-zA-Z0-9._-]{0,78}[a-zA-Z0-9_])?$", var.name)) error_message = "The name must be between 3 and 24 characters long and can only contain lowercase letters, numbers and dashes." } } # This is required for most resource modules variable "resource_group_name" { type = string description = "The resource group where the resources will be deployed." } variable "allocation_method" { type = string default = "Static" description = "The allocation method to use." validation { condition = can(regex("^(Static|Dynamic)$", var.allocation_method)) error_message = "The allocation method must be either 'Static' or 'Dynamic'." } } variable "ddos_protection_mode" { type = string default = "VirtualNetworkInherited" description = "The DDoS protection mode to use." validation { condition = can(regex("^(Disabled|Enabled|VirtualNetworkInherited)$", var.ddos_protection_mode)) error_message = "The DDoS protection mode must be either 'Basic' or 'Standard'." } } variable "ddos_protection_plan_id" { type = string default = null description = "The ID of the DDoS protection plan to associate with the public IP address. This is required if `ddos_protection_mode` is set to `Standard`." } variable "diagnostic_settings" { type = map(object({ name = optional(string, null) log_categories = optional(set(string), []) log_groups = optional(set(string), ["allLogs"]) metric_categories = optional(set(string), ["AllMetrics"]) log_analytics_destination_type = optional(string, "Dedicated") workspace_resource_id = optional(string, null) storage_account_resource_id = optional(string, null) event_hub_authorization_rule_resource_id = optional(string, null) event_hub_name = optional(string, null) marketplace_partner_resource_id = optional(string, null) })) default = {} description = <<DESCRIPTION A map of diagnostic settings to create on the ddos protection plan. The map key is deliberately arbitrary to avoid issues where map keys maybe unknown at plan time. - `name` - (Optional) The name of the diagnostic setting. One will be generated if not set, however this will not be unique if you want to create multiple diagnostic setting resources. - `log_categories` - (Optional) A set of log categories to send to the log analytics workspace. Defaults to `[]`. - `log_groups` - (Optional) A set of log groups to send to the log analytics workspace. Defaults to `["allLogs"]`. - `metric_categories` - (Optional) A set of metric categories to send to the log analytics workspace. Defaults to `["AllMetrics"]`. - `log_analytics_destination_type` - (Optional) The destination type for the diagnostic setting. Possible values are `Dedicated` and `AzureDiagnostics`. Defaults to `Dedicated`. - `workspace_resource_id` - (Optional) The resource ID of the log analytics workspace to send logs and metrics to. - `storage_account_resource_id` - (Optional) The resource ID of the storage account to send logs and metrics to. - `event_hub_authorization_rule_resource_id` - (Optional) The resource ID of the event hub authorization rule to send logs and metrics to. - `event_hub_name` - (Optional) The name of the event hub. If none is specified, the default event hub will be selected. - `marketplace_partner_resource_id` - (Optional) The full ARM resource ID of the Marketplace resource to which you would like to send Diagnostic LogsLogs. DESCRIPTION nullable = false validation { condition = alltrue([for _, v in var.diagnostic_settings : contains(["Dedicated", "AzureDiagnostics"], v.log_analytics_destination_type)]) error_message = "Log analytics destination type must be one of: 'Dedicated', 'AzureDiagnostics'." } validation { condition = alltrue( [ for _, v in var.diagnostic_settings : v.workspace_resource_id != null || v.storage_account_resource_id != null || v.event_hub_authorization_rule_resource_id != null || v.marketplace_partner_resource_id != null ] ) error_message = "At least one of `workspace_resource_id`, `storage_account_resource_id`, `marketplace_partner_resource_id`, or `event_hub_authorization_rule_resource_id`, must be set." } } variable "domain_name_label" { type = string default = null description = "The domain name label for the public IP address." } variable "edge_zone" { type = string default = null description = "The edge zone to use for the public IP address. This is required if `sku_tier` is set to `Global`." } variable "enable_telemetry" { type = bool default = true description = <<DESCRIPTION This variable controls whether or not telemetry is enabled for the module. For more information see https://aka.ms/avm/telemetryinfo. If it is set to false, then no telemetry will be collected. DESCRIPTION } variable "idle_timeout_in_minutes" { type = number default = 4 description = "The idle timeout in minutes." validation { condition = can(regex("^[0-9]{1,4}$", var.idle_timeout_in_minutes)) error_message = "The idle timeout must be between 1 and 4 digits long." } } variable "ip_tags" { type = map(string) default = {} description = "The IP tags for the public IP address" } variable "ip_version" { type = string default = "IPv4" description = "The IP version to use." validation { condition = can(regex("^(IPv4|IPv6)$", var.ip_version)) error_message = "The IP version must be either 'IPv4' or 'IPv6'." } } variable "lock" { type = object({ kind = string name = optional(string, null) }) default = null description = <<DESCRIPTION Controls the Resource Lock configuration for this resource. The following properties can be specified: - `kind` - (Required) The type of lock. Possible values are `\"CanNotDelete\"` and `\"ReadOnly\"`. - `name` - (Optional) The name of the lock. If not specified, a name will be generated based on the `kind` value. Changing this forces the creation of a new resource. DESCRIPTION validation { condition = var.lock != null ? contains(["CanNotDelete", "ReadOnly"], var.lock.kind) : true error_message = "Lock kind must be either `\"CanNotDelete\"` or `\"ReadOnly\"`." } } variable "public_ip_prefix_id" { type = string default = null description = "The ID of the public IP prefix to associate with the public IP address." } variable "reverse_fqdn" { type = string default = null description = "The reverse FQDN for the public IP address. This must be a valid FQDN. If you specify a reverse FQDN, you cannot specify a DNS name label. Not all regions support this." } variable "role_assignments" { type = map(object({ role_definition_id_or_name = string principal_id = string description = optional(string, null) skip_service_principal_aad_check = optional(bool, false) condition = optional(string, null) condition_version = optional(string, null) delegated_managed_identity_resource_id = optional(string, null) principal_type = optional(string, null) })) default = {} description = <<DESCRIPTION A map of role assignments to create on the <RESOURCE>. The map key is deliberately arbitrary to avoid issues where map keys maybe unknown at plan time. - `role_definition_id_or_name` - The ID or name of the role definition to assign to the principal. - `principal_id` - The ID of the principal to assign the role to. - `description` - (Optional) The description of the role assignment. - `skip_service_principal_aad_check` - (Optional) If set to true, skips the Azure Active Directory check for the service principal in the tenant. Defaults to false. - `condition` - (Optional) The condition which will be used to scope the role assignment. - `condition_version` - (Optional) The version of the condition syntax. Leave as `null` if you are not using a condition, if you are then valid values are '2.0'. - `delegated_managed_identity_resource_id` - (Optional) The delegated Azure Resource Id which contains a Managed Identity. Changing this forces a new resource to be created. This field is only used in cross-tenant scenario. - `principal_type` - (Optional) The type of the `principal_id`. Possible values are `User`, `Group` and `ServicePrincipal`. It is necessary to explicitly set this attribute when creating role assignments if the principal creating the assignment is constrained by ABAC rules that filters on the PrincipalType attribute. > Note: only set `skip_service_principal_aad_check` to true if you are assigning a role to a service principal. DESCRIPTION nullable = false } variable "sku" { type = string default = "Standard" description = "The SKU of the public IP address." validation { condition = can(regex("^(Basic|Standard)$", var.sku)) error_message = "The SKU must be either 'Basic' or 'Standard'." } } variable "sku_tier" { type = string default = "Regional" #check this with Seif description = "The tier of the SKU of the public IP address." validation { condition = can(regex("^(Global|Regional)$", var.sku_tier)) error_message = "The SKU tier must be either 'Global' or 'Regional'." } } variable "tags" { type = map(string) default = null description = "(Optional) Tags of the resource." } variable "zones" { type = set(number) default = [1, 2, 3] description = "A set of availability zones to use." }