Azure Block Storage Deployment

main.tf

module "azure_pfmp" {
  # Here the source points to the a local instance of the submodule in the modules folder, if you have and instance of the modules folder locally.
  # source         = "../../modules/azure_pfmp"

  source  = "dell/modules/powerflex//modules/azure_pfmp"
  version = "x.x.x" // pull in the latest version like "1.2.0"

  bastion_subnet = var.bastion_subnet
  cluster = {
    node_count        = var.cluster_node_count
    is_multi_az       = var.is_multi_az
    deployment_type   = var.deployment_type
    data_disk_count   = var.data_disk_count
    data_disk_size_gb = var.data_disk_size_gb
  }
  data_disk_logical_sector_size  = var.data_disk_logical_sector_size
  enable_bastion                 = var.enable_bastion
  enable_jumphost                = var.enable_jumphost
  enable_sql_workload_vm         = var.enable_sql_workload_vm
  existing_resource_group        = var.existing_resource_group
  installer_gallary_image        = var.installer_gallary_image
  location                       = var.location
  login_credential               = var.login_credential
  pfmp_lb_ip                     = var.pfmp_lb_ip
  prefix                         = var.prefix
  ssh_key                        = var.ssh_key
  storage_instance_gallary_image = var.storage_instance_gallary_image
  subnets                        = var.subnets
  vnet_address_space             = var.vnet_address_space
}

output "bastion_tunnel" {
  value = module.azure_pfmp.bastion_tunnel != null ? "az network bastion tunnel --name ${module.azure_pfmp.bastion_tunnel.bastion_name} --resource-group ${module.azure_pfmp.bastion_tunnel.resource_group} --target-resource-id ${module.azure_pfmp.bastion_tunnel.installer_id} --resource-port 22 --port 1111" : null
}

output "pfmp_ip" {
  value = module.azure_pfmp.pfmp_ip
}

output "sds_nodes" {
  value = module.azure_pfmp.sds_nodes[*].ip
}

Requirements

Name Version
terraform >= 1.5.0

Providers

No providers.

Modules

Name Source Version
azure_pfmp ../../modules/azure_pfmp n/a

Resources

No resources.

Inputs

Name Description Type Default Required
prefix Prefix for Azure resource names string n/a yes
existing_resource_group Name of existing resource group to use. If not set, a new resource group will be created string null no
location Location for Azure resources, default to eastus string "eastus" no
enable_bastion Enable bastion, default to false bool false no
enable_jumphost Enable jumphost, default to false bool false no
enable_sql_workload_vm Enable sql workload vm, default to false bool false no
cluster_node_count PowerFlex cluster node number, default to 5 number 5 no
is_multi_az Whether to deploy the PowerFlex cluster in single or multiple availability zones, default is false bool false no
deployment_type PowerFlex cluster deployment type, Possible values are: ‘balanced’, ‘optimized_v1’ or ‘optimized_v2’. Default is balanced string "balanced" no
data_disk_count The number of data disks attached to each PowerFlex cluster node, default is 20 number 20 no
data_disk_size_gb The size of each data disk in GB, default is 512 number 512 no
data_disk_logical_sector_size Logical Sector Size. Possible values are: 512 and 4096. Default is 512 number 512 no
login_credential Login credential for Azure VMs
object({
username = string
password = string
})
{
username = “pflexuser”
password = “PowerFlex123!"
}
no
ssh_key SSH key pair for Azure VMs
object({
public = string
private = string
})
{
public = “./ssh/azure.pem.pub”
private = “./ssh/azure.pem”
}
no
storage_instance_gallary_image PowerFlex storage instance image in local gallary. If set, the storage instance vm will be created from this image
object({
name = string
image_name = string
gallery_name = string
resource_group_name = string
})
null no
installer_gallary_image PowerFlex installer image in local gallary. If set, the installer vm will be created from this image
object({
name = string
image_name = string
gallery_name = string
resource_group_name = string
})
null no
vnet_address_space Virtual network address space, default to 10.2.0.0/16 string "10.2.0.0/16" no
subnets List of subnets for the virtual network
list(object({
name = string
prefix = string
}))
[{
name = “BlockStorageSubnet”
prefix = “10.2.0.0/24”
}]
no
bastion_subnet Bastion subnet info
object({
name = string
prefix = string
})
{
name = “AzureBastionSubnet”
prefix = “10.2.1.0/26”
}
no
pfmp_lb_ip Load balancer IP for PFMP service string "10.2.0.200" no

Outputs

Name Description
bastion_tunnel n/a
sds_nodes n/a
pfmp_ip n/a