htz.ex42-1048908: can haz travelynx?
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
This commit is contained in:
parent
20f3f566ac
commit
0dd2a4b985
5 changed files with 188 additions and 0 deletions
57
bundles/travelynx/files/travelynx.conf
Normal file
57
bundles/travelynx/files/travelynx.conf
Normal file
|
@ -0,0 +1,57 @@
|
|||
# vim:ft=perl
|
||||
# travelynx.conf must be a valid perl hash reference. String values must be
|
||||
# quoted and hash items must end with a comma. You can access environment
|
||||
# variables via $ENV, e.g. by writing $ENV{TRAVELYNX_DB_HOST} instead of
|
||||
# 'localhost'.
|
||||
|
||||
{
|
||||
# Cache directories for schedule and realtime data. Mandatory. The parent
|
||||
# directory ('/var/cache/travelynx' in this case) must already exist.
|
||||
cache => {
|
||||
schedule => '/var/cache/travelynx/iris',
|
||||
realtime => '/var/cache/travelynx/iris-rt',
|
||||
},
|
||||
|
||||
# Database configuration. host and port are optional
|
||||
# (defaulting to localhost:5432), the rest is mandatory.
|
||||
db => {
|
||||
host => '${database.get('host', 'localhost')}',
|
||||
port => 5432,
|
||||
database => '${database['database']}',
|
||||
user => '${database['username']}',
|
||||
password => '${database['password']}',
|
||||
},
|
||||
|
||||
# See the Mojo::Server::Hypnotoad manual for details on the following
|
||||
# settings.
|
||||
hypnotoad => {
|
||||
accepts => 100,
|
||||
clients => 10,
|
||||
listen => [ 'http://127.0.0.1:8093' ],
|
||||
pid_file => '/var/cache/travelynx/travelynx.pid',
|
||||
workers => ${workers},
|
||||
spare => ${spare_workers},
|
||||
},
|
||||
|
||||
mail => {
|
||||
# If you want to disable outgoing mail for development purposes,
|
||||
# uncomment the following line. Mails will instead be logged as
|
||||
# Mojolicious "info" messages, causing their content to be printed on
|
||||
# stdout.
|
||||
## disabled => 1,
|
||||
|
||||
# Otherwise, specify the sender ("From" field) for mail sent by travelynx
|
||||
# here. E.g. 'Travelynx <mail@example.org>'
|
||||
from => '${mail_from}',
|
||||
},
|
||||
|
||||
# Secrets used for cookie signing and verification. Must contain at least
|
||||
# one random string. If you specify several strings, the first one will
|
||||
# be used for signing new cookies, and the remaining ones will still be
|
||||
# accepted for cookie validation.
|
||||
secrets => [
|
||||
'${cookie_secret}',
|
||||
],
|
||||
|
||||
version => qx{git describe --dirty} // 'experimental',
|
||||
};
|
21
bundles/travelynx/files/travelynx.service
Normal file
21
bundles/travelynx/files/travelynx.service
Normal file
|
@ -0,0 +1,21 @@
|
|||
[Unit]
|
||||
Description=Travelynx Railway Checkin Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
RemainAfterExit=yes
|
||||
PIDFile=/var/cache/travelynx/travelynx.pid
|
||||
|
||||
ExecStart=/usr/local/bin/hypnotoad -f index.pl
|
||||
ExecStop=/usr/local/bin/hypnotoad -s index.pl
|
||||
ExecReload=/usr/local/bin/hypnotoad index.pl
|
||||
|
||||
User=travelynx
|
||||
WorkingDirectory=/opt/travelynx
|
||||
|
||||
Environment=LANG=en_US.UTF-8
|
||||
Environment=PERL5LIB=/opt/travelynx/local/lib/perl5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
73
bundles/travelynx/items.py
Normal file
73
bundles/travelynx/items.py
Normal file
|
@ -0,0 +1,73 @@
|
|||
pkg_apt = {
|
||||
'perl': {},
|
||||
'cpanminus': {},
|
||||
}
|
||||
|
||||
directories = {
|
||||
'/var/cache/travelynx': {
|
||||
'owner': 'travelynx',
|
||||
'mode': '0700',
|
||||
},
|
||||
}
|
||||
|
||||
files = {
|
||||
'/etc/systemd/system/travelynx.service': {
|
||||
'triggers': {
|
||||
'action:systemd-reload',
|
||||
},
|
||||
},
|
||||
'/opt/travelynx/travelynx.conf': {
|
||||
'content_type': 'mako',
|
||||
'context': node.metadata['travelynx'],
|
||||
'needs': {
|
||||
'git_deploy:/opt/travelynx',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
git_deploy = {
|
||||
'/opt/travelynx': {
|
||||
'repo': 'https://git.finalrewind.org/travelynx',
|
||||
'rev': '1.16.1',
|
||||
'triggers': {
|
||||
'action:travelynx_install_deps',
|
||||
'action:travelynx_database_migrate',
|
||||
'svc_systemd:travelynx:restart',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
actions = {
|
||||
'travelynx_install_deps': {
|
||||
'command': 'cd /opt/travelynx && cpanm -in --no-man-pages --installdeps .',
|
||||
'needs': {
|
||||
'pkg_apt:perl',
|
||||
'pkg_apt:cpanminus',
|
||||
},
|
||||
'triggered': True,
|
||||
},
|
||||
'travelynx_database_migrate': {
|
||||
'command': 'cd /opt/travelynx && perl index.pl database migrate',
|
||||
# Because git_deploy does not put .git onto the server, the script
|
||||
# will complain on STDERR about not finding a git repository.
|
||||
# That's why we need to redirect stderr to /dev/null.
|
||||
'unless': 'cd /opt/travelynx && [ $(perl index.pl database has-current-schema 2>/dev/null) = "yes" ]',
|
||||
'needs': {
|
||||
'action:travelynx_install_deps',
|
||||
'file:/opt/travelynx/travelynx.conf',
|
||||
'postgres_db:travelynx',
|
||||
'postgres_role:travelynx',
|
||||
},
|
||||
'triggered': True,
|
||||
},
|
||||
}
|
||||
|
||||
svc_systemd = {
|
||||
'travelynx': {
|
||||
'needs': {
|
||||
'file:/etc/systemd/system/travelynx.service',
|
||||
'action:travelynx_database_migrate',
|
||||
'directory:/var/cache/travelynx',
|
||||
},
|
||||
},
|
||||
}
|
31
bundles/travelynx/metadata.py
Normal file
31
bundles/travelynx/metadata.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
defaults = {
|
||||
'users': {
|
||||
'travelynx': {
|
||||
'home': '/opt/travelynx',
|
||||
'deploy_configs': False,
|
||||
},
|
||||
},
|
||||
'travelynx': {
|
||||
'database': {
|
||||
'username': 'travelynx',
|
||||
'password': repo.vault.password_for('{} postgresql travelynx'.format(node.name)),
|
||||
'database': 'travelynx',
|
||||
},
|
||||
'workers': 4,
|
||||
'spare_workers': 2,
|
||||
'mail_from': 'travelynx@{}'.format(node.hostname),
|
||||
'cookie_secret': repo.vault.password_for('{} travelynx cookie_secret'.format(node.name)),
|
||||
},
|
||||
'postgresql': {
|
||||
'users': {
|
||||
'travelynx': {
|
||||
'password': repo.vault.password_for('{} postgresql travelynx'.format(node.name)),
|
||||
},
|
||||
},
|
||||
'databases': {
|
||||
'travelynx': {
|
||||
'owner': 'travelynx',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
|
@ -6,6 +6,7 @@ nodes['htz.ex42-1048908'] = {
|
|||
'nodejs',
|
||||
'riot-web',
|
||||
'postgresql',
|
||||
'travelynx',
|
||||
'vmhost',
|
||||
'voc-loudness-monitor',
|
||||
},
|
||||
|
@ -149,6 +150,11 @@ nodes['htz.ex42-1048908'] = {
|
|||
'/': 'http://localhost:8080/',
|
||||
},
|
||||
},
|
||||
'travelynx.franzi.business': {
|
||||
'proxy': {
|
||||
'/': 'http://127.0.0.1:8093',
|
||||
},
|
||||
},
|
||||
'vliedel.random.franzi.business': {},
|
||||
'webmail.mx0.kunbox.net': {
|
||||
'index': 'index.php',
|
||||
|
|
Loading…
Reference in a new issue