The following steps will provision AWS resources (new vpc, bastion, compute and storage instances) and configures IBM Spectrum Scale cloud solution.
-
Change working directory to
aws_scale_templates/aws_new_vpc_scale/
.cd ibm-spectrum-scale-cloud-install/aws_scale_templates/aws_new_vpc_scale/
-
Identify the required RHEL AMI/image id available on AWS region.
Minimal Example-1 (list RHEL 8.4 AMI id in region
us-east-1
):$ aws ec2 describe-images --owners 309956199498 --query 'sort_by(Images, &CreationDate)[*].[CreationDate,Name,ImageId]' --filters "Name=name,Values=RHEL-8.4*_HVM-*-x86_64-*-Hourly2-GP2" --region us-east-1 --output table ------------------------------------------------------------------------------------------------------- | DescribeImages | +---------------------------+------------------------------------------------+------------------------+ | 2021-05-18T20:09:47.000Z | RHEL-8.4.0_HVM-20210504-x86_64-2-Hourly2-GP2 | ami-0b0af3577fe5e3532 | +---------------------------+------------------------------------------------+------------------------+
-
Create terraform variable definitions file (
terraform.tfvars.json
) and provide infrastructure inputs.Note: In case of multi availability zone, provide 3 AZ values for the vpc_availability_zones
keyword. Ex:"vpc_availability_zones"=["us-east-1a", "us-east-1b", "us-east-1c"]
Minimal Example-1 (create compute, storage cluster with gp2 and remote mount configuration):
{ "vpc_region": "us-east-1", "vpc_availability_zones": ["us-east-1a"], "resource_prefix": "spectrum-scale", "total_storage_cluster_instances": 4, "total_compute_cluster_instances": 3, "ebs_block_devices_per_storage_instance": 1, "ebs_block_device_volume_size": 500, "ebs_block_device_volume_type": "gp2", "bastion_ami_name": "Amazon-Linux2-HVM", "compute_cluster_image_id": "ami-0b0af3577fe5e3532", // Use the AMI-id obtained in step-2 "storage_cluster_image_id": "ami-0b0af3577fe5e3532", // Use the AMI-id obtained in step-2 "operator_email": null, // Email address for notification "bastion_key_pair": null, // Use an existing AWS EC2 key pair "compute_cluster_key_pair": null, // Use an existing AWS EC2 key pair "storage_cluster_key_pair": null, // Use an existing AWS EC2 key pair "bastion_ssh_private_key": null, // Use bastion ssh private key path "compute_cluster_gui_password": "Passw0rd", "compute_cluster_gui_username": "admin", "storage_cluster_gui_username": "admin", "storage_cluster_gui_password": "Passw0rd" }
-
Run
terraform init
andterraform apply -auto-approve
to provision resources.
Name | Version |
---|---|
terraform | ~> 1.0 |
aws | ~> 3.0 |
Name | Description | Type |
---|---|---|
bastion_key_pair | The key pair to use to launch the bastion host. | string |
compute_cluster_gui_password | Password for Compute cluster GUI. | string |
compute_cluster_gui_username | GUI user to perform system management and monitoring tasks on compute cluster. | string |
compute_cluster_image_id | ID of AMI to use for provisioning the compute cluster instances. | string |
compute_cluster_key_pair | The key pair to use to launch the compute cluster host. | string |
operator_email | SNS notifications will be sent to provided email id. | string |
storage_cluster_gui_password | Password for Storage cluster GUI | string |
storage_cluster_gui_username | GUI user to perform system management and monitoring tasks on storage cluster. | string |
storage_cluster_image_id | ID of AMI to use for provisioning the storage cluster instances. | string |
storage_cluster_key_pair | The key pair to use to launch the storage cluster host. | string |
vpc_availability_zones | A list of availability zones names or ids in the region. | list(string) |
vpc_region | The region where AWS operations will take place. Examples are us-east-1, us-west-2, etc. | string |
bastion_ami_name | Bastion AMI Image name. | string |
bastion_instance_type | Instance type to use for the bastion instance. | string |
bastion_public_ssh_port | Set the SSH port to use from desktop to the bastion. | string |
bastion_ssh_private_key | Bastion SSH private key path, which will be used to login to bastion host. | string |
compute_cluster_filesystem_mountpoint | Compute cluster (accessingCluster) Filesystem mount point. | string |
compute_cluster_instance_type | Instance type to use for provisioning the compute cluster instances. | string |
compute_cluster_root_volume_type | EBS volume types: standard, gp2, gp3, io1, io2 and sc1 or st1. | string |
compute_cluster_tags | Additional tags for the compute cluster. | map(string) |
compute_cluster_volume_tags | Additional tags for the compute cluster volume(s). | map(string) |
create_separate_namespaces | Flag to select if separate namespace needs to be created for compute instances. | bool |
ebs_block_device_delete_on_termination | If true, all ebs volumes will be destroyed on instance termination. | bool |
ebs_block_device_encrypted | Whether to enable volume encryption. | bool |
ebs_block_device_iops | Amount of provisioned IOPS. Only valid for volume_type of io1, io2 or gp3. | number |
ebs_block_device_kms_key_id | Amazon Resource Name (ARN) of the KMS Key to use when encrypting the volume. | string |
ebs_block_device_throughput | Throughput that the volume supports, in MiB/s. Only valid for volume_type of gp3. | number |
ebs_block_device_volume_size | Size of the volume in gibibytes (GiB). | number |
ebs_block_device_volume_type | EBS volume types: io1, io2, gp2, gp3, st1 and sc1. | string |
ebs_block_devices_per_storage_instance | Additional EBS block devices to attach per storage cluster instance. | number |
filesystem_block_size | Filesystem block size. | string |
remote_cidr_blocks | List of CIDRs that can access to the bastion. Default : 0.0.0.0/0 | list(string) |
resource_prefix | Prefix is added to all resources that are created. | string |
scale_ansible_repo_clone_path | Path to clone github.com/IBM/ibm-spectrum-scale-install-infra. | string |
spectrumscale_rpms_path | Path that contains IBM Spectrum Scale product cloud rpms. | string |
storage_cluster_filesystem_mountpoint | Storage cluster (owningCluster) Filesystem mount point. | string |
storage_cluster_instance_type | Instance type to use for provisioning the storage cluster instances. | string |
storage_cluster_root_volume_type | EBS volume types: standard, gp2, gp3, io1, io2 and sc1 or st1. | string |
storage_cluster_tags | Additional tags for the storage cluster. | map(string) |
storage_cluster_tiebreaker_instance_type | Instance type to use for the tie breaker instance (will be provisioned only in Multi-AZ configuration). | string |
storage_cluster_volume_tags | Additional tags for the storage cluster volume(s). | map(string) |
total_compute_cluster_instances | Number of EC2 instances to be launched for compute cluster. | number |
total_storage_cluster_instances | Number of EC2 instances to be launched for storage cluster. | number |
using_packer_image | If true, gpfs rpm copy step will be skipped during the configuration. | bool |
using_rest_api_remote_mount | If false, skips GUI initialization on compute cluster for remote mount configuration. | string |
vpc_cidr_block | The CIDR block for the VPC. | string |
vpc_compute_cluster_private_subnets_cidr_blocks | List of cidr_blocks of compute private subnets. | list(string) |
vpc_create_separate_subnets | Flag to select if separate private subnet to be created for compute cluster. | bool |
vpc_public_subnets_cidr_blocks | List of cidr_blocks of public subnets. | list(string) |
vpc_storage_cluster_private_subnets_cidr_blocks | List of cidr_blocks of storage cluster private subnets. | list(string) |
vpc_tags | Additional tags for the VPC | map(string) |
Name | Description |
---|---|
bastion_instance_id | Bastion instance id. |
bastion_instance_private_ip | Bastion instance private ip addresses. |
bastion_instance_public_ip | Bastion instance public ip addresses. |
bastion_security_group_id | Bastion security group id. |
compute_cluster_instance_ids | Compute cluster instance ids. |
compute_cluster_instance_private_ips | Private IP address of compute cluster instances. |
storage_cluster_desc_data_volume_mapping | Mapping of storage cluster desc instance ip vs. device path. |
storage_cluster_desc_instance_ids | Storage cluster desc instance id. |
storage_cluster_desc_instance_private_ips | Private IP address of storage cluster desc instance. |
storage_cluster_instance_ids | Storage cluster instance ids. |
storage_cluster_instance_private_ips | Private IP address of storage cluster instances. |
storage_cluster_with_data_volume_mapping | Mapping of storage cluster instance ip vs. device path. |
vpc_compute_cluster_private_subnets | List of IDs of compute cluster private subnets. |
vpc_id | The ID of the VPC. |
vpc_public_subnets | List of IDs of public subnets. |
vpc_storage_cluster_private_subnets | List of IDs of storage cluster private subnets. |