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
72
73
74
75
76
77
78
79
80
|
# File 'manifests/init.pp', line 33
class dstserver(
String $user,
String $homedir,
Hash $instances,
Enum['present', 'absent'] $ensure = present,
Optional[String] $token,
) {
File{
owner => $user,
group => $user,
}
$bin_dir = "${homedir}/bin"
$install_dir = "${homedir}/app"
$profile_dir = "${homedir}/.klei"
# Get a list of names of defined master and cave shards
$masters = keys($instances)
$caves = keys($instances.filter |$name, $data| { $data['caves'] == true })
class {'dstserver::setup':
ensure => $ensure,
user => $user,
homedir => $homedir,
masters => $masters,
caves => $caves,
}
# place serverglobal mod setup script
$used_mods = $instances.map |$name, $data| { if $data['mods'] { $data['mods'].keys } else {[]} }
file{"${install_dir}/mods/dedicated_server_mods_setup.lua":
ensure => present,
content => epp('dstserver/dedicated_server_mods_setup.lua', { mods => $used_mods.flatten.unique }),
require => Exec['install-dst'],
}
# Generate dstserver instances
$instances.each |$name, $data| {
$server_dir = "${profile_dir}/DoNotStarveTogether/${name}"
dstserver::instance{$name:
require => File['dst-serverprofiles'],
path => $server_dir,
* => $data + {
token => pick($token, $data['token'])
},
}
}
}
|