tf/anf.tf (89 lines of code) (raw):
resource "azurerm_netapp_account" "azhop" {
count = local.create_anf ? 1 : 0
name = "azhop-${random_string.resource_postfix.result}"
location = local.create_rg ? azurerm_resource_group.rg[0].location : data.azurerm_resource_group.rg[0].location
resource_group_name = local.create_rg ? azurerm_resource_group.rg[0].name : data.azurerm_resource_group.rg[0].name
dynamic "active_directory" {
for_each = local.anf_dual_protocol ? [1] : []
content {
username = local.domain_join_user
password = local.domain_join_password
smb_server_name = "anf"
dns_servers = local.private_dns_servers
domain = local.domain_name
organizational_unit = local.domain_join_ou
}
}
lifecycle {
ignore_changes = [
tags
]
}
}
resource "azurerm_netapp_pool" "anfpool" {
count = local.create_anf ? 1 : 0
name = "anfpool-${random_string.resource_postfix.result}"
account_name = azurerm_netapp_account.azhop[0].name
location = azurerm_netapp_account.azhop[0].location
resource_group_name = azurerm_netapp_account.azhop[0].resource_group_name
service_level = local.anf_service_level
size_in_tb = local.anf_size
lifecycle {
ignore_changes = [
tags
]
}
}
resource "azurerm_netapp_volume" "home" {
count = local.create_anf ? 1 : 0
name = "anfhome"
location = azurerm_netapp_account.azhop[0].location
resource_group_name = azurerm_netapp_account.azhop[0].resource_group_name
account_name = azurerm_netapp_account.azhop[0].name
pool_name = azurerm_netapp_pool.anfpool[0].name
volume_path = "home-${random_string.resource_postfix.result}"
service_level = local.anf_service_level
subnet_id = local.create_netapp_subnet ? azurerm_subnet.netapp[0].id : data.azurerm_subnet.netapp[0].id
protocols = local.anf_dual_protocol ? ["NFSv3", "CIFS"] : ["NFSv3"]
security_style = "unix"
storage_quota_in_gb = local.anf_size * 1024
network_features = "Standard"
export_policy_rule {
rule_index = 1
allowed_clients = [ "0.0.0.0/0" ]
unix_read_write = true
protocols_enabled = [ "NFSv3" ]
root_access_enabled = true
}
lifecycle {
ignore_changes = [
tags
]
}
depends_on = [
azurerm_subnet.netapp,
data.azurerm_subnet.netapp
]
}
resource "azurerm_monitor_metric_alert" "anf_alert" {
count = local.create_anf && local.create_alerts ? 1 : 0
name = "anf-alert-${random_string.resource_postfix.result}"
resource_group_name = azurerm_netapp_account.azhop[0].resource_group_name
scopes = [azurerm_netapp_volume.home[0].id]
description = "Alert when ANF volume usage exceeds ${local.anf_vol_threshold}%"
severity = 3
enabled = true
frequency = "PT1M"
window_size = "PT5M"
target_resource_type = "Microsoft.NetApp/netAppAccounts/capacityPools/volumes"
criteria {
metric_namespace = "Microsoft.NetApp/netAppAccounts/capacityPools/volumes"
metric_name = "VolumeConsumedSizePercentage"
aggregation = "Average"
operator = "GreaterThan"
threshold = local.anf_vol_threshold
}
action {
action_group_id = azurerm_monitor_action_group.azhop_action_group[0].id
}
}