This tool is designed to integrate seemlessly into existing HPC infrastructures. The following sections provide information on how to install and configure xbat.
When considering xbat for your cluster, make sure the following prerequisites are met:
- Slurm (other schedulers are not supported)
- Root access to the cluster
- Docker or Podman (compose) on the management node (compute nodes do not require Docker/Podman)
- User Management System (LDAP, IPA or PAM)
The main service of xbat (xbat.service
) is typically installed on a login or management node of the cluster and contains all relevant services, including the databases, in a docker-compose infrastructure (see here for more details). In case your are using a diskless image for this node, consider deploying the databases on a separate node to prevent data loss (use --no-db
during installation and deploy databases manually).
Users can submit jobs for xbat via the CLI or the web interface. While the latter provides additional features like support for paramter studies and more control over the job submission, it also requires access to the users home directories. Make sure the home directories are accessible from the management node and can be mounted into the xbat.service
containers.
Start by cloning the xbat repository and navigate to the root directory of the project.
git clone https://github.com/MEGWARE-HPC/xbat
cd xbat
git checkout <branch> # optionally check out certain branch, default is 'main'
A setup.sh
file is provided for the installation, upgrading and removal of xbat. There are several configuration options which can be specified on execution.
./setup.sh (install|remove)
[--help] # print this message
[--executor (docker|podman)] # available container executor (required)
[--home-mnt <path>] # mount to home directories (required)
[--port <port>] # port to bind frontend to (default 7000)
[--frontend-network <ip>] # bind frontend to certain network
[--no-db] # deploys xbat without databases - used when databases are hosted on another server
[--questdb-address <address>] # address of questdb with port (only required when using --no-db)
[--expose-questdb] # expose QuestDB PGWire port (8812) to the frontend network (for development)
[--workers <count>] # number of frontend and backend workers (default 8)
[--certificate-dir <dir>] # specifies directory container certificates (default /etc/xbat/certs)
[--user <user>] # change user for xbat service (default xbat - old users are not removed automatically)
On systems with where SELinux is in "enforcing mode" (when getenforce
returns 1
) problems might arise with the docker infrastructure trying to access mounted directories. To prevent this, set SELinux to "permissive mode" or adjust the SELinux policies accordingly.
# this will reset after a reboot
setenforce 0
# to persist this setting, edit /etc/selinux/config and set
SELINUX=permissive
During the initial installation a system account called xbat
is created. All configuration and database related files are owned by this user.
The tool is installed as a systemd-service called xbat.service
- usual systemd-commands apply. Start xbat.service
and continue with the initial database setup.
systemctl start xbat.service
After configuring both databases, adjust /etc/xbat/xbat.conf
accordingly. Restart xbat.service
after every change to the configuration file.
Updating xbat is as straight forward as the initial installation. Just execute the setup.sh
script with the same parameters as before.