3.File.Storage/Hammerspace/main.tf (204 lines of code) (raw):

module core { source = "../../0.Core.Foundation/config" } variable resourceGroupName { type = string } variable hammerspace { type = object({ version = string namePrefix = string domainName = string metadata = object({ machine = object({ namePrefix = string size = string count = number osDisk = object({ storageType = string cachingMode = string sizeGB = number }) dataDisk = object({ storageType = string cachingMode = string sizeGB = number }) adminLogin = object({ userName = string userPassword = string sshKeyPublic = string passwordAuth = object({ disable = bool }) }) }) network = object({ acceleration = object({ enable = bool }) }) }) data = object({ machine = object({ namePrefix = string size = string count = number osDisk = object({ storageType = string cachingMode = string sizeGB = number }) dataDisk = object({ storageType = string cachingMode = string sizeGB = number count = number raid0 = object({ enable = bool }) }) adminLogin = object({ userName = string userPassword = string sshKeyPublic = string passwordAuth = object({ disable = bool }) }) }) network = object({ acceleration = object({ enable = bool }) }) }) proximityPlacementGroup = object({ enable = bool }) storageAccounts = list(object({ enable = bool name = string accessKey = string })) shares = list(object({ enable = bool name = string path = string size = number export = string })) volumes = list(object({ enable = bool name = string type = string path = string node = object({ name = string type = string address = string }) assimilation = object({ enable = bool share = object({ name = string path = object({ source = string destination = string }) }) }) })) volumeGroups = list(object({ enable = bool name = string volumeNames = list(string) })) }) } variable dnsRecord { type = object({ name = string ttlSeconds = number metadataTier = object({ enable = bool }) }) } variable virtualNetwork { type = object({ name = string subnetName = string resourceGroupName = string privateDNS = object({ zoneName = string resourceGroupName = string }) }) } variable activeDirectory { type = object({ enable = bool domain = object({ name = string }) machine = object({ name = string adminLogin = object({ userName = string userPassword = string }) }) }) } data terraform_remote_state core { backend = "local" config = { path = "../0.Core.Foundation/terraform.tfstate" } } data azurerm_user_assigned_identity studio { name = data.terraform_remote_state.core.outputs.managedIdentity.name resource_group_name = data.terraform_remote_state.core.outputs.resourceGroup.name } data azurerm_key_vault studio { name = data.terraform_remote_state.core.outputs.keyVault.name resource_group_name = data.terraform_remote_state.core.outputs.resourceGroup.name } data azurerm_key_vault_secret admin_username { name = data.terraform_remote_state.core.outputs.keyVault.secretName.adminUsername key_vault_id = data.azurerm_key_vault.studio.id } data azurerm_key_vault_secret admin_password { name = data.terraform_remote_state.core.outputs.keyVault.secretName.adminPassword key_vault_id = data.azurerm_key_vault.studio.id } data azurerm_key_vault_secret ssh_key_public { name = data.terraform_remote_state.core.outputs.keyVault.secretName.sshKeyPublic key_vault_id = data.azurerm_key_vault.studio.id } data azurerm_virtual_network studio { name = var.virtualNetwork.name resource_group_name = var.virtualNetwork.resourceGroupName } data azurerm_subnet storage { name = var.virtualNetwork.subnetName resource_group_name = data.azurerm_virtual_network.studio.resource_group_name virtual_network_name = data.azurerm_virtual_network.studio.name } locals { hsImage = { publisher = "Hammerspace" product = "Hammerspace_BYOL_5_0" name = "Hammerspace_5_0" version = var.hammerspace.version } hsSubnetSize = "/${reverse(split("/", data.azurerm_subnet.storage.address_prefixes[0]))[0]}" } resource azurerm_resource_group hammerspace { name = var.resourceGroupName location = data.azurerm_virtual_network.studio.location tags = { AAA = basename(path.cwd) } }