/terraform-aws-parallelcluster

AWS ParallelCluster Module for Terraform

Primary LanguageHCLApache License 2.0Apache-2.0

AWS ParallelCluster Module for Terraform

The Terraform module to deploy High Performance Computing (HPC) clusters on AWS with AWS ParallelCluster.

Issues

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.

Security

See CONTRIBUTING for more information.

License

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.

ParallelCluster Management Module

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.

Doc Generation

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.

API Submodule

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.

Required Infrastructure Submodule

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.

Clusters Submodule

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.

Requirements

Name Version
terraform >=1.5.7
aws-parallelcluster ~> 1.0.0

Providers

No providers.

Modules

Name Source Version
clusters ./modules/clusters n/a
pcluster_api ./modules/pcluster_api n/a
required_infra ./modules/required_infra n/a

Resources

No resources.

Inputs

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)
[
"10.0.2.0/24"
]
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)
[
"10.0.1.0/24"
]
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

Outputs

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.