Newer
Older
# Message broker for the communication module.
# Sets up the message broker for the communication module in the
# new exam system.
class aes::broker {
$broker_user = broker
$broker_home = "/srv/${broker_user}"
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
case fact('os.family') {
'RedHat': {
package {
[
'boost',
'boost-devel',
]:
ensure => installed,
}
firewalld_custom_service { 'aes-broker':
description => 'Authentic Examination System server',
ports => [
{ port => '31337', protocol => 'tcp' },
],
}
@firewalld_rich_rule {
default:
service => 'aes-broker',
log => false;
'Accept aes-broker in LiU networks without logging IPv4':
zone => 'liu',
family => 'ipv4',
action => 'accept';
'Accept aes-broker in LiU networks without logging IPv6':
zone => 'liu',
family => 'ipv6',
action => 'accept';
}
}
'CentOS': {
# Sadly, it does not seem like we can not only install asio, so we need
# to install the Boost as a whole.
package {
[
'boost169',
'boost169-devel',
]:
ensure => installed,
}
::server_firewall::rules_file { '45-permit_aes_broker.rules':
# lint:ignore:strict_indent heredoc failing...
content => @(EOF),
service aesbroker is tcp/31337
policy chain INPUT is
accept service:aesbroker from class:liu-nets
end policy
|-EOF
# lint:endignore:strict_indent
}
}
default: {
fail("${module_name} - Not supported for family ${fact('os.family')}.")
}
# Figure out which certificate to use based on the hostname.
if $facts[networking][fqdn] == 'aes.edu.liu.se' {
} elsif $facts[networking][fqdn] == 'aes-devel.edu.liu.se' {
$server_type = undef
user { $broker_user :
ensure => present,
home => $broker_home,
comment => 'Message broker for AES',
managehome => false,
membership => inclusive,
ensure => directory,
owner => $broker_user,
group => $broker_group,
mode => '0755',
}
file { "/etc/systemd/system/${broker_service}.service" :
owner => root,
group => root,
mode => '0644',
source => "puppet:///modules/${module_name}/broker/broker.service",
}
file { "${broker_home}/on_update.sh" :
owner => $broker_user,
group => $broker_group,
mode => '0755',
source => "puppet:///modules/${module_name}/broker/on_update.sh",
}
file { "${broker_home}/ssl" :
ensure => directory,
owner => $broker_user,
group => $broker_group,
mode => '0700',
}
file { "${broker_home}/ssl/cert.pem" :
ensure => file,
owner => $broker_user,
group => $broker_group,
mode => '0700',
source => "puppet:///modules/${module_name}/broker/cert/${server_type}_cert.pem",
}
file { "${broker_home}/ssl/key.pem" :
ensure => file,
owner => $broker_user,
group => $broker_group,
mode => '0700',
source => "puppet:///modules/${module_name}/broker/cert/${server_type}_key.pem",
}
file { "${broker_home}/ssl/password" :
ensure => file,
owner => $broker_user,
group => $broker_group,
mode => '0700',
source => "puppet:///modules/${module_name}/broker/cert/${server_type}_password",
vcsrepo { "${broker_home}/src":
ensure => latest,
provider => git,
source => 'https://oauth2:F-agHaRXCdyFy38q4c-N@gitlab.liu.se/upp-aes/communication.git',
revision => $server_type,
owner => $broker_user,
group => $broker_group,
notify => Exec['compile-broker-repo'],
}
exec { 'compile-broker-repo':
user => $broker_user,
group => $broker_group,
environment => ["HOME=${broker_home}"],
command => "${broker_home}/on_update.sh",
require => File["${broker_home}/on_update.sh"],
Filip Strömbäck
committed
creates => "${broker_home}/bin/broker",
notify => Service[$broker_service],