An Ansible-powered project that automates the creation of a fully functional HPC cluster — from bare nodes to parallel-ready in minutes.
- Proper hostnames and networking in place
- Ansible (controller machine)
- SSH access to all nodes
- Python available on managed hosts
This setup is designed around a multi-node architecture managed via Ansible, consisting of a single master node and multiple worker nodes.
USER
|
┌──────▼──────┐
│ MASTER │
└──────┬──────┘
|
┌───────────┼───────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ Worker1 │ │ Worker2 │ │ Worker3 │
└─────────┘ └─────────┘ └─────────┘
Offline workers friendly setup
-
Acts as the control node
-
Has internet access
-
Runs Ansible and orchestrates configuration and deployment
-
Connects to all worker nodes over an internal network
-
Have no direct internet access
-
Are reachable only through the internal network
-
Receive all configuration, packages, and updates via the master node
The Ansible roles are written to support two deployment scenarios:
Master: RHEL 9
Workers: Rocky Linux 9
Master: Debian 12
Workers: Debian 12
This project is organized around Ansible roles, each responsible for one concern.
| Feature | RedHat | Debian |
|---|---|---|
| nginx server | ✓ | ✓ |
| Mirror server | ✓ | ✓ |
| Mirror client | ✓ | ✓ |
| DNS server | ✓ | ✓ |
| DNS client | ✓ | ✓ |
| NFS server | ✓ | ✓ |
| NFS client | ✓ | ✓ |
| Slurmd | ✓ | ✓ |
| Slurmctl | ✓ | ✓ |
| Slurmdb | ||
| Kubernetes cluster | ✓ | ✓ |
| Xcat | ||
| LDAP server | ||
| LDAP client |