Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9125839
rpc_server.pp
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
rpc_server.pp
View Options
# Deploy an instance of a rpc service
define
profile
::
swh
::
deploy
::
rpc_server
(
String
$executable,
String
$instance_name
=
$name,
String
$config_key
=
$name,
String
$http_check_string
=
"SWH ${capitalize($name)} API server"
,
Enum
[
'sync'
,
'async'
]
$worker
=
'sync'
,
)
{
include
::
profile
::
nginx
$conf_file
=
lookup
(
"swh::deploy::${config_key}::conf_file"
)
$user
=
lookup
(
"swh::deploy::${config_key}::user"
)
$group
=
lookup
(
"swh::deploy::${config_key}::group"
)
$service_name
=
"swh-${instance_name}"
$gunicorn_service_name
=
"gunicorn-${service_name}"
$gunicorn_unix_socket
=
"unix:/run/gunicorn/${service_name}/gunicorn.sock"
$backend_listen_host
=
lookup
(
"swh::deploy::${config_key}::backend::listen::host"
)
$backend_listen_port
=
lookup
(
"swh::deploy::${config_key}::backend::listen::port"
)
$nginx_server_names
=
lookup
(
"swh::deploy::${config_key}::backend::server_names"
)
$backend_workers
=
lookup
(
"swh::deploy::${config_key}::backend::workers"
)
$backend_http_keepalive
=
lookup
(
"swh::deploy::${config_key}::backend::http_keepalive"
)
$backend_http_timeout
=
lookup
(
"swh::deploy::${config_key}::backend::http_timeout"
)
$backend_reload_mercy
=
lookup
(
"swh::deploy::${config_key}::backend::reload_mercy"
)
$backend_max_requests
=
lookup
(
"swh::deploy::${config_key}::backend::max_requests"
)
$backend_max_requests_jitter
=
lookup
(
"swh::deploy::${config_key}::backend::max_requests_jitter"
)
$instance_config
=
lookup
(
"swh::deploy::${config_key}::config"
)
include
::
gunicorn
case
$worker
{
'sync'
:
{
$gunicorn_worker_class
=
'sync'
$nginx_proxy_buffering
=
'on'
}
'async'
:
{
$gunicorn_worker_class
=
'aiohttp.worker.GunicornWebWorker'
$nginx_proxy_buffering
=
'off'
}
default
:
{
fail
(
"Worker class ${worker} is unsupported by this module."
)
}
}
file
{
$conf_file:
ensure
=>
present
,
owner
=>
'root'
,
group
=>
$group,
mode
=>
'0640'
,
content
=>
inline_template
(
"<%= @instance_config.to_yaml %>\n"
),
notify
=>
Service
[
"gunicorn-swh-${instance_name}"
],
}
::
nginx
::
resource
::
upstream
{
"swh-${instance_name}-gunicorn"
:
upstream_fail_timeout
=>
0
,
members
=>
[
$gunicorn_unix_socket,
],
}
# Default server on listen_port: return 444 for wrong domain name
::
nginx
::
resource
::
server
{
"nginx-swh-${instance_name}-default"
:
ensure
=>
present
,
listen_ip
=>
$backend_listen_host,
listen_port
=>
$backend_listen_port,
listen_options
=>
'default_server'
,
maintenance
=>
true
,
maintenance_value
=>
'return 444'
,
}
# actual server
::
nginx
::
resource
::
server
{
"nginx-swh-${instance_name}"
:
ensure
=>
present
,
listen_ip
=>
$backend_listen_host,
listen_port
=>
$backend_listen_port,
listen_options
=>
'deferred'
,
server_name
=>
$nginx_server_names,
client_max_body_size
=>
'4G'
,
proxy
=>
"http://swh-${instance_name}-gunicorn"
,
proxy_buffering
=>
$nginx_proxy_buffering,
proxy_read_timeout
=>
"${backend_http_timeout}s"
,
format_log
=>
"combined if=\$error_status"
,
}
::
gunicorn
::
instance
{
$service_name:
ensure
=>
enabled
,
user
=>
$user,
group
=>
$group,
executable
=>
$executable,
settings
=>
{
bind
=>
$gunicorn_unix_socket,
workers
=>
$backend_workers,
worker_class
=>
$gunicorn_worker_class,
timeout
=>
$backend_http_timeout,
graceful_timeout
=>
$backend_reload_mercy,
keepalive
=>
$backend_http_keepalive,
max_requests
=>
$backend_max_requests,
max_requests_jitter
=>
$backend_max_requests_jitter,
},
}
$icinga_checks_file
=
'/etc/icinga2/conf.d/exported-checks.conf'
@@
::
icinga2
::
object
::
service
{
"swh-${instance_name} api (localhost on ${::fqdn})"
:
service_name
=>
"swh-${instance_name} api (localhost)"
,
import
=>
[
'generic-service'
],
host_name
=>
$::fqdn,
check_command
=>
'http'
,
command_endpoint
=>
$::fqdn,
vars
=>
{
http_address
=>
'127.0.0.1'
,
http_vhost
=>
'127.0.0.1'
,
http_port
=>
$backend_listen_port,
http_uri
=>
'/'
,
http_string
=>
$http_check_string,
},
target
=>
$icinga_checks_file,
tag
=>
'icinga2::exported'
,
}
if
$backend_listen_host
!=
'127.0.0.1'
{
@@
::
icinga2
::
object
::
service
{
"swh-${instance_name} api (remote on ${::fqdn})"
:
service_name
=>
"swh-${instance_name} api (remote)"
,
import
=>
[
'generic-service'
],
host_name
=>
$::fqdn,
check_command
=>
'http'
,
vars
=>
{
http_vhost
=>
$::swh_hostname
[
'internal_fqdn'
],
http_port
=>
$backend_listen_port,
http_uri
=>
'/'
,
http_string
=>
$http_check_string,
},
target
=>
$icinga_checks_file,
tag
=>
'icinga2::exported'
,
}
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Jun 21, 9:24 PM (4 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3241205
Attached To
rSPSITE puppet-swh-site
Event Timeline
Log In to Comment