From f44019de6407a50a07eabed397d601dd2211a271 Mon Sep 17 00:00:00 2001 From: Wolfgang De Salvador Date: Sun, 8 Jan 2023 22:39:50 +0100 Subject: [PATCH 01/32] Add support for Altair PBS Professional --- .../site-cookbooks/pbspro/recipes/default.rb | 17 +- .../site-cookbooks/pbspro/recipes/execute.rb | 18 +- .../site-cookbooks/pbspro/recipes/login.rb | 12 +- .../site-cookbooks/pbspro/recipes/server.rb | 30 +- templates/openpbs.txt | 1 + templates/pbspro.txt | 415 ++++++++++++++++++ 6 files changed, 480 insertions(+), 13 deletions(-) create mode 100644 templates/pbspro.txt diff --git a/specs/default/chef/site-cookbooks/pbspro/recipes/default.rb b/specs/default/chef/site-cookbooks/pbspro/recipes/default.rb index 89020fd..f3d7dcd 100644 --- a/specs/default/chef/site-cookbooks/pbspro/recipes/default.rb +++ b/specs/default/chef/site-cookbooks/pbspro/recipes/default.rb @@ -3,6 +3,7 @@ # plat_ver = node['platform_version'].to_i +pbsprover = node[:pbspro][:version] if plat_ver >= 8 hwlocs_lib_el8 = node[:pbspro][:hwlocs_lib_el8] @@ -14,4 +15,18 @@ source "#{node['jetpack']['downloads']}/#{hwlocs_lib_el8}" action :install end -end \ No newline at end of file +end + +if node[:pbspro][:commercial] + pbspro_license = node[:pbspro][:license] + + template "/etc/profile.d/pbs_license.sh" do + source "pbs_license.erb" + mode "0644" + owner "root" + group "root" + variables(:licenseserver => pbspro_license) + end +end + + diff --git a/specs/default/chef/site-cookbooks/pbspro/recipes/execute.rb b/specs/default/chef/site-cookbooks/pbspro/recipes/execute.rb index 8d79dc5..ec20c27 100644 --- a/specs/default/chef/site-cookbooks/pbspro/recipes/execute.rb +++ b/specs/default/chef/site-cookbooks/pbspro/recipes/execute.rb @@ -10,12 +10,18 @@ platform = node['platform_family'] pbsdist = "el#{plat_ver}" package_name = node[:pbspro][:package] - -if package_name == nil - if pbsprover.to_i < 20 - package_name = "pbspro-execution-#{pbsprover}.x86_64.rpm" - else - package_name = "openpbs-execution-#{pbsprover}.x86_64.rpm" +pbs_commercial = node[:pbspro][:commercial] + + +if pbs_commercial + package_name = "pbspro-execution-#{pbsprover}.#{pbsdist}.x86_64.rpm" +else + if package_name == nil + if pbsprover.to_i < 20 + package_name = "pbspro-execution-#{pbsprover}.x86_64.rpm" + else + package_name = "openpbs-execution-#{pbsprover}.x86_64.rpm" + end end end diff --git a/specs/default/chef/site-cookbooks/pbspro/recipes/login.rb b/specs/default/chef/site-cookbooks/pbspro/recipes/login.rb index 55ccbd5..1423a86 100644 --- a/specs/default/chef/site-cookbooks/pbspro/recipes/login.rb +++ b/specs/default/chef/site-cookbooks/pbspro/recipes/login.rb @@ -7,13 +7,19 @@ pbsprover = node[:pbspro][:version] plat_ver = node['platform_version'].to_i pbsdist = "el#{plat_ver}" +pbs_commercial = node[:pbspro][:commercial] package_name = node[:pbspro][:package] + if package_name.nil? - if pbsprover.to_i < 20 - package_name = "pbspro-client-#{pbsprover}.x86_64.rpm" + if pbs_commercial + package_name = "pbspro-client-#{pbsprover}.#{pbsdist}.x86_64.rpm" else - package_name = "openpbs-client-#{pbsprover}.x86_64.rpm" + if pbsprover.to_i < 20 + package_name = "pbspro-client-#{pbsprover}.x86_64.rpm" + else + package_name = "openpbs-client-#{pbsprover}.x86_64.rpm" + end end end diff --git a/specs/default/chef/site-cookbooks/pbspro/recipes/server.rb b/specs/default/chef/site-cookbooks/pbspro/recipes/server.rb index a3d9d4f..1d9e7b5 100644 --- a/specs/default/chef/site-cookbooks/pbspro/recipes/server.rb +++ b/specs/default/chef/site-cookbooks/pbspro/recipes/server.rb @@ -29,10 +29,14 @@ end if package_name.nil? - if pbsprover.to_i < 20 - package_name = "pbspro-server-#{pbsprover}.x86_64.rpm" + if pbs_commercial + package_name = "pbspro-server-#{pbsprover}.#{pbsdist}.x86_64.rpm" else - package_name = "openpbs-server-#{pbsprover}.x86_64.rpm" + if pbsprover.to_i < 20 + package_name = "pbspro-server-#{pbsprover}.x86_64.rpm" + else + package_name = "openpbs-server-#{pbsprover}.x86_64.rpm" + end end end @@ -40,6 +44,15 @@ project 'pbspro' end +if pbs_commercial + user 'pbsdata' do + system true + manage_home true + home '/home/pbsdata' + shell '/bin/bash' + end +end + if plat_ver < 8 yum_package package_name do source "#{node['jetpack']['downloads']}/#{package_name}" @@ -80,6 +93,17 @@ action [:enable, :start] end +if pbs_commercial +pbspro_license = node[:pbspro][:license] + bash 'setup license cyclecloud-pbspro' do + code <<-EOH + /opt/pbs/bin/qmgr -c 'set server pbs_license_info=#{pbspro_license}' + EOH + + action :run + end +end + file "/etc/profile.d/azpbs_autocomplete.sh" do content 'eval "$(/opt/cycle/pbspro/venv/bin/register-python-argcomplete azpbs)" || echo "Warning: Autocomplete is disabled" 1>&2' mode '0755' diff --git a/templates/openpbs.txt b/templates/openpbs.txt index 3a8d4af..c51f7cb 100644 --- a/templates/openpbs.txt +++ b/templates/openpbs.txt @@ -20,6 +20,7 @@ Autoscale = $Autoscale [[[configuration]]] pbspro.version = $PBSVersion + pbspro.commercial = false # For fast spin-up after Deallocate, force an immediate re-converge on boot cyclecloud.converge_on_boot = true diff --git a/templates/pbspro.txt b/templates/pbspro.txt new file mode 100644 index 0000000..bacec95 --- /dev/null +++ b/templates/pbspro.txt @@ -0,0 +1,415 @@ + +################################ +## Cluster Configuration File ## +################################ + +[cluster Altair PBS Professional] +FormLayout = selectionpanel +Category = Schedulers +IconURL="static/cloud/cluster/ui/ClusterIcon/altair-icon.png" + +Autoscale = $Autoscale + + [[node defaults]] + UsePublicNetwork = $UsePublicNetwork + Credentials = $Credentials + ImageName = $ImageName + SubnetId = $SubnetId + Region = $Region + KeyPairLocation = ~/.ssh/cyclecloud.pem + + [[[configuration]]] + pbspro.version = $PBSVersion + pbspro.commercial = true + pbspro.license = $PBSLicenseServer + # For fast spin-up after Deallocate, force an immediate re-converge on boot + cyclecloud.converge_on_boot = true + + # Disable normal NFS exports and mounts + cyclecloud.mounts.sched.disabled = true + cyclecloud.mounts.shared.disabled = true + cyclecloud.exports.sched.disabled = true + cyclecloud.exports.shared.disabled = true + cyclecloud.exports.sched.samba.enabled = false + cyclecloud.exports.shared.samba.enabled = false + cyclecloud.exports.defaults.samba.enabled = false + cshared.server.legacy_links_disabled = true + + [[[cluster-init cyclecloud/pbspro:default]]] + Optional = false + + [[[configuration cyclecloud.mounts.nfs_shared]]] + type = nfs + mountpoint = /shared + export_path = $NFSSharedExportPath + address = $NFSAddress + options = $NFSSharedMountOptions + + [[[configuration cyclecloud.mounts.nfs_sched]]] + type = nfs + mountpoint = /sched + disabled = $NFSSchedDisable + + [[[configuration cyclecloud.mounts.additional_nfs]]] + disabled = ${AdditionalNAS isnt true} + type = nfs + address = $AdditonalNFSAddress + mountpoint = $AdditionalNFSMountPoint + export_path = $AdditionalNFSExportPath + options = $AdditionalNFSMountOptions + + + [[node server]] + ImageName = $SchedulerImageName + MachineType = $serverMachineType + IsReturnProxy = $ReturnProxy + AdditionalClusterInitSpecs = $serverClusterInitSpecs + + [[[configuration]]] + cyclecloud.mounts.nfs_sched.disabled = true + cyclecloud.mounts.nfs_shared.disabled = ${NFSType != "External"} + + + [[[cluster-init cyclecloud/pbspro:server]]] + + [[[network-interface eth0]]] + AssociatePublicIpAddress = $UsePublicNetwork + + [[[input-endpoint ganglia]]] + PrivatePort = 8652 + PublicPort = 8652 + + [[[volume sched]]] + Size = 1024 + SSD = True + Mount = builtinsched + Persistent = False + + [[[volume shared]]] + Size = ${ifThenElse(NFSType == "Builtin", FilesystemSize, 2)} + SSD = True + Mount = builtinshared + Persistent = ${NFSType == "Builtin"} + + [[[configuration cyclecloud.mounts.builtinsched]]] + mountpoint = /sched + fs_type = xfs + + [[[configuration cyclecloud.mounts.builtinshared]]] + disabled = ${NFSType != "Builtin"} + mountpoint = /shared + fs_type = xfs + + [[[configuration cyclecloud.exports.builtinsched]]] + export_path = /sched + options = no_root_squash + samba.enabled = false + type = nfs + + [[[configuration cyclecloud.exports.builtinshared]]] + disabled = ${NFSType != "Builtin"} + export_path = /shared + samba.enabled = false + type = nfs + + + + [[nodearray login]] + InitialCount = $NumberLoginNodes + MachineType = $serverMachineType + + [[[cluster-init cyclecloud/pbspro:login]]] + [[[configuration]]] + autoscale.enabled = false + + [[nodearray execute]] + MachineType = $ExecuteMachineType + MaxCoreCount = $MaxExecuteCoreCount + + Interruptible = $UseLowPrio + AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs + + + [[[configuration]]] + autoscale.enabled = $Autoscale + + [[[cluster-init cyclecloud/pbspro:execute]]] + + [[[network-interface eth0]]] + AssociatePublicIpAddress = $ExecuteNodesPublic + + +[parameters About] +Order = 1 + + [[parameters About Altair PBS Pro]] + + [[[parameter pbspro]]] + HideLabel = true + Config.Plugin = pico.widget.HtmlTemplateWidget + Config.Template = ''' + + + + + +
Altair logo

 

