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)
}
}