main.account.tf (75 lines of code) (raw):
resource "azapi_resource" "anf_account" {
type = "Microsoft.NetApp/netAppAccounts@2024-07-01"
body = {
properties = {
activeDirectories = var.active_directories != null ? [
for ad in var.active_directories : {
username = ad.adds_admin_user_name
password = ad.adds_admin_password
domain = ad.adds_domain
dns = join(",", ad.dns_servers)
site = ad.adds_site_name
smbServerName = ad.smb_server_name
organizationalUnit = ad.adds_ou
administrators = ad.administrators
backupOperators = ad.backup_operators
securityOperators = ad.security_operators
serverRootCACertificate = ad.server_root_ca_certificate
adName = ad.kerberos_ad_server_name
kdcIP = ad.kerberos_kdc_ip
ldapSearchScope = ad.ldap_search_scope != null ? {
userDN = ad.ldap_search_scope.user_dn
groupDN = ad.ldap_search_scope.group_dn
groupMembershipFilter = ad.ldap_search_scope.group_membership_filter
} : {}
allowLocalNfsUsersWithLdap = ad.local_nfs_users_with_ldap_allowed
aesEncryption = ad.aes_encryption_enabled
ldapOverTLS = ad.ldap_over_tls_enabled
ldapSigning = ad.ldap_signing_enabled
}
] : null
encryption = var.customer_managed_key != null ? {
identity = {
userAssignedIdentity = var.customer_managed_key.user_assigned_identity.resource_id
}
keySource = var.customer_managed_key.key_source
keyVaultProperties = {
keyVaultUri = local.cmk_key_vault_uri
keyVaultResourceId = var.customer_managed_key.key_vault_resource_id
keyVaultKeyName = var.customer_managed_key.key_name
}
} : {
identity = null
keySource = "Microsoft.NetApp"
keyVaultProperties = null
}
}
}
location = var.location
name = var.name
parent_id = provider::azapi::subscription_resource_id(local.subscription_id, "Microsoft.Resources/resourceGroups", [var.resource_group_name])
retry = {
error_message_regex = ["CannotDeleteResource"]
}
schema_validation_enabled = false
tags = var.tags
dynamic "identity" {
for_each = local.managed_identities.system_assigned_user_assigned
content {
type = identity.value.type
identity_ids = identity.value.user_assigned_resource_ids
}
}
}
resource "azapi_resource" "anf_account_lock" {
count = var.lock != null ? 1 : 0
type = "Microsoft.Authorization/locks@2020-05-01"
body = {
properties = {
level = var.lock.kind
notes = var.lock.kind == "CanNotDelete" ? "Cannot delete the resource or its child resources." : "Cannot delete or modify the resource or its child resources."
}
}
name = coalesce(var.lock.name, "lock-${var.lock.kind}")
parent_id = azapi_resource.anf_account.id
}