Thank you for trying Altair™ PBS Professional™!

Altair PBS Professional ™ is a fast, powerful workload manager designed to improve + productivity, optimize utilization and efficiency, and simplify administration for clusters, + clouds, and supercomputers — from the biggest HPC workloads to millions of small, high-throughput + jobs. Altair PBS Professional ™ automates job scheduling, management, monitoring, and reporting, + and it's the trusted solution for complex Top500 systems as well as smaller clusters.

 

Additional Altair#0153 PBS Professional™ Resources:

''' + + +[parameters Required Settings] +Order = 10 + + [[parameters Virtual Machines ]] + Description = "The cluster, in this case, has two roles: the scheduler server-node with shared filer and the execute hosts. Configure which VM types to use based on the requirements of your application." + Order = 20 + + [[[parameter Region]]] + Label = Region + Description = Deployment Location + ParameterType = Cloud.Region + + [[[parameter serverMachineType]]] + Label = Server VM Type + Description = The VM type for scheduler server and shared filer. + ParameterType = Cloud.MachineType + DefaultValue = Standard_D8as_v4 + + [[[parameter ExecuteMachineType]]] + Label = Execute VM Type + Description = The VM type for execute nodes + ParameterType = Cloud.MachineType + DefaultValue = Standard_F2s_v2 + Config.Multiselect = true + + + [[parameters Auto-Scaling]] + Description = "The cluster can autoscale to the workload, adding execute hosts as jobs are queued. To enable this check the box below and choose the initial and maximum core counts for the cluster" + Order = 30 + + [[[parameter Autoscale]]] + Label = Autoscale + DefaultValue = true + Widget.Plugin = pico.form.BooleanCheckBox + Widget.Label = Start and stop execute instances automatically + + [[[parameter MaxExecuteCoreCount]]] + Label = Max Cores + Description = The total number of execute cores to start + DefaultValue = 100 + Config.Plugin = pico.form.NumberTextBox + Config.MinValue = 1 + Config.IntegerOnly = true + + [[[parameter UseLowPrio]]] + Label = Low Priority + DefaultValue = false + Widget.Plugin = pico.form.BooleanCheckBox + Widget.Label = Use low priority instances for execute hosts + + [[parameters Networking]] + Order = 40 + + [[[parameter SubnetId]]] + Label = Subnet ID + Description = Subnet Resource Path (ResourceGroup/VirtualNetwork/Subnet) + ParameterType = Azure.Subnet + Required = True + +[parameters Network Attached Storage] +Order = 15 + + + [[parameters Scheduler Mount]] + Order = 5 + [[[parameter About sched]]] + HideLabel = true + Config.Plugin = pico.widget.HtmlTemplateWidget + Config.Template = '''

The directory /sched is a network attached mount and exists in all nodes of the cluster. + It's managed by the scheduler node. + To disable the mount of the /sched directory, and to supply your own for a hybrid scenario, select the checkbox below ''' + Order = 6 + + [[[parameter NFSSchedDisable]]] + HideLabel = true + DefaultValue = false + Widget.Plugin = pico.form.BooleanCheckBox + Widget.Label = External Scheduler + + [[parameters Default NFS Share]] + Order = 10 + [[[parameter About shared]]] + HideLabel = true + Config.Plugin = pico.widget.HtmlTemplateWidget + Config.Template := "

The directory /shared is a network attached mount and exists in all nodes of the cluster. Users' home directories reside within this mountpoint with the base homedir /shared/home.

There are two options for providing this mount:
[Builtin]: The scheduler node is an NFS server that provides the mountpoint to the other nodes of the cluster.
[External NFS]: A network attached storage such as Azure Netapp Files, HPC Cache, or another VM running an NFS server, provides the mountpoint.

" + Order = 20 + + [[[parameter NFSType]]] + Label = NFS Type + ParameterType = StringList + Config.Label = Type of NFS to use for this cluster + Config.Plugin = pico.form.Dropdown + Config.Entries := {[Label="External NFS"; Value="External"], [Label="Builtin"; Value="Builtin"]} + DefaultValue = Builtin + + [[[parameter NFSAddress]]] + Label = NFS IP Address + Description = The IP address or hostname of the NFS server. Also accepts a list comma-separated addresses, for example, to mount a frontend load-balanced Azure HPC Cache. + Config.ParameterType = String + Conditions.Hidden := NFSType != "External" + + [[[parameter NFSSharedExportPath]]] + Label = Shared Export Path + Description = The path exported by the file system + DefaultValue = /shared + Conditions.Hidden := NFSType != "External" + + [[[parameter NFSSharedMountOptions]]] + Label = NFS Mount Options + Description = NFS Client Mount Options + Conditions.Hidden := NFSType != "External" + + [[[parameter FilesystemSize]]] + Label = Size (GB) + Description = The filesystem size + DefaultValue = 100 + + Config.Plugin = pico.form.NumberTextBox + Config.MinValue = 10 + Config.MaxValue = 10240 + Config.IntegerOnly = true + Conditions.Excluded := NFSType != "Builtin" + + [[parameters Additional NFS Mount]] + Order = 20 + [[[parameter Additional NFS Mount Readme]]] + HideLabel = true + Config.Plugin = pico.widget.HtmlTemplateWidget + Config.Template := "

Mount another NFS endpoint on the cluster nodes

" + Order = 20 + + [[[parameter AdditionalNAS]]] + HideLabel = true + DefaultValue = false + Widget.Plugin = pico.form.BooleanCheckBox + Widget.Label = Add NFS mount + + [[[parameter AdditonalNFSAddress]]] + Label = NFS IP Address + Description = The IP address or hostname of the NFS server. Also accepts a list comma-separated addresses, for example, to mount a frontend load-balanced Azure HPC Cache. + Config.ParameterType = String + Conditions.Excluded := AdditionalNAS isnt true + + [[[parameter AdditionalNFSMountPoint]]] + Label = NFS Mount Point + Description = The path at which to mount the Filesystem + DefaultValue = /data + Conditions.Excluded := AdditionalNAS isnt true + + [[[parameter AdditionalNFSExportPath]]] + Label = NFS Export Path + Description = The path exported by the file system + DefaultValue = /data + Conditions.Excluded := AdditionalNAS isnt true + + [[[parameter AdditionalNFSMountOptions]]] + Label = NFS Mount Options + Description = NFS Client Mount Options + Conditions.Excluded := AdditionalNAS isnt true + + + +[parameters Advanced Settings] +Order = 20 + + [[parameters Azure Settings]] + Order = 10 + + [[[parameter Credentials]]] + Description = The credentials for the cloud provider + ParameterType = Cloud.Credentials + + [[parameters PBSPro Settings ]] + Description = "Section for configuring OpenPBS" + Order = 5 + + + + [[parameters Software]] + Description = "Specify the scheduling software, and base OS installed on all nodes, and optionally the cluster-init and chef versions from your Locker." + Order = 10 + + + [[[parameter SchedulerImageName]]] + Label = Scheduler OS + ParameterType = Cloud.Image + Config.OS = linux + DefaultValue = almalinux8 + Config.Filter := Package in {"cycle.image.centos7", "cycle.image.centos8", "almalinux8"} + + [[[parameter ImageName]]] + Label = Compute OS + ParameterType = Cloud.Image + Config.OS = linux + DefaultValue = almalinux8 + Config.Filter := Package in {"cycle.image.centos7", "cycle.image.centos8", "almalinux8"} + + [[[parameter PBSVersion]]] + Label = Altair PBS Version + Config.Plugin = pico.form.Dropdown + Config.Entries := {[Label="Altair PBS Pro 2022.1"; Value="2022.1.1"]} + DefaultValue = 2022.1.1 + + [[[parameter PBSLicenseServer]]] + Label = Altair License Server location + Description = Altair License Server location + + [[[parameter serverClusterInitSpecs]]] + Label = Server Cluster-Init + DefaultValue = =undefined + Description = Cluster init specs to apply to the server node + ParameterType = Cloud.ClusterInitSpecs + + [[[parameter ExecuteClusterInitSpecs]]] + Label = Execute Cluster-Init + DefaultValue = =undefined + Description = Cluster init specs to apply to execute nodes + ParameterType = Cloud.ClusterInitSpecs + + [[[parameter NumberLoginNodes]]] + Label = Num Login Nodes + DefaultValue = 0 + Description = Number of optional login nodes to create. + Config.Plugin = pico.form.NumberTextBox + Config.MinValue = 0 + Config.MaxValue = 10000 + Config.IntegerOnly = true + + + [[parameters Advanced Networking]] + Description = Advanced networking settings + + [[[parameter ReturnProxy]]] + Label = Return Proxy + DefaultValue = true + ParameterType = Boolean + Config.Label = Use SSH tunnel to connect to CycleCloud (required if direct access is blocked) + + [[[parameter UsePublicNetwork]]] + Label = Public Head Node + DefaultValue = true + ParameterType = Boolean + Config.Label = Access server node from the Internet + + [[[parameter ExecuteNodesPublic]]] + Label = Public Execute + DefaultValue = false + ParameterType = Boolean + Config.Label = Access execute nodes from the Internet + Conditions.Excluded := UsePublicNetwork isnt true From 1311c8596719a4a4d87a7dab5b3e16476c4c3d79 Mon Sep 17 00:00:00 2001 From: Wolfgang De Salvador Date: Sun, 8 Jan 2023 22:44:44 +0100 Subject: [PATCH 02/32] Add pbs_license.erb --- .../chef/site-cookbooks/pbspro/templates/default/pbs_license.erb | 1 + 1 file changed, 1 insertion(+) create mode 100644 specs/default/chef/site-cookbooks/pbspro/templates/default/pbs_license.erb diff --git a/specs/default/chef/site-cookbooks/pbspro/templates/default/pbs_license.erb b/specs/default/chef/site-cookbooks/pbspro/templates/default/pbs_license.erb new file mode 100644 index 0000000..98a9d30 --- /dev/null +++ b/specs/default/chef/site-cookbooks/pbspro/templates/default/pbs_license.erb @@ -0,0 +1 @@ +export PBS_LICENSE_INFO=<%= @licenseserver %> From 3eb4403fb17b002a711f108e97f90349e8ba7cb6 Mon Sep 17 00:00:00 2001 From: Wolfgang De Salvador Date: Sun, 8 Jan 2023 22:58:21 +0100 Subject: [PATCH 03/32] Remove unused variable from default.rb --- specs/default/chef/site-cookbooks/pbspro/recipes/default.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/specs/default/chef/site-cookbooks/pbspro/recipes/default.rb b/specs/default/chef/site-cookbooks/pbspro/recipes/default.rb index f3d7dcd..864aeba 100644 --- a/specs/default/chef/site-cookbooks/pbspro/recipes/default.rb +++ b/specs/default/chef/site-cookbooks/pbspro/recipes/default.rb @@ -3,7 +3,6 @@ # plat_ver = node['platform_version'].to_i -pbsprover = node[:pbspro][:version] if plat_ver >= 8 hwlocs_lib_el8 = node[:pbspro][:hwlocs_lib_el8] From 81cb2a06218b7b1a812bf165ea81196fbb9ac222 Mon Sep 17 00:00:00 2001 From: Wolfgang De Salvador Date: Sun, 8 Jan 2023 23:49:31 +0100 Subject: [PATCH 04/32] Update README.md --- README.md | 73 ++++++++++++++++++++++++++++++++++++++++++++ templates/pbspro.txt | 1 + 2 files changed, 74 insertions(+) diff --git a/README.md b/README.md index 9552da7..607e78d 100644 --- a/README.md +++ b/README.md @@ -296,6 +296,79 @@ By default, `azpbs` will use `/opt/cycle/pbspro/logging.conf`, as defined in `/o Every `autoscale` iteration, `azpbs` prints out a table of all of the nodes, their resources, their assigned jobs and more. This log contains these values and nothing else. +## Using Altair PBS Professional in CycleCloud + +CycleCloud project for OpenPBS uses opensource version of OpenPB. You may use your own +[Altair PBS Professional](https://www.altair.com/pbs-professional/) licenses and installers according to your Altair PBS Professional license agreement. +This section documents how to use Altair PBS Professional with the CycleCloud OpenPBS project. + +### Prerequisites + +This example will use the 2022.1.1 version, which has been tested with the template. + +1. Users must provide Altair PBS Professional binaries (the same can work with RHEL 8.x with _.el8.x86_64.rpm_) + + * pbspro-client-2022.1.1.el7.x86_64.rpm + * pbspro-execution-2022.1.1.el8.x86_64.rpm + * pbspro-server-2022.1.1.el8.x86_64.rpm + +2. A license server reachable from Azure CycleCloud Altair PBS Professional head node and execution nodes + +3. (Optional to tune avilable versions) The cyclecloud cli must be configured. Documentation is available [here](https://docs.microsoft.com/en-us/azure/cyclecloud/install-cyclecloud-cli) + + +### Copy the binaries into the cloud locker + +To copy the installer with _azcopy_ to the Azure CycleCloud storage account, use the following commands: + +```bash + +$ azcopy cp pbspro-client-2022.1.1.el7.x86_64.rpm https://.blob.core.windows.net/cyclecloud/pbspro/blobs/ +$ azcopy cp pbspro-execution-2022.1.1.el7.x86_64.rpm https://.blob.core.windows.net/cyclecloud/pbspro/blobs/ +$ azcopy cp pbspro-server-2022.1.1.el7.x86_64.rpm https://.blob.core.windows.net/cyclecloud/pbspro/blobs/ +``` + +### Define license server + +In Altair PBS Professional cluster template, a specific parameter in Advanced Settings allows the definition of license server IP and port. + +### Adding other versions to the cluster template + +Make a local copy of the Altair PBS Professional template and modify it to use other versions of the installers +instead of the default 2022.1.1. + +```bash +wget https://raw.githubusercontent.com/Azure/cyclecloud-pbspro/master/templates/pbspro.txt +``` + +In the _pbspro.txt_ file, locate the `PBSVersion` definition and +insert the desired version in the options. For example for version + +> NOTE: +> The version should match the one in installer file name. + +```ini + [[[parameter PBSVersion]]] + Label = Altair PBS Version + Config.Plugin = pico.form.Dropdown + Config.Entries := {[Label="Altair PBS Pro 2021.1"; Value="2021.1.4"]} + DefaultValue = 2021.1.4 + +``` + +These configs will make the additional versions available in the UI + +### Import the cluster template file + +Using the cyclecloud cli, import a cluster template from the new cluster template file. + +```bash +cyclecloud import_template -f pbspro.txt --force +``` + +Similar to this [tutorial](https://docs.microsoft.com/en-us/azure/cyclecloud/tutorials/modify-cluster-template) in the documentation, new Altair PBS Professional cluster is now available in the *Create Cluster* menu in the UI. + +Configure and create the cluster in the UI, save it, and start it. # Contributing diff --git a/templates/pbspro.txt b/templates/pbspro.txt index bacec95..567218e 100644 --- a/templates/pbspro.txt +++ b/templates/pbspro.txt @@ -369,6 +369,7 @@ Order = 20 [[[parameter PBSLicenseServer]]] Label = Altair License Server location Description = Altair License Server location + Required = True [[[parameter serverClusterInitSpecs]]] Label = Server Cluster-Init From dcec766f995a39dc5e5fd4b1fbb6d7f432a0129e Mon Sep 17 00:00:00 2001 From: Wolfgang De Salvador Date: Mon, 9 Jan 2023 00:00:00 +0100 Subject: [PATCH 05/32] Fix template description for pbspro --- templates/pbspro.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/pbspro.txt b/templates/pbspro.txt index 567218e..68df4ab 100644 --- a/templates/pbspro.txt +++ b/templates/pbspro.txt @@ -150,13 +150,13 @@ Order = 1 Config.Template = ''' - - +
Altair logo

 

Thank you for trying Altair™ PBS Professional™!

Altair PBS Professional ™ is a fast, powerful workload manager designed to improve +

Altair™ PBS Professional™ is a fast, powerful workload manager designed to improve productivity, optimize utilization and efficiency, and simplify administration for clusters, clouds, and supercomputers — from the biggest HPC workloads to millions of small, high-throughput jobs. Altair PBS Professional ™ automates job scheduling, management, monitoring, and reporting, and it's the trusted solution for complex Top500 systems as well as smaller clusters.

 

Additional Altair#0153 PBS Professional™ Resources:

Additional Altair™ PBS Professional™ Resources: