variables.tf (126 lines of code) (raw):
variable "location" {
type = string
description = "Required. The Azure region for deployment of the this resource."
nullable = false
}
variable "name" {
type = string
description = "Required. The name of the this resource."
validation {
condition = can(regex("^[a-zA-Z0-9_().-]{1,89}[a-zA-Z0-9_()-]$", var.name))
error_message = <<ERROR_MESSAGE
The resource group name must meet the following requirements:
- `Between 1 and 90 characters long.`
- `Can only contain Alphanumerics, underscores, parentheses, hyphens, periods.`
- `Cannot end in a period`
ERROR_MESSAGE
}
}
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 "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\"`."
}
}
# tflint-ignore: terraform_heredoc_usage
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
Optional. A map of role assignments to create on this resource. The map key is deliberately arbitrary to avoid issues where map keys maybe unknown at plan time.
- `role_definition_id_or_name` - (Required) The ID or name of the role definition to assign to the principal.
- `principal_id` - (Required) 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. 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. NOTE:
this field is only used in cross tenant scenario.
> Note: only set `skip_service_principal_aad_check` to true if you are assigning a role to a service principal.
Example Input:
```hcl
role_assignments = {
"role_assignment1" = {
role_definition_id_or_name = "Reader"
principal_id = "4179302c-702e-4de7-a061-beacd0a1be09"
},
"role_assignment2" = {
role_definition_id_or_name = "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1" // Storage Blob Data Reader Role Guid
principal_id = "4179302c-702e-4de7-a061-beacd0a1be09"
skip_service_principal_aad_check = false
condition_version = "2.0"
condition = <<-EOT
(
(
!(ActionMatches{'Microsoft.Authorization/roleAssignments/write'})
)
OR
(
@Request[Microsoft.Authorization/roleAssignments:RoleDefinitionId]
ForAnyOfAnyValues:GuidEquals {4179302c-702e-4de7-a061-beacd0a1be09}
)
)
AND
(
(
!(ActionMatches{'Microsoft.Authorization/roleAssignments/delete'})
)
OR
(
@Resource[Microsoft.Authorization/roleAssignments:RoleDefinitionId]
ForAnyOfAnyValues:GuidEquals {dc887ae1-fe50-4307-be53-213ff08f3c0b}
)
)
EOT
}
}
```
DESCRIPTION
nullable = false
validation {
condition = alltrue(
[for role in var.role_assignments :
can(regex("^/providers/Microsoft\\.Authorization/roleDefinitions/[0-9a-fA-F-]+$", role.role_definition_id_or_name))
||
can(regex("^[[:alpha:]]+?", role.role_definition_id_or_name))
]
)
error_message = <<ERROR_MESSAGE
role_definition_id_or_name must have the following format:
- Using the role definition Id : `/providers/Microsoft.Authorization/roleDefinitions/<role_guid>`
- Using the role name: Reader | "Storage Blob Data Reader"
ERROR_MESSAGE
}
}
# tflint-ignore: terraform_unused_declarations
variable "tags" {
type = map(string)
default = null
description = "(Optional) Tags of the resource."
}