The Terraform module to deploy High Performance Computing (HPC) clusters on AWS with AWS ParallelCluster.
Please open a GitHub issue for any feedback or issues: https://github.com/aws/aws-parallelcluster/issues. There is also an active AWS HPC forum which may be helpful: https://repost.aws/tags/TAbl-DsTlyQMe0T2i-d5Rr8g/aws-parallel-cluster.
See CONTRIBUTING for more information.
This project is licensed under the Apache-2.0 License.
Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of the License is located at
http://aws.amazon.com/apache2.0/
or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and limitations under the License.
This ParallelCluster Management Module can be used to deploy the ParallelCluster API, necessary infrastructure for clusters, and manage a list of clusters. Each of of these is handled by a submodule that can be used individually.
Documentation is generated with terraform-docs. The config file is stored at
.config/.terraform-docs.yml
. See: https://github.com/terraform-docs/terraform-docs.
Run terraform-docs markdown ./
from the root of the repository to regenerate the README
files.
The ParallelCluster API submodule deploys an Amazon API Gateway endpoint, IAM roles and policies, and an AWS Lambda function, that takes care of processing the invoked features. Deployed using a ParallelCluster API Cloudformation Template.
The required infra submodule deploys a vpc, subnets, routes, gateways, and creates a key pair. These are necessary resources for the API to deploy and manage clusters.
This module takes in a list of clusters as a terraform object. Cluster lists can be from json, yaml, or terraform objects. Each cluster contains the name and configuration. Optionally region, rollback, and validation settings may be specified.
Name | Version |
---|---|
terraform | >=1.5.7 |
aws-parallelcluster | ~> 1.0.0 |
No providers.
Name | Source | Version |
---|---|---|
clusters | ./modules/clusters | n/a |
pcluster_api | ./modules/pcluster_api | n/a |
required_infra | ./modules/required_infra | n/a |
No resources.
Name | Description | Type | Default | Required |
---|---|---|---|---|
api_version | Version of ParallelCluster API to deploy. | string |
n/a | yes |
api_stack_name | Name of the ParallelCluster API CloudFormation stack. | string |
"ParallelCluster" |
no |
cluster_configs | An object containing a list of clusters to deploy. | any |
{} |
no |
config_path | A path to a json or yaml file containing cluster configurations | string |
"" |
no |
custom_pcluster_template_uri | Custom CloudFormation ParallelCluster template URI. | string |
"" |
no |
deploy_pcluster_api | If set to true deploys the ParallelCluster API CloudFormation template. | string |
false |
no |
deploy_required_infra | If set to true deploys infrastructure required for clusters. | bool |
false |
no |
json_configs | An object containing a list of clusters to deploy. | string |
"{}" |
no |
parameters | Map of parameters to pass to the ParallelCluster API CloudFormation template. Refer to the ParallelCluster documentation to see available parameters. | map(any) |
{} |
no |
prefix | String to prefix to resource names. | string |
"pcluster" |
no |
private_subnet_az | The availability zone to create the private subnets in. | string |
"us-east-1a" |
no |
private_subnet_cidrs | List of cidr blocks to be used for private subnets. Has to be in the vpc cidr block. Cannot conflict with public subnets. | list(any) |
[ |
no |
public_subnet_az | The availability zone to create the public subnets in. | string |
"us-east-1a" |
no |
public_subnet_cidrs | List of cidr blocks to be used for public subnets. Has to be in the vpc cidr block. Cannot conflict with private subnets. | list(any) |
[ |
no |
region | Region to deploy the ParallelCluster API CloudFormation templates. | string |
"us-east-1" |
no |
template_vars | If a cluster configuration is passed as a template file use these vars for interpolation. | map(any) |
{} |
no |
vpc_cidr_block | The cidr block of the vpc the cluster nodes will be created in. The public and private subnet cidr blocks should fall within this block. | string |
"10.0.0.0/16" |
no |
yaml_configs | An object containing a list of clusters to deploy. | string |
"{}" |
no |
Name | Description |
---|---|
clusters | The ParallelCluster clusters. |
key_pair | The key pair created for use with AWS ParallelCluster. |
pcluster_api_stack_name | The ParallelCluster API Cloudformation Stack name. |
pcluster_api_stack_outputs | The ParallelCluster API Cloudformation Stack outputs. |
pcluster_api_stack_parameters | The ParallelCluster API Cloudformation Stack parameters. |
private_key | The private key used to create the key pair for use with the cluster. |
private_subnets | Public subnets. |
public_subnets | Private subnets. |
vpc | The VPC used for cluster nodes. |