tf/modules/storage/amlfs/main.tf (70 lines of code) (raw):
data azuread_service_principal lustre_sp {
display_name = "HPC Cache Resource Provider"
}
data azurerm_storage_account hsm {
count = var.enable_hsm ? 1 : 0
name = var.hsm_sa.storage_acct_name
resource_group_name = var.hsm_sa.rg
}
data azurerm_subnet amlfs_subnet {
name = var.vnet.subnet
virtual_network_name = var.vnet.name
resource_group_name = var.vnet.rg
}
resource azurerm_role_assignment storage_acct_contributor {
count = var.enable_hsm ? 1 : 0
role_definition_name = "Storage Account Contributor"
principal_id = data.azuread_service_principal.lustre_sp.object_id
scope = data.azurerm_storage_account.hsm[0].id
}
resource azurerm_role_assignment blob_data_contributor {
count = var.enable_hsm ? 1 : 0
role_definition_name = "Storage Blob Data Contributor"
principal_id = data.azuread_service_principal.lustre_sp.object_id
scope = data.azurerm_storage_account.hsm[0].id
}
data azurerm_storage_container existing_data {
count = var.enable_hsm && !var.hsm_sa.create_containers ? 1 : 0
name = var.hsm_sa.data_container_name
storage_account_name = data.azurerm_storage_account.hsm[0].name
}
data azurerm_storage_container existing_logging {
count = var.enable_hsm && !var.hsm_sa.create_containers ? 1 : 0
name = var.hsm_sa.logging_container_name
storage_account_name = data.azurerm_storage_account.hsm[0].name
}
resource azurerm_storage_container data {
count = var.enable_hsm && var.hsm_sa.create_containers ? 1 : 0
name = var.hsm_sa.data_container_name
storage_account_name = data.azurerm_storage_account.hsm[0].name
}
resource "azurerm_storage_container" "logging" {
count = var.enable_hsm && var.hsm_sa.create_containers ? 1 : 0
name = var.hsm_sa.logging_container_name
storage_account_name = data.azurerm_storage_account.hsm[0].name
}
resource azurerm_managed_lustre_file_system amlfs {
name = var.name_prefix
resource_group_name = var.rg
location = var.location
sku_name = var.sku
storage_capacity_in_tb = var.storageCapacity
subnet_id = data.azurerm_subnet.amlfs_subnet.id
zones = var.zone
maintenance_window {
day_of_week = var.maintenance.dayOfWeek
time_of_day_in_utc = var.maintenance.timeOfDay
}
dynamic hsm_setting {
for_each = var.enable_hsm ? [1] : []
content {
container_id = var.hsm_sa.create_containers ? azurerm_storage_container.data[0].resource_manager_id : data.azurerm_storage_container.existing_data[0].id
logging_container_id = var.hsm_sa.create_containers ? azurerm_storage_container.logging[0].resource_manager_id : data.azurerm_storage_container.existing_logging[0].id
import_prefix = var.hsm_sa.import_path
}
}
depends_on = [
azurerm_role_assignment.storage_acct_contributor,
azurerm_role_assignment.blob_data_contributor,
]
}