Skip to content

Latest commit

 

History

History
154 lines (120 loc) · 13.6 KB

File metadata and controls

154 lines (120 loc) · 13.6 KB

Description

This module creates a DDN EXAScaler Cloud Lustre file system using exascaler-cloud-terraform.

More information about the architecture can be found at Architecture: Lustre file system in Google Cloud using DDN EXAScaler.

For more information on this and other network storage options in the Cloud HPC Toolkit, see the extended Network Storage documentation.

Warning: This file system has a license cost as described in the pricing section of the DDN EXAScaler Cloud Marketplace Solution.

Note: By default security.public_key is set to null, therefore the admin user is not created. To ensure the admin user is created, provide a public key via the security setting.

Note: This module's instances require access to Google APIs and therefore, instances must have public IP address or it must be used in a subnetwork where Private Google Access is enabled.

Mounting

To mount the DDN EXAScaler Lustre file system you must first install the DDN Lustre client and then call the proper mount command.

Both of these steps are automatically handled with the use of the use command in a selection of HPC Toolkit modules. See the compatibility matrix in the network storage doc for a complete list of supported modules. the hpc-enterprise-slurm.yaml for an example of using this module with Slurm.

If mounting is not automatically handled as described above, the DDN-EXAScaler module outputs runners that can be used with the startup-script module to install the client and mount the file system. See the following example:

  # This file system has an associated license cost.
  # https://console.developers.google.com/marketplace/product/ddnstorage/exascaler-cloud
  - id: lustrefs
    source: community/modules/file-system/DDN-EXAScaler
    use: [network1]
    settings: {local_mount: /scratch}

  - id: mount-at-startup
    source: modules/scripts/startup-script
    settings:
      runners:
      - $(lustrefs.install_ddn_lustre_client_runner)
      - $(lustrefs.mount_runner)

See additional documentation from DDN EXAScaler.

Support

EXAScaler Cloud includes self-help support with access to publicly available documents and videos. Premium support includes 24x7x365 access to DDN's experts, along with support community access, automated notifications of updates and other premium support features. For more information, visit EXAscaler Cloud on GCP.

License

Copyright 2022 Google LLC

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Requirements

Name Version
terraform >= 0.13.0

Providers

No providers.

Modules

Name Source Version
ddn_exascaler github.com/DDNStorage/exascaler-cloud-terraform//gcp a3355d50deebe45c0556b45bd599059b7c06988d

Resources

No resources.

Inputs

Name Description Type Default Required
boot Boot disk properties
object({
disk_type = string
auto_delete = bool
script_url = string
})
{
"auto_delete": true,
"disk_type": "pd-standard",
"script_url": null
}
no
cls Compute client properties
object({
node_type = string
node_cpu = string
nic_type = string
node_count = number
public_ip = bool
})
{
"nic_type": "GVNIC",
"node_count": 0,
"node_cpu": "Intel Cascade Lake",
"node_type": "n2-standard-2",
"public_ip": true
}
no
clt Compute client target properties
object({
disk_bus = string
disk_type = string
disk_size = number
disk_count = number
})
{
"disk_bus": "SCSI",
"disk_count": 0,
"disk_size": 256,
"disk_type": "pd-standard"
}
no
fsname EXAScaler filesystem name, only alphanumeric characters are allowed, and the value must be 1-8 characters long string "exacloud" no
image DEPRECATED: Source image properties any null no
instance_image Source image properties

Expected Fields:
name: Unavailable with this module.
family: The image family to use.
project: The project where the image is hosted.
map(string)
{
"family": "exascaler-cloud-6-2-rocky-linux-8-optimized-gcp",
"project": "ddn-public"
}
no
labels Labels to add to EXAScaler Cloud deployment. Key-value pairs. map(string) {} no
local_mount Mountpoint (at the client instances) for this EXAScaler system string "/shared" no
mds Metadata server properties
object({
node_type = string
node_cpu = string
nic_type = string
node_count = number
public_ip = bool
})
{
"nic_type": "GVNIC",
"node_count": 1,
"node_cpu": "Intel Cascade Lake",
"node_type": "n2-standard-32",
"public_ip": true
}
no
mdt Metadata target properties
object({
disk_bus = string
disk_type = string
disk_size = number
disk_count = number
disk_raid = bool
})
{
"disk_bus": "SCSI",
"disk_count": 1,
"disk_raid": false,
"disk_size": 3500,
"disk_type": "pd-ssd"
}
no
mgs Management server properties
object({
node_type = string
node_cpu = string
nic_type = string
node_count = number
public_ip = bool
})
{
"nic_type": "GVNIC",
"node_count": 1,
"node_cpu": "Intel Cascade Lake",
"node_type": "n2-standard-32",
"public_ip": true
}
no
mgt Management target properties
object({
disk_bus = string
disk_type = string
disk_size = number
disk_count = number
disk_raid = bool
})
{
"disk_bus": "SCSI",
"disk_count": 1,
"disk_raid": false,
"disk_size": 128,
"disk_type": "pd-standard"
}
no
mnt Monitoring target properties
object({
disk_bus = string
disk_type = string
disk_size = number
disk_count = number
disk_raid = bool
})
{
"disk_bus": "SCSI",
"disk_count": 1,
"disk_raid": false,
"disk_size": 128,
"disk_type": "pd-standard"
}
no
network_properties Network options. 'network_self_link' or 'network_properties' must be provided.
object({
routing = string
tier = string
id = string
auto = bool
mtu = number
new = bool
nat = bool
})
null no
network_self_link The self-link of the VPC network to where the system is connected. Ignored if 'network_properties' is provided. 'network_self_link' or 'network_properties' must be provided. string null no
oss Object Storage server properties
object({
node_type = string
node_cpu = string
nic_type = string
node_count = number
public_ip = bool
})
{
"nic_type": "GVNIC",
"node_count": 3,
"node_cpu": "Intel Cascade Lake",
"node_type": "n2-standard-16",
"public_ip": true
}
no
ost Object Storage target properties
object({
disk_bus = string
disk_type = string
disk_size = number
disk_count = number
disk_raid = bool
})
{
"disk_bus": "SCSI",
"disk_count": 1,
"disk_raid": false,
"disk_size": 3500,
"disk_type": "pd-ssd"
}
no
prefix EXAScaler Cloud deployment prefix (null defaults to 'exascaler-cloud') string null no
project_id Compute Platform project that will host the EXAScaler filesystem string n/a yes
security Security options
object({
admin = string
public_key = string
block_project_keys = bool
enable_os_login = bool
enable_local = bool
enable_ssh = bool
enable_http = bool
ssh_source_ranges = list(string)
http_source_ranges = list(string)
})
{
"admin": "stack",
"block_project_keys": false,
"enable_http": false,
"enable_local": false,
"enable_os_login": true,
"enable_ssh": false,
"http_source_ranges": [
"0.0.0.0/0"
],
"public_key": null,
"ssh_source_ranges": [
"0.0.0.0/0"
]
}
no
service_account Service account name used by deploy application
object({
new = bool
email = string
})
{
"email": null,
"new": false
}
no
subnetwork_address The IP range of internal addresses for the subnetwork. Ignored if 'subnetwork_properties' is provided. string null no
subnetwork_properties Subnetwork properties. 'subnetwork_self_link' or 'subnetwork_properties' must be provided.
object({
address = string
private = bool
id = string
new = bool
})
null no
subnetwork_self_link The self-link of the VPC subnetwork to where the system is connected. Ignored if 'subnetwork_properties' is provided. 'subnetwork_self_link' or 'subnetwork_properties' must be provided. string null no
waiter Waiter to check progress and result for deployment. string null no
zone Compute Platform zone where the servers will be located string n/a yes

Outputs

Name Description
client_config_script Script that will install DDN EXAScaler lustre client. The machine running this script must be on the same network & subnet as the EXAScaler.
http_console HTTP address to access the system web console.
install_ddn_lustre_client_runner Runner that encapsulates the client_config_script output on this module.
mount_command Command to mount the file system. client_config_script must be run first.
mount_runner Runner to mount the DDN EXAScaler Lustre file system
network_storage Describes a EXAScaler system to be mounted by other systems.
private_addresses Private IP addresses for all instances.
ssh_console Instructions to ssh into the instances.