Skip to content

Latest commit

 

History

History
142 lines (125 loc) · 15.4 KB

File metadata and controls

142 lines (125 loc) · 15.4 KB

New VPC Template

The following steps will provision AWS resources (new vpc, bastion, compute and storage instances) and configures IBM Spectrum Scale cloud solution.

  1. Change working directory to aws_scale_templates/aws_new_vpc_scale/.

    cd ibm-spectrum-scale-cloud-install/aws_scale_templates/aws_new_vpc_scale/
    
  2. 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 |
    +---------------------------+------------------------------------------------+------------------------+
    
  3. 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"
    }
  4. Run terraform init and terraform apply -auto-approve to provision resources.

Requirements

Name Version
terraform ~> 1.0
aws ~> 3.0

Inputs

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)

Outputs

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.