Skip to content

Commit a22e77d

Browse files
author
deepakt7340
committed
feat: manage slurm-web module from Puppet
1 parent 859be00 commit a22e77d

File tree

15 files changed

+547
-30
lines changed

15 files changed

+547
-30
lines changed
2.75 KB
Binary file not shown.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
3+
mQINBGMMw00BEADJp7W0yoLsB0ZA6Y80q1oQ3TTCZkogyWJ7hjEdx92/co9zcdeZ
4+
5ytu+uFVXTfyWRDJF4CedB18EUoB2waJ0K2Vjj85c2aGbCMFqI6xgjcttQec2CuZ
5+
UC3b4tBg9r78iiXkOq/CgP0jpGzllpFoU/mfo8HkuZ3P0H2fsKgAVIKhQ37cNPue
6+
a2HboVM1Evae+DiRWwKIAwuPtNvhIqz1JPuHWknOV3j8Se+UzSW2BkLgbAQaLZwf
7+
2SnqA7UJY5ZOC3t0OyGp7NEB7QzAysZIGiZMvFIjJyUu1YEAikoj/T8GwLz2KqG0
8+
ryExfA+SfKJfYCYNWNbxUcpblfcoXG8/+jvOt1NuhKB9x/lK1mH6wZ5XfTf3U+D/
9+
9HOnblQMC15AbDSgTwDEGlCd/qnj9b9Pv4I7ovrsflSJEWXtJ07r4fUxNX/imGNh
10+
IaYjp2TvNh1hUhR0DaGbGYEKqE3RYpd86Azwpxsuz4O+HCZslbW/AdW7d0JCIeC2
11+
4AiKvsUlh8N0IH9z44pLOQjX9FRHiV6qz6z6COk4aghSGBdctM5TYl1h5Kq/N56/
12+
TZwaDK497ymT8QOnU68A+E1uIvFXEvrKwzvceWP2cTBq+m11uSxCY6wiSbt5881S
13+
gXzqf3BuMVb8nA2Sfuo12Gq96XE8KuU4aa+MAPKfhX9Fjpuc02prdr1geQARAQAB
14+
tCNSYWNrc2xhYiB0ZWFtIDxjb250YWN0QHJhY2tzbGFiLmlvPokCTgQTAQoAOBYh
15+
BCx8VkfthIAZiGjEAnO9cCq/DPL4BQJjDMNNAhsDBQsJCAcCBhUKCQgLAgQWAgMB
16+
Ah4BAheAAAoJEHO9cCq/DPL4AdUQAI+eYHCRvHbFiDrUJCQRAYtSK8gt09XWq8TD
17+
JneDd8qrKYcxfAWgxIITQ2O6ges5uCy3O7m2Xp/s86ZpZw4sy3ayVUxDM++SOymN
18+
HTJlVlbhPI6+C6AWP7fMbDNIHIB7Px48hiQkhBAOqgjyfyCpnqgCCp6WVdGWsBZ+
19+
IvFiRUBFOG92F0oMeVlTNbMb1mb24NLpgss5xN+jFQ/d86jxUiH+nnkvAtr1AEPS
20+
skCVAONwOHm5M6yx+TJsqf42UEgj6a6mmAmC8Bao5KMUoejpHTWtqiDOHwh9wSNO
21+
au4fU/IiJXAI8uGfDkvtHEaRq34IO7zHOcYpPGniCUNBUIgHOAumjQK81qLehEN2
22+
F5Bhu0nkA6L4WsRAK5uo0w3Tn/HWFUNDk2sYEOsMvyhRhOVBjRRFxH2jubUyrri4
23+
5kIQ/UQyxVswEEtYzqDBd66PCpxpkhyoyzJezCp3euGIhOuzXfNSSNgS7NQD+rwM
24+
zVg1MElmxdItgfgRwXqnxSZSPpJpqjzw30Ge+ZF3azgnT+uQMGyKKXnqH1ZV0AFO
25+
u7MS1HgT57U7yTI7lIp3ruhelGjaXsHwJEhItmIHyVnBGYSSaBNssQtGyrgDJPsM
26+
Sqmrb4+3BRX2yf5lmwwl8ODNgFGmjzafcjk7Gp7xy7gKMer4TvxqSQRAYn25y9Qh
27+
J3ioBCEnuQINBGMMw1EBEAC1lmEYy57ynG2WUDHcFl3U6FCBn+RNZzyAG/nQ2RLt
28+
KGwqPBDrmoELPdBcwPQ3B5Nto5ESrotioRj0tXHQp8da8r+d0IPAMc5iZ4GmNCrs
29+
8rkrVgbmbJ9M6vXjVdhb/9LzhJExhrBUpKbeBxKHNOBC87pZtYHXCja9XLXY4cVT
30+
+FfWKGrqgzO3MNv7sSbeBgGL6T0EakRYUUb+VQOy4o2bONUrz9HpgG8YN62SyKjK
31+
FlRw35ZLBilPpMXh91qr4J7AzkQzKNYHTSeZCeXSoUH0rTLBnmiQYmuKoe08l625
32+
lIuZVjSpuFem42dkINY2HAFVenqGTWXQBtbZpg7mfoCVN0W7Xq5ILeZIhfOJSUAT
33+
zh+GSgSElcv338lKBhhwsxO1PKa5KkaoUGPkgqnrk97U4vpi3VUaN1jz7jXaTEPi
34+
rqT1LBSWS0KLiF+yE6L1mNbBxlaMnQDWJ0ngN99ZYFuGHM/9DoagVykmZWG1UzO+
35+
z76oYoRmm89loAJjRgCEnoDYeu5QVJn2Z+qgXVbLK0I0XMsdGVlwhcbxrldo5HMK
36+
7LjHwFtLNRy368JhIXRn5mCb3ldo57TWGsc+B9m1kIxy83+xrpCVh+IuTRm9VOVF
37+
x3QYiZOFzoYI4xGSU9Qw9Q2w3agMkCHzaWfbvU3UkHSZZcp+lOK+Oe7g7WBqj7BL
38+
KwARAQABiQRsBBgBCgAgFiEELHxWR+2EgBmIaMQCc71wKr8M8vgFAmMMw1ECGwIC
39+
QAkQc71wKr8M8vjBdCAEGQEKAB0WIQQckhglkniEUxVodic/Tst2bIwo1wUCYwzD
40+
UQAKCRA/Tst2bIwo1xxxEACYhDsbuTOQ5Gcx4OkYSPhJhec6TuAtwha4dClVqGQX
41+
+BUNTGmQSZV93zaKuzAUqg2mvZzOyiHJLyHZpuNW/0ca+/nmrdn8nVfIs2QsVIbD
42+
9cns+7zSJQzbWS3Y8bGpYlCNxKkj8UXBS/BPLLNElXS8CQhWRWHVnttnqzB24pCx
43+
mqOEIM3c9q47Sd2ipw1N1hwthgNJnJLf97+8nJk7XiKDCFDtAVjewm5znPVFBnoq
44+
F73EIp0wAeiTqYVbHEQgKKRIPEdLX31OTK5ZYU+0+TbekWrvjvTTXTwcy9DT7ruW
45+
yM9XvRGtyeslDEmcR2EU5vPrrexLse75EePLLH0z6fuwXqbuXrg6hleP7hZEhb36
46+
n3zoO4CRewxCTMqucVY0C8OjWHBpo2HIeH9nwnAyjyS2Aqq7PaH4G6MHoMDaAcul
47+
RazPETx30NQCw5xyAdSLR4ExEU857VV/yPyGSzSO9v5lUmg30+NdZ8ToPlv6YV8l
48+
OeAwIEOUt9/3ju36oG3i1kbVDXrIVgUCeuhrjh5oCmyn1qZgfqP3C2C3sopUjHgu
49+
4Tvf4Lb1Xk7k2E9LUVCi6tvaC0JKZi6t+KdNB8G3Va965KIGWjvAUuEwvBn3C5oX
50+
3d9KBBpkZrH0FzvND5OcrF1ThTG6UFDstzyGHHS7EdIMKEYtzqFdKiMhsv1IFpvd
51+
7eFPEAC2p7fa/ZP/SSwRyYCzpQzasgFTIYy5FXxXbs3KZQwmn0D6Kb9PS8Epp/AR
52+
nC3zO2NyoCJC2GRQo7RppLHOmq3XWecQfur9PxdKfaMwmRDdQmQIpWkv39LV4kza
53+
ChETGkm0LrdIUdNMGUXf9AnFN/suceSOFgvq+IhdQIVj9qwCOzVYpHaN4GmdHAZN
54+
uTcp6FOoYmjAuKlodBrkXruarzSWkwt/dR1ieCvqhqnb9an5WbZKup4/0a8oNz+C
55+
Zgc65M0WXeD6Nuv1kDHpI1KqtJhJLQcx/VTt9VHSsOBok8TEiN7hh0O6VqqaCEiV
56+
x8x9UzbccLheji7fgoqTUmCS5eP4lg0dTwR95OkJ1wLwa5OlKgHbqAmW5nuBML9M
57+
vq8AaaocYHR+x+cOhEVaKzc/6xHLBixo/+LgmaVOauvLHvcWGTaHxuNWAqdP1jkM
58+
3tMJJ2GWXxQVMpwqdEUtNp5e05wwyy32wbSMHbqrPLpjWtOMJrZk1beW6X4NWdr3
59+
ZcNzbDCWVtTP/w0R8BF7KLIzEz+f2p+8CLtA8DLSmfh2XTVVswhxe0OTSu9Gy1+B
60+
BR5Ew5KN7koH9PX0/pnd6y9/hLIDUDbpBan7Uup1NVa9Ou6OlXOG7oIV3E1TOKGW
61+
xR0WGvzzmO/tkeML2bQO61IAtNv8SIRr0/VGxd7/PthWaEvkOg==
62+
=C9fp
63+
-----END PGP PUBLIC KEY BLOCK-----
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Rackslab Slurm-web APT repos
2+
class eit_repos::apt::rackslab_slurmweb (
3+
Boolean $ensure = true,
4+
Boolean $noop_value = $eit_repos::noop_value,
5+
) {
6+
7+
$distro = $facts['os']['distro']['release']
8+
$release = $facts['os']['distro']['release']['full']
9+
10+
# Get the architecture
11+
$architecture = $facts['os']['architecture'] ? {
12+
'aarch64' => 'arm64',
13+
default => 'amd64',
14+
}
15+
16+
if $facts['os']['distro']['id'] == 'Ubuntu' {
17+
apt::source { 'rackslab-slurmweb':
18+
ensure => ensure_present($ensure),
19+
location => "https://pkgs.rackslab.io/deb/ubuntu${release}",
20+
noop => $noop_value,
21+
architecture => $architecture,
22+
release => $distro,
23+
repos => 'slurmweb-5',
24+
key => {
25+
name => 'rackslab-slurmweb.asc',
26+
source => 'puppet:///modules/eit_repos/apt/rackslab-slurmweb.gpg',
27+
},
28+
}
29+
}
30+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Rackslab slurm-web yum repos
2+
class eit_repos::yum::rackslab_slurmweb (
3+
Boolean $ensure = true,
4+
Boolean $noop_value = $eit_repos::noop_value,
5+
) {
6+
7+
yumrepo { 'rackslab-slurmweb-5' :
8+
ensure => ensure_present($ensure),
9+
baseurl => "https://pkgs.rackslab.io/rpm/el\$releasever/slurmweb-5/\$basearch",
10+
enabled => 1,
11+
noop => $noop_value,
12+
gpgcheck => 1,
13+
descr => 'Rackslab slurmweb-5',
14+
gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rackslab'
15+
}
16+
17+
eit_repos::yum::gpgkey { 'rackslab-slurmweb-5':
18+
ensure => ensure_present($ensure),
19+
path => '/etc/pki/rpm-gpg/RPM-GPG-KEY-Rackslab',
20+
source => 'puppet:///modules/eit_repos/yum/RPM-GPG-KEY-Rackslab-Slurmweb',
21+
noop_value => $noop_value,
22+
}
23+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
type Eit_types::Slurm::Agent = Struct[{
2+
'service' => Struct[{
3+
'cluster' => String,
4+
}],
5+
'slurmrestd' => Struct[{
6+
'jwt_mode' => Enum['static', 'dynamic'],
7+
'jwt_token' => String,
8+
}],
9+
}]
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
type Eit_types::Slurm::Dbd = Struct[{
2+
Optional['innodb_buffer_pool_size'] => Pattern[/^\d+[MG]$/], # e.g. '3G' or '512M'
3+
Optional['innodb_lock_wait_timeout'] => Integer, # e.g. 500
4+
Optional['innodb_log_file_size'] => Pattern[/^\d+[MG]$/], # e.g. '512M'
5+
'storagehost' => String, # e.g. 'localhost'
6+
Optional['storagecharset'] => String, # default: utf8
7+
Optional['storagecollate'] => String, # default: utf8_general_ci
8+
}]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
type Eit_types::Slurm::Gateway = Struct[{
2+
'service' => Struct[{
3+
'interface' => String,
4+
'port' => Optional[Integer],
5+
}],
6+
'ui' => Struct[{
7+
'host' => String,
8+
}],
9+
'authentication' => Struct[{
10+
'enabled' => Boolean,
11+
}],
12+
'ldap' => Optional[Struct[{
13+
'uri' => String,
14+
'user_base' => String,
15+
'group_base' => String,
16+
'group_name_attribute' => Optional[String],
17+
'user_class' => Optional[String],
18+
'group_object_classes' => Optional[String],
19+
'user_name_attribute' => Optional[String],
20+
'user_fullname_attribute' => Optional[String],
21+
'user_primary_group_attribute' => Optional[String],
22+
'starttls' => Optional[Boolean],
23+
'bind_dn' => String,
24+
'bind_password' => String,
25+
}]],
26+
'agents' => Struct[{
27+
'url' => String,
28+
}],
29+
}]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
type Eit_types::Slurm::Policy = Struct[{
2+
'roles' => Struct[{
3+
'user' => Variant[String, Array[String]],
4+
'admin' => Variant[String, Array[String]],
5+
}],
6+
'user' => Struct[{
7+
'actions' => Variant[String, Array[String]],
8+
}],
9+
'admin' => Struct[{
10+
'actions' => Variant[String, Array[String]],
11+
}],
12+
}]

modules/enableit/profile/manifests/computing/slurm.pp

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#
88
class profile::computing::slurm (
99
Boolean $enable = $::role::computing::slurm::enable,
10+
Boolean $noop_value = true,
1011
Eit_types::SimpleString $interface = $::role::computing::slurm::interface,
1112
Array[Eit_types::IPCIDR] $node_cidrs = $::role::computing::slurm::node_cidrs,
1213
Eit_types::Version $slurm_version = $::role::computing::slurm::slurm_version,
@@ -15,6 +16,7 @@
1516
Eit_Files::Source,
1617
String
1718
]] $munge_key = $::role::computing::slurm::munge_key,
19+
Optional[Eit_Files::Source] $jwt_key = $::role::computing::slurm::jwt_key,
1820
Boolean $slurmctld = $::role::computing::slurm::slurmctld,
1921
Boolean $slurmdbd = $::role::computing::slurm::slurmdbd,
2022
Boolean $slurmd = $::role::computing::slurm::slurmd,
@@ -30,6 +32,8 @@
3032
Boolean $disable_root_jobs = $::role::computing::slurm::disable_root_jobs,
3133
Boolean $use_pam = $::role::computing::slurm::use_pam,
3234
Boolean $hwloc_enabled = $::role::computing::slurm::hwloc_enabled,
35+
String $db_buffer_pool_size = $::role::computing::slurm::db_buffer_pool_size,
36+
String $db_log_file_size = $::role::computing::slurm::db_log_file_size,
3337
) inherits ::profile::computing {
3438
3539
# We manually install SLURM and munge packages because we're using packages
@@ -51,6 +55,18 @@
5155
default => { munge_key_source => eit_files::to_file($munge_key)['resource']['source'] },
5256
}
5357

