...
Automated deployment is possible with EXAScaler Cloud Terraform Scripts.
The steps below will show how to create a EXAScaler Cloud environment on Microsoft Azure using Terraform.
| Product | Version | Base OS | Stock Keeping Unit (SKU) |
|---|
| EXAScaler Cloud | 5.2.6 | Red Hat Enterprise Linux 7.9 | exascaler_cloud_5_2_redhat |
| EXAScaler Cloud | 5.2.6 | CentOS Linux 7.9 | exascaler_cloud_5_2_centos |
| EXAScaler Cloud | 6.0.1 | Red Hat Enterprise Linux 7.9 | exascaler_cloud_6_0_redhat |
| EXAScaler Cloud | 6.0.1 | CentOS Linux 7.9 | exascaler_cloud_6_0_centos |
| EXAScaler Cloud | 6.1.0 | Red Hat Enterprise Linux 7.9 | exascaler_cloud_6_1_redhat |
| EXAScaler Cloud | 6.1.0 | CentOS Linux 7.9 | exascaler_cloud_6_1_centos |
- You need a Microsoft account
- Your system needs the Microsoft Azure CLI as well as Terraform
Before deploy Terraform code for Microsoft Azure, you will need to authenticate under the Microsoft account you used to log into the Microsoft Azure Portal. You will use a Microsoft account and its credentials to allow Terraform to deploy resources.
DDN EXAScaler Cloud in the Azure Marketplace have additional license and purchase terms that you must accept before you can deploy them programmatically. To deploy an environment from this image, you'll need to accept the image's terms the first time you use it, once per subscription.
Obtains access credentials for your user account via a web-based authorization flow. When this command completes successfully, it sets the active account in the current configuration to the account specified. Learn more about Azure authentication.
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ az login
[
{
"cloudName": "AzureCloud",
"homeTenantId": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"isDefault": true,
"managedByTenants": [],
"name": "Subscription-Name",
"state": "Enabled",
"tenantId": "00000000-0000-0000-0000-000000000000",
"user": {
"name": "user@domain.com",
"type": "user"
}
}
] |
To view the current Azure subscription ID, please use az account show.
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ az account show
{
"environmentName": "AzureCloud",
"homeTenantId": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"isDefault": true,
"managedByTenants": [],
"name": "Subscription-Name",
"state": "Enabled",
"tenantId": "00000000-0000-0000-0000-000000000000",
"user": {
"name": "user@domain.com",
"type": "user"
}
} |
Please use the value of id property as an Azure subscription ID for Terraform based deployments.
To deploy DDN EXAScaler Cloud, you need to accept the Azure Marketplace image terms so that the image can be used to create a deployment.
For EXAScaler Cloud 5.2 and CentOS Linux based image:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ az vm image terms accept --urn ddn-whamcloud-5345716:exascaler_cloud:exascaler_cloud_5_2_centos:latest |
For EXAScaler Cloud 5.2 and Red Hat Enterprise Linux based image:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ az vm image terms accept --urn ddn-whamcloud-5345716:exascaler_cloud:exascaler_cloud_5_2_redhat:latest |
For EXAScaler Cloud 6.0 and CentOS Linux based image:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ az vm image terms accept --urn ddn-whamcloud-5345716:exascaler_cloud:exascaler_cloud_6_0_centos:latest |
For EXAScaler Cloud 6.0 and Red Hat Enterprise Linux based image:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ az vm image terms accept --urn ddn-whamcloud-5345716:exascaler_cloud:exascaler_cloud_6_0_redhat:latest |
For EXAScaler Cloud 6.1 and CentOS Linux based image:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ az vm image terms accept --urn ddn-whamcloud-5345716:exascaler_cloud:exascaler_cloud_6_1_centos:latest |
For EXAScaler Cloud 6.1 and Red Hat Enterprise Linux based image:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ az vm image terms accept --urn ddn-whamcloud-5345716:exascaler_cloud:exascaler_cloud_6_1_redhat:latest |
Learn more about the image terms.
Download Terraform scripts and extract the tarball:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ curl -sL https://github.com/DDNStorage/exascaler-cloud-terraform/archive/refs/tags/scripts/2.1.5.tar.gz | tar xz |
Change Terraform variables according you requirements:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ cd exascaler-cloud-terraform-scripts-2.1.5/az
$ vi terraform.tfvars |
| Variable | Type | Default | Description |
|---|
availability.type | string | none | Availability type: none - no infrastructure redundancy required, set - to create an availability set and automatically distribute resources across multiple fault domains, zone - to physically separate resources within an Azure region. Learn more about Azure availability options. |
availability.zone | integer | 1 | Availability zone - unique physical locations within a Azure region. Use 1, 2 or 3 to explicitly specify the availability zone. Learn more about Azure availability zones. |
| Variable | Type | Default | Description |
|---|
resource_group.new | bool | true | Create a new resource group, or use an existing one: true or false. |
resource_group.name | string | existing-resource-group | Existing resource group name, will be using if new is false. |
Learn more about Azure resource groups.
| Variable | Type | Default | Description |
|---|
proximity_placement_group.new | bool | true | Create a new proximity placement group, or use an existing one: true or false. |
proximity_placement_group.name | string | existing-proximity-placement-group | Existing proximity placement group name, will be using if new is false. |
Learn more about Azure proximity placement groups.
| Variable | Type | Default | Description |
|---|
network.new | bool | true | Create a new network, or use an existing one: true or false. |
network.name | string | existing-network | Existing network name, will be using only if new option is false. |
network.address | string | 10.0.0.0/8 | IP address in CIDR notation for the new virtual network. |
Learn more about Azure virtual networks.
| Variable | Type | Default | Description |
|---|
subnet.new | bool | true | Create a new subnet, or use an existing one: true or false. |
subnet.name | string | existing-subnet | Existing subnet name, will be using only if new option is false. |
network.address | string | 10.0.0.0/24 | IP address in CIDR notation for the new subnet. |
Learn more about Azure virtual networks and subnets.
| Variable | Type | Default | Description |
|---|
security.username | string | stack | User name for remote SSH access. Learn more about Azure SSH options. |
security.ssh_public_key | string | ~/.ssh/id_rsa.pub | Path to the local SSH public key. This file will be added to admin home directory as .ssh/authorized_keys. Learn more about Azure SSH options. |
security.enable_ssh | bool | true | true or false: enable or disable remote SSH access. |
security.enable_http | bool | true | true or false, enable or disable remote HTTP access. |
security.ssh_source_ranges | list(string) | [0.0.0.0/0] | Source IP ranges for remote SSH access in CIDR notation. Learn more about Azure network security groups. |
security.http_source_ranges | list(string) | [0.0.0.0/0] | Source IP ranges for remote HTTP access in CIDR notation. Learn more Azure network security groups. |
| Variable | Type | Default | Description |
|---|
boot.disk_type | string | StandardSSD_LRS | Specifies the type of managed disk to create:Standard_LRSPremium_LRSStandardSSD_LRS
|
boot.disk_cache | string | ReadWrite | Specifies the caching requirements for the target disk: |
boot.auto_delete | bool | true | Delete the boot disk automatically when deleting the virtual machine: trueor false. |
boot.disk_size | integer | 64 | Boot disk size in GB. |
Learn more about Azure disks types.
| Variable | Type | Default | Description |
|---|
image.publisher | string | ddn-whamcloud-5345716 | Specifies the publisher of the image used to create the virtual machine. |
image.offer | string | exascaler_cloud | Specifies the offer of the image used to create the virtual machine. |
image.sku | string | exascaler_cloud_6_1_centos | Specifies the SKU of the image used to create the virtual machine. EXAScaler Cloud 5.2 images:exascaler_cloud_5_2_centosexascaler_cloud_5_2_redhat EXAScaler Cloud 6.0 images:exascaler_cloud_6_0_centosexascaler_cloud_6_0_redhat EXAScaler Cloud 6.1 images:exascaler_cloud_6_1_centosexascaler_cloud_6_1_redhat
|
image.version | string | latest | Specifies the version of the image used to create the virtual machine. |
image.accept | bool | false | Allows automatically accepting the legal terms for a Marketplace image. |
Learn more about Azure disk images.
| Variable | Type | Default | Description |
|---|
storage_account.kind | string | StorageV2 | Defines the kind of account. Valid options are:BlobStorageBlockBlobStorageFileStorageStorageStorageV2
|
storage_account.tier | string | Standard | Defines the tier to use for this storage account. Valid options are: |
storage_account.replication | string | LRS | Defines the type of replication to use for this storage account. Valid options are: |
Learn more about Azure storage accounts.
| Variable | Type | Default | Description |
|---|
mgt.disk_type | string | StandardSSD_LRS | Specifies the type of managed disk to create the management target:Standard_LRSStandardSSD_LRSPremium_LRS
|
mgt.disk_cache | string | None | Specifies the caching requirements for the management target: |
mgt.disk_size | integer | 256 | Specifies the size of the management target in GB. |
mgt.disk_count | integer | 1 | Specifies the number of management targets: 1-128. |
mgt.disk_raid | bool | false | Create striped management target: true or false. |
Learn more about Azure disks types
| Variable | Type | Default | Description |
|---|
mnt.disk_type | string | StandardSSD_LRS | Specifies the type of managed disk to create the monitoring target:Standard_LRSStandardSSD_LRSPremium_LRS
|
mnt.disk_cache | string | None | Specifies the caching requirements for the monitoring target: |
mnt.disk_size | integer | 128 | Specifies the size of the monitoring target in GB. |
mnt.disk_count | integer | 1 | Specifies the number of monitoring targets: 1-128. |
mnt.disk_raid | bool | false | Create striped monitoring target: true or false. |
Learn more about Azure disks types
| Variable | Type | Default | Description |
|---|
mdt.disk_type | string | Premium_LRS | Specifies the type of managed disk to create the metadata target:Standard_LRSStandardSSD_LRSPremium_LRS
|
mdt.disk_cache | string | None | Specifies the caching requirements for the metadata target: |
mdt.disk_size | integer | 512 | Specifies the size of the metadata target in GB. |
mdt.disk_count | integer | 1 | Specifies the number of metadata targets: 1-128. |
mdt.disk_raid | bool | false | Create striped metadata target: true or false. |
Learn more about Azure disks types
| Variable | Type | Default | Description |
|---|
ost.disk_type | string | Standard_LRS | Specifies the type of managed disk to create the object storage target:Standard_LRSStandardSSD_LRSPremium_LRS
|
ost.disk_cache | string | None | Specifies the caching requirements for the object storage target: |
ost.disk_size | integer | 512 | Specifies the size of the object storage target in GB. |
ost.disk_count | integer | 6 | Specifies the number of object storage targets: 1-128. |
ost.disk_raid | bool | false | Create striped object storage target: true or false. |
Learn more about Azure disks types
| Variable | Type | Default | Description |
|---|
clt.disk_type | string | Standard_LRS | Specifies the type of managed disk to create the compute target:Standard_LRSStandardSSD_LRSPremium_LRS
|
clt.disk_cache | string | None | Specifies the caching requirements for the compute target: |
clt.disk_size | integer | 32 | Specifies the size of the compute target in GB. |
clt.disk_count | integer | 0 | Specifies the number of compute targets. |
Learn more about Azure disks types
Initialize a working directory containing Terraform configuration files. This is the first command that should be run after writing a new Terraform configuration or cloning an existing one from version control. It is safe to run this command multiple times:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ terraform init
Initializing the backend...
Initializing provider plugins...
- Finding hashicorp/azurerm versions matching ">= 3.10.0"...
- Finding latest version of hashicorp/random...
- Finding latest version of hashicorp/template...
- Installing hashicorp/azurerm v3.13.0...
- Installed hashicorp/azurerm v3.13.0 (signed by HashiCorp)
- Installing hashicorp/random v3.3.2...
- Installed hashicorp/random v3.3.2 (signed by HashiCorp)
- Installing hashicorp/template v2.2.0...
- Installed hashicorp/template v2.2.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.
Terraform has been successfully initialized! |
You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
Validate configuration options:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ terraform validate
Success! The configuration is valid. |
Create an execution plan with a preview of the changes that Terraform will make to the environment:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ terraform plan |
Apply the changes required to reach the desired state of the configuration:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ terraform apply
...
Enter a value: yes
...
Apply complete! Resources: 103 added, 0 changed, 0 destroyed.
Outputs:
azure_dashboard = "https://portal.azure.com/#@00000000-0000-0000-0000-000000000000/dashboard/arm/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/exascaler-cloud-a108-resource-group/providers/Microsoft.Portal/dashboards/exascaler-cloud-a108-dashboard"
client_config = <<EOT
#!/bin/sh
# install new EXAScaler Cloud clients:
# all instances must be in the same location westus
# and connected to the network exascaler-cloud-a108-virtual-network
# and subnet exascaler-cloud-a108-subnet
# to set up EXAScaler Cloud filesystem on a new client instance,
# run the folowing commands on the client with root privileges:
cat >/etc/esc-client.conf<<EOF
{
"Version": "2.0.0",
"MountConfig": {
"ClientDevice": "10.0.0.10@tcp:/exacloud",
"Mountpoint": "/mnt/exacloud",
"PackageSource": "http://10.0.0.10/client-packages"
}
}
EOF
curl -fsSL http://10.0.0.10/client-setup-tool -o /usr/sbin/esc-client
chmod +x /usr/sbin/esc-client
esc-client auto setup --config /etc/esc-client.conf
EOT
http_console = "http://exascaler-cloud-a108-mgs0.westus.cloudapp.azure.com"
mount_command = "mount -t lustre 10.0.0.10@tcp:/exacloud /mnt/exacloud"
private_addresses = {
"exascaler-cloud-a108-cls0" = "10.0.0.8"
"exascaler-cloud-a108-cls1" = "10.0.0.7"
"exascaler-cloud-a108-cls2" = "10.0.0.11"
"exascaler-cloud-a108-cls3" = "10.0.0.12"
"exascaler-cloud-a108-mds0" = "10.0.0.13"
"exascaler-cloud-a108-mgs0" = "10.0.0.10"
"exascaler-cloud-a108-oss0" = "10.0.0.9"
"exascaler-cloud-a108-oss1" = "10.0.0.4"
"exascaler-cloud-a108-oss2" = "10.0.0.5"
"exascaler-cloud-a108-oss3" = "10.0.0.6"
}
ssh_console = {
"exascaler-cloud-a108-mgs0" = "ssh -A stack@exascaler-cloud-a108-mgs0.westus.cloud
app.azure.com"
} |
Now you can access the EXAScaler Cloud environment:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ eval $(ssh-agent)
Agent pid 12313
$ ssh-add
Identity added: /Users/name/.ssh/id_rsa (/Users/name/.ssh/id_rsa)
$ ssh -A stack@exascaler-cloud-a108-mgs0.westus.cloudapp.azure.com
[stack@exascaler-cloud-a108-mgs0 ~]$ df -h -t lustre
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 249G 2.4M 247G 1% /mnt/targets/MGS
[stack@exascaler-cloud-a108-mgs0 ~]$ loci hosts
10.0.0.8 exascaler-cloud-a108-cls0
10.0.0.7 exascaler-cloud-a108-cls1
10.0.0.11 exascaler-cloud-a108-cls2
10.0.0.12 exascaler-cloud-a108-cls3
10.0.0.13 exascaler-cloud-a108-mds0
10.0.0.10 exascaler-cloud-a108-mgs0
10.0.0.9 exascaler-cloud-a108-oss0
10.0.0.4 exascaler-cloud-a108-oss1
10.0.0.5 exascaler-cloud-a108-oss2
10.0.0.6 exascaler-cloud-a108-oss3
[stack@exascaler-cloud-a108-mgs0 ~]$ ssh exascaler-cloud-a108-cls0
[stack@exascaler-cloud-a108-cls0 ~]$ lfs df
UUID 1K-blocks Used Available Use% Mounted on
exacloud-MDT0000_UUID 315302464 6212 309927544 1% /mnt/exacloud[MDT:0]
exacloud-OST0000_UUID 529449792 1256 524063444 1% /mnt/exacloud[OST:0]
exacloud-OST0001_UUID 529449792 1272 524063428 1% /mnt/exacloud[OST:1]
exacloud-OST0002_UUID 529449792 1268 524063432 1% /mnt/exacloud[OST:2]
exacloud-OST0003_UUID 529449792 1264 524063436 1% /mnt/exacloud[OST:3]
exacloud-OST0004_UUID 529449792 1256 524063444 1% /mnt/exacloud[OST:4]
exacloud-OST0005_UUID 529449792 1264 524063436 1% /mnt/exacloud[OST:5]
exacloud-OST0006_UUID 529449792 1276 524063424 1% /mnt/exacloud[OST:6]
exacloud-OST0007_UUID 529449792 1268 524063432 1% /mnt/exacloud[OST:7]
exacloud-OST0008_UUID 529449792 1260 524063440 1% /mnt/exacloud[OST:8]
exacloud-OST0009_UUID 529449792 1272 524063428 1% /mnt/exacloud[OST:9]
exacloud-OST000a_UUID 529449792 1268 524063432 1% /mnt/exacloud[OST:10]
exacloud-OST000b_UUID 529449792 1272 524063428 1% /mnt/exacloud[OST:11]
exacloud-OST000c_UUID 529449792 1256 524063444 1% /mnt/exacloud[OST:12]
exacloud-OST000d_UUID 529449792 1264 524063436 1% /mnt/exacloud[OST:13]
exacloud-OST000e_UUID 529449792 1268 524063432 1% /mnt/exacloud[OST:14]
exacloud-OST000f_UUID 529449792 1260 524063440 1% /mnt/exacloud[OST:15]
exacloud-OST0010_UUID 529449792 1272 524063428 1% /mnt/exacloud[OST:16]
exacloud-OST0011_UUID 529449792 1260 524063440 1% /mnt/exacloud[OST:17]
exacloud-OST0012_UUID 529449792 1256 524063444 1% /mnt/exacloud[OST:18]
exacloud-OST0013_UUID 529449792 1264 524063436 1% /mnt/exacloud[OST:19]
exacloud-OST0014_UUID 529449792 1256 524063444 1% /mnt/exacloud[OST:20]
exacloud-OST0015_UUID 529449792 1260 524063440 1% /mnt/exacloud[OST:21]
exacloud-OST0016_UUID 529449792 1272 524063428 1% /mnt/exacloud[OST:22]
exacloud-OST0017_UUID 529449792 1264 524063436 1% /mnt/exacloud[OST:23]
filesystem_summary: 12706795008 30348 12577522452 1% /mnt/exacloud |
The storage capacity can be added by increasing the number of storage servers. To add storage capacity in an existing EXAScaler Cloud environment, just modify the terraform.tfvars file and increase the number of storage servers (the value of the oss.node_countvariable) as required:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ diff -u terraform.tfvars.orig terraform.tfvars
@@ -217,7 +217,7 @@
oss = {
node_type = "Standard_D16s_v3"
- node_count = 6
+ node_count = 12
public_ip = false
accelerated_network = true
} |
And then run the terraform apply command to increase the storage capacity. The available storage capacity (in GB) can be calculated by multiplying the three configuration parameters:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
capacity = oss.node_count * ost.disk_count * ost.disk_size |
A software upgrade for an existing EXAScaler Cloud environment is possible by recreating the running VM instances using a new version of the OS image. And it requires some manual steps.
Create a backup copy for the existing Terraform directory (*.tf, terraform.tfvars and terraform.tfstate files):
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ cd /path/to/exascaler-cloud-terraform-scripts-x.y.z/az
$ tar pcfz backup.tgz *.tf terraform.tfvars terraform.tfstate |
Update Terraform scripts using the latest available EXAScaler Cloud Terraform scripts:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ cd /path/to
$ curl -sL https://github.com/DDNStorage/exascaler-cloud-terraform/archive/refs/tags/scripts/2.1.5.tar.gz | tar xz
$ cd exascaler-cloud-terraform-scripts-2.1.5/az |
Copy the terraform.tfstate file from the existing Terraform directory:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ cp -iv /path/to/exascaler-cloud-terraform-scripts-x.y.z/az/terraform.tfstate . |
Review and update the terraform.tfvars file using configuration options for the existing environment:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ diff -u /path/to/exascaler-cloud-terraform-scripts-x.y.z/az/terraform.tfvars terraform.tfvars
$ vi terraform.tfvars |
Review the execution plan to make sure all changes are expected:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
% terraform plan |
Unmount the existing EXAScaler Cloud filesystem using the provided esc-ctl script. This step is required to ensure data consistency during the upgrade:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ ./scripts/esc-ctl
Usage:
List resource groups : ./scripts/esc-ctl list
List deployments : ./scripts/esc-ctl <resource_group> list
List instances : ./scripts/esc-ctl <resource_group> <deployment> list
Stop instances : ./scripts/esc-ctl <resource_group> <deployment> stop
Start instances : ./scripts/esc-ctl <resource_group> <deployment> start
Unmount filesystem : ./scripts/esc-ctl <resource_group> <deployment> umount
$ ./scripts/esc-ctl list
Name Location Status
----------------------------------- ---------- ---------
exascaler-cloud-f7cd-resource-group eastus Succeeded
NetworkWatcherRG westus Succeeded
$ ./scripts/esc-ctl exascaler-cloud-f7cd-resource-group list
Name Created Status
------------------------------ ------------------------- ---------
exascaler-cloud-f7cd 2021-08-21T01:19:36+00:00 Succeeded
$ ./scripts/esc-ctl exascaler-cloud-f7cd-resource-group exascaler-cloud-f7cd umount
Umount compute client exascaler-cloud-f7cd-cls0
Umount compute client exascaler-cloud-f7cd-cls1
Umount storage server exascaler-cloud-f7cd-oss0
Umount storage server exascaler-cloud-f7cd-oss1
Umount storage server exascaler-cloud-f7cd-oss2
Umount storage server exascaler-cloud-f7cd-oss3
Umount metadata server exascaler-cloud-f7cd-mds0
Umount management server exascaler-cloud-f7cd-mgs0 |
Apply the changes required to upgrade the existing EXAScaler Cloud environment by recreating all instances using the latest version of EXAScaler Cloud:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ terraform apply
...
Enter a value: yes
...
Outputs:
Apply complete! Resources: 18 added, 8 changed, 16 destroyed.
Outputs:
azure_dashboard = "https://portal.azure.com/#@753b6e26-6fd3-43e6-8248-3f1735d59bb4/dashboard/arm/subscriptions/9978cd1b-936a-4296-8061-67c9d963dd40/resourceGroups/exascaler-cloud-f7cd-resource-group/providers/Microsoft.Portal/dashboards/exascaler-cloud-f7cd-dashboard"
http_console = "http://exascaler-cloud-f7cd-mgs0.eastus.cloudapp.azure.com"
mount_command = "mount -t lustre 10.0.0.11@tcp:/exacloud /mnt/exacloud"
private_addresses = {
"exascaler-cloud-f7cd-cls0" = "10.0.0.6"
"exascaler-cloud-f7cd-cls1" = "10.0.0.7"
"exascaler-cloud-f7cd-mds0" = "10.0.0.8"
"exascaler-cloud-f7cd-mgs0" = "10.0.0.11"
"exascaler-cloud-f7cd-oss0" = "10.0.0.9"
"exascaler-cloud-f7cd-oss1" = "10.0.0.4"
"exascaler-cloud-f7cd-oss2" = "10.0.0.10"
"exascaler-cloud-f7cd-oss3" = "10.0.0.5"
}
ssh_console = {
"exascaler-cloud-f7cd-mgs0" = "ssh -A stack@exascaler-cloud-f7cd-mgs0.eastus.cloudapp.azure.com"
} |
Destroy the EXAScaler Cloud environment:
| Code Block |
|---|
| language | bash |
|---|
| theme | Midnight |
|---|
|
$ terraform destroy
...
Enter a value: yes
...
Destroy complete! Resources: 103 destroyed. |
...
If you want to stop and start the servers in your EXAScaler Cloud deployment (for example, to save cost on weekends) - please use the esc-ctl script.
- You need a Microsoft account
- Your system needs the Microsoft Azure CLI
Before use the Microsoft Azure CLI for Microsoft Azure, you will need to authenticate under the Microsoft account you used to log into the Microsoft Azure Portal. You will use a Microsoft account and its credentials to allow the shell script to start/stop the EXAScaler Cloud servers.
Obtains access credentials for your user account via a web-based authorization flow. When this command completes successfully, it sets the active account in the current configuration to the account specified. Learn more.
...