A modern High Performance Computing (HPC) cluster consists of a diverse stack of hardware and
software. The hardware includes servers acting as nodes, one or more communication networks, and a
storage system. The software stack, whose general structure is usually includes:
(1) an operating system, in most cases a Linux distribution,
(2) a provisioning system middleware that allows to install the software stack and configure the cluster,
(3) tools for monitoring and managing the cluster's status, configuration and resources,
(4) software development tools and libraries,
(5) a parallel file system (optional), and
(6) the applications, the programs that the users uses to do their job.
Installing and managing all these components is a complex task.