58+
# Determine whether jwt_key should be managed
59+
$_jwt_key = $jwt_key ? {
60+
undef => false,
61+
default => true,
62+
}
63+
64+
if versioncmp($slurm_version, '24.0.11') >= 0 {
65+
$selecttype_value = 'cons_tres'
66+
} else {
67+
$selecttype_value = 'cons_res'
68+
}
69+
5470
class { '::slurm':
5571
ensure => ensure_present($enable),
5672
version => $slurm_version,
@@ -80,13 +96,17 @@
8096
accountingstoragehost => $accounting_storage_host,
8197
# Control
8298
slurmctldhost => $control_machine,
83-
99+
selecttype => $selecttype_value,
84100
# Munge
85101
manage_munge => true,
86102
munge_create_key => false,
87103
munge_uid => 64031,
88104
munge_gid => 64031,
89105

106+
#JWT
107+
authalttypes => if $_jwt_key {[ 'auth/jwt' ]},
108+
authaltparameters => if $_jwt_key {[ 'jwt_key=/var/spool/slurm/jwt_hs256.key' ]},
109+
90110
# Disable the Lua job submit plugin; broken/unnecessary
91111
jobsubmitplugins => [],
92112
returntoservice => $return_to_service,
@@ -117,8 +137,10 @@
117137
})
118138

119139
class { '::profile::computing::slurm::slurmdbd':
120-
interface => $interface,
121-
node_cidrs => $node_cidrs,
140+
interface => $interface,
141+
node_cidrs => $node_cidrs,
142+
db_buffer_pool_size => '256M',
143+
db_log_file_size => '24M',
122144
}
123145
}
124146

@@ -133,6 +155,18 @@
133155
}
134156
}
135157

158+
package { ['libjwt', 'libjwt-devel']:
159+
ensure => ensure_present($_jwt_key),
160+
noop => $noop_value,
161+
}
162+
163+
file { '/var/spool/slurm/jwt_hs256.key':
164+
ensure => ensure_file($_jwt_key),
165+
source => eit_files::to_file($jwt_key)['source'],
166+
noop => $noop_value,
167+
require => Package['libjwt', 'libjwt-devel'],
168+
}
169+
136170
if !$enable {
137171
package::remove( ['slurm', 'slurm-slurmdbd', 'slurm-slurmctld', 'slurm-slurmd', 'munge'])
138172
}

0 commit comments

Comments
 (0)