fifty2technology.openpbs
Description
This role is for installing and setting up OpenPBS on computer nodes, server nodes, or both. It follows the INSTALL
instructions found in the official GitHub repository.
Note: If you change the configuration on a node that is currently running a simulation, OpenPBS will restart, which will also restart the simulation. To avoid issues, only run this on nodes that are not busy.
The Molecule scenario is tested in Podman with Rockylinux 9 and OpenPBS version 23.06.06.
Requirements
- All nodes must be able to SSH into each other (this includes both OpenPBS servers and nodes) using the specified MPI user.
- Inventory groups should be named
pbsheadnode
for the head node andmpinodes
for the compute nodes. If using different group names, update the default variablesopenpbs_server_hostname
,openpbs_server
,openpbs_mom
, and intemplates/pbs.conf.j2
. - Supported Linux distributions include Debian 11, Ubuntu 18.04, and Rockylinux 8/9.
- Ensure working DNS name resolution, which includes FQDNs and non-FQDNs:
- Make sure your DNS servers resolve hostnames correctly.
- Check that
/etc/resolv.conf
has the correctsearch
anddomain
entries. - Hostnames should be in non-FQDN format (like
foo
instead offoo.example.org
).
- For RedHat-based distributions, make sure the PowerTools/CRB repository is enabled.
Role Variables
Variables that can be changed are stored in the defaults/main.yml file and in the table below.
Name | Default value | Description |
---|---|---|
openpbs_version |
latest | Version of OpenPBS to install. It should be 'latest' or match a tag name in OpenPBS (e.g., v20.0.1 ). See the GitHub repository: https://github.com/openpbs/openpbs/tags |
openpbs_install_dir |
/opt/pbs | Directory where OpenPBS will be installed. This will also be added to your $PATH . |
openpbs_build_dir |
/opt/build_pbs | Directory for building OpenPBS. |
openpbs_server_hostname |
"{{ groups['pbsheadnode'][0] }}" |
Hostname of the OpenPBS server (head node). Default is based on inventory group. |
openpbs_server |
"{{ ( inventory_hostname in groups['pbsheadnode'] ) and not ( inventory_hostname in groups['mpinodes'] ) }}" |
Determines if a host is a PBS MOM or server based on group membership. Adjust group names as needed; logic should not be changed. |
openpbs_mom |
"{{ ( inventory_hostname in groups['mpinodes'] ) and not ( inventory_hostname in groups['pbsheadnode'] ) }}" |
Determines if a host is a PBS MOM or server based on group membership. Adjust group names as needed; logic should not be changed. |
openpbs_dbuser_username |
pbsdata | User created for internal PBS use to access the database. Useful in case an update fails and you need to check the DB manually. |
openpbs_dbuser_password |
plzchangeme | Password for the above account. |
Dependencies
None.
Example Playbook
Here is an example of the inventory used:
all:
children:
mpinodes:
hosts:
ubuntumom.example.com:
centosmom.example.com:
debianmom.example.com:
pbsheadnode:
hosts:
pbsserver.example.com:
Example playbook to run:
- hosts: mpinodes,pbsheadnode
gather_facts: true
become: true
roles:
- role: openpbs