Puppet Class: presto::server
- Defined in:
- modules/presto/manifests/server.pp
Overview
SPDX-License-Identifier: Apache-2.0 Class: presto::server
Sets up a Presto server, either worker or coordinator or both, depending on settings. The default is to set up worker only.
NOTE: Do not include this class on a node that has presto::client.
Parameters
- enabled
-
If the Presto server should be running or not.
- config_properties
-
Properties to render into config.properties.
- node_properties
-
Properties to render into node.properties.
- log_properties
-
Properties to render into log.properties.
- catalogs
-
Hash of catalog names to properties. Each entry in this hash will be rendered into a properties file in the /etc/presto/catalogs directory.
- heap_max
-
Max JVM heapsize of Presto server; will be rendered into jvm.properties.
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'modules/presto/manifests/server.pp', line 30
class presto::server(
Boolean $enabled = true,
Hash $config_properties = {},
Hash $node_properties = {},
Hash $log_properties = {},
Hash $catalogs = {},
String $heap_max = '2G',
Optional[String] $extra_jvm_configs = undef,
) {
if defined(Class['::presto::client']) {
fail('Class presto::client and presto::server should not be included on the same node; presto::server will include the presto-cli package itself.')
}
ensure_packages('presto-cli')
ensure_packages('presto-server')
# Explicitly adding the 'presto' user
# to the catalog, even if created by the presto-server package,
# to allow other resources to require it.
user { 'presto':
gid => 'presto',
comment => 'Presto',
home => '/var/lib/presto',
shell => '/bin/bash',
managehome => false,
system => true,
require => Package['presto-server'],
}
$default_config_properties = {
'coordinator' => false,
'node-scheduler.include-coordinator' => false,
# Use non-default http port to avoid conflicts with commonly used 8080
'http-server.http.port' => '8280',
'jmx.rmiregistry.port' => '8279',
'discovery.uri' => 'http://localhost:8280',
}
$default_node_properties = {
'node.environment' => 'test',
# If node.id is not provided, then we will default to using the node's
# fqdn with . replaced by -.
'node.id' => inline_template('<%= @fqdn.tr(\'.\', \'-\') %>'),
'node.data-dir' => '/var/lib/presto',
}
$default_log_properties = {
'com.facebook.presto' => 'INFO',
}
presto::properties { 'config':
properties => $default_config_properties + $config_properties,
may_contain_passwords => true,
}
$final_node_properties = $default_node_properties + $node_properties
presto::properties { 'node':
properties => $final_node_properties,
}
presto::properties { 'log':
properties => $default_log_properties + $log_properties,
}
$data_dir = $final_node_properties['node.data-dir']
file { '/etc/presto/jvm.config':
content => template('presto/jvm.config.erb'),
}
# Ensure presto catalog properties files are created for each
# defined catalog. Using ensure_resources allows us to create
# an entry for each defined catalog without having to
# manually declare each one.
ensure_resources('::presto::catalog', $catalogs)
# Make sure the $data_dir exists
if !defined(File[$data_dir]) {
file { $data_dir:
ensure => 'directory',
owner => 'presto',
group => 'presto',
mode => '0755',
require => Package['presto-server'],
before => Service['presto-server'],
}
}
# Ensure log folder is owned by presto user
if !defined(File["${data_dir}/var"]) {
file { "${data_dir}/var":
ensure => 'directory',
owner => 'presto',
group => 'presto',
mode => '0755',
require => Package['presto-server'],
before => Service['presto-server'],
}
}
if !defined(File["${data_dir}/var/log"]) {
file { "${data_dir}/var/log":
ensure => 'directory',
owner => 'presto',
group => 'presto',
mode => '0755',
require => Package['presto-server'],
before => Service['presto-server'],
}
}
# By default Presto writes its logs out to $data_dir/var/log.
# Symlink /var/log/presto to this location.
if !defined(File['/var/log/presto']) {
file { '/var/log/presto':
ensure => "${data_dir}/var/log",
require => File[$data_dir],
}
}
# Output Presto server logs to $data_dir/var/log/server.log and
# reotate the server.log file. http-request.log is rotated and managed
# by Presto itself.
logrotate::conf { 'presto-server':
content => template('presto/logrotate.conf.erb'),
require => Package['presto-server'],
}
rsyslog::conf { 'presto-server':
content => template('presto/rsyslog.conf.erb'),
require => Logrotate::Conf['presto-server'],
}
# This is required when using the alluxio cache, so that cached HDFS files are
# not world-readable. See #T266641 for more information.
systemd::override { 'presto-umask':
unit => 'presto-server',
content => "[Service]\nUMask=0027\n",
}
$service_ensure = $enabled ? {
false => 'stopped',
default => 'running',
}
# Start the Presto server.
# Presto will not auto restart on config changes.
service { 'presto-server':
ensure => $service_ensure,
require => [
Presto::Properties['config'],
Presto::Properties['node'],
Presto::Properties['log'],
File['/etc/presto/jvm.config'],
File['/var/log/presto'],
Rsyslog::Conf['presto-server'],
Systemd::Override['presto-umask'],
],
}
}
|