App Icon MPI+Spack Bare Metal Cluster

Thank you for your contribution. Your appliance is under review. If it all looks good we will publish it straight away, otherwise we will be in touch with you to make the necessary changes.

Go to Horizon to launch at CHI@UC     Go to Horizon to launch at CHI@TACC

Description

This template sets up an HPC cluster with master and worker nodes, with MPI (MPICH and OpenMPI) and Spack available. A temporary bootstrap node handles the setup and configuration, and the users can load MPI or install/load other packages using Spack or Lmod(Lua Modules).

This appliance accepts the following parameters:

  • reservation_id: ID of the Blazar reservation for master and worker nodes.
  • bootstrapnode_reservation_id: ID of the Blazar reservation for the bootstrap node.
  • network_name: Name of the network.
  • image_name: Name of the image to be used by the cluster. Must be one of the following: Ubuntu22.04-HPC-MPI-Spack, Ubuntu22.04-HPC-MPI-Spack-CUDA, or Ubuntu22.04-HPC-MPI-Spack-ROCm. Defaults to Ubuntu22.04-HPC-MPI-Spack.
  • worker_count: Number of worker nodes. Defaults to 1.
  • spack_packages: List of additional Spack packages to install.
  • private_key_content: Contents of the SSH private key.
  • public_key_content: Contents of the SSH public key, allowing login into instances.

The following outputs are provided:

  • master_ip: Floating IP of the master node.
  • keypair_name: Name of the MPI keypair used.

You can create the stack using the following OpenStack CLI command:

SSH_KEY=/work/.ssh/id_rsa    # Path to the SSH key file that will be used as the cluster's keypair
STACK_NAME=mpi-stack
NETWORK_NAME=sharednet1
IMAGE_NAME=Ubuntu22.04-HPC-MPI-Spack
RESERVATION_ID=""            # Enter the reservation id
BOOTSTRAP_RESERVATION_ID=""  # Enter the bootstrap reservation id
WORKER_COUNT=1              # Number of worker nodes
SPACK_PACKAGES="pdsh,zlib"  # Comma-separated list of extra spack packages to be installed on all nodes

# Create the stack
openstack stack create ${STACK_NAME} -t template.yml --wait \
    --parameter-file private_key_content=${SSH_KEY} \
    --parameter-file public_key_content=${SSH_KEY}.pub \
    --parameter network_name=${NETWORK_NAME} \
    --parameter image_name=${IMAGE_NAME} \
    --parameter bootstrapnode_reservation_id=${BOOTSTRAP_RESERVATION_ID} \
    --parameter reservation_id=${RESERVATION_ID} \
    --parameter worker_count=${WORKER_COUNT} \
    --parameter spack_packages=${SPACK_PACKAGES}

Keywords

ansible MPI MPICH openmpi

Template

Get Template

Author

Name: Rohan Babbar
Contact:  rohanbabbar0408@gmail.com

Support

Name: Rohan Babbar
Contact:  rohanbabbar0408@gmail.com

Version: 1.0.0
Created By:  rohanbabbar0408@gmail.com on Aug. 23, 2025, 1:40 p.m.
Updated By:  rohanbabbar0408@gmail.com on Aug. 23, 2025, 2:29 p.m.