rx300: add bundle:jugendhackt_tools
This commit is contained in:
parent
714fa88d72
commit
906994b50f
6 changed files with 142 additions and 0 deletions
|
@ -45,6 +45,7 @@ Rule of thumb: keep ports below 10000 free for stuff that reserves ports.
|
||||||
| 22060 | pretalx | gunicorn |
|
| 22060 | pretalx | gunicorn |
|
||||||
| 22070 | paperless-ng | gunicorn |
|
| 22070 | paperless-ng | gunicorn |
|
||||||
| 22080 | netbox | gunicorn |
|
| 22080 | netbox | gunicorn |
|
||||||
|
| 22090 | jugendhackt_tools | gunicorn |
|
||||||
| 22999 | nginx | stub_status |
|
| 22999 | nginx | stub_status |
|
||||||
| 22100 | ntfy | http |
|
| 22100 | ntfy | http |
|
||||||
|
|
||||||
|
|
4
bundles/jugendhackt_tools/files/config.toml
Normal file
4
bundles/jugendhackt_tools/files/config.toml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<%
|
||||||
|
from tomlkit import dumps as toml_dumps
|
||||||
|
from bundlewrap.utils.text import toml_clean
|
||||||
|
%>${toml_clean(toml_dumps(repo.libs.faults.resolve_faults(node.metadata.get('jugendhackt_tools')), sort_keys=True))}
|
16
bundles/jugendhackt_tools/files/jugendhackt_tools.service
Normal file
16
bundles/jugendhackt_tools/files/jugendhackt_tools.service
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[Unit]
|
||||||
|
Description=jugendhackt_tools web service
|
||||||
|
After=network.target
|
||||||
|
Requires=postgresql.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=jugendhackt_tools
|
||||||
|
Group=jugendhackt_tools
|
||||||
|
Environment=CONFIG_PATH=/opt/jugendhackt_tools/config.toml
|
||||||
|
WorkingDirectory=/opt/jugendhackt_tools/src
|
||||||
|
ExecStart=/opt/jugendhackt_tools/venv/bin/gunicorn jugendhackt_tools.wsgi --name jugendhackt_tools --workers 4 --max-requests 1200 --max-requests-jitter 50 --log-level=info --bind=127.0.0.1:22090
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
76
bundles/jugendhackt_tools/items.py
Normal file
76
bundles/jugendhackt_tools/items.py
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
directories['/opt/jugendhackt_tools/src'] = {}
|
||||||
|
directories['/opt/jugendhackt_tools/static'] = {}
|
||||||
|
|
||||||
|
git_deploy['/opt/jugendhackt_tools/src'] = {
|
||||||
|
'repo': 'https://github.com/kunsi/jugendhackt_schedule.git',
|
||||||
|
'rev': 'main',
|
||||||
|
'triggers': {
|
||||||
|
'action:jugendhackt_tools_install',
|
||||||
|
'action:jugendhackt_tools_migrate',
|
||||||
|
'svc_systemd:jugendhackt_tools:restart',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
actions['jugendhackt_tools_create_virtualenv'] = {
|
||||||
|
'command': '/usr/bin/python3 -m virtualenv -p python3 /opt/jugendhackt_tools/venv/',
|
||||||
|
'unless': 'test -d /opt/jugendhackt_tools/venv/',
|
||||||
|
'needs': {
|
||||||
|
# actually /opt/jugendhackt_tools, but we don't create that
|
||||||
|
'directory:/opt/jugendhackt_tools/src',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
actions['jugendhackt_tools_install'] = {
|
||||||
|
'command': ' && '.join([
|
||||||
|
'cd /opt/jugendhackt_tools/src',
|
||||||
|
'/opt/jugendhackt_tools/venv/bin/pip install --upgrade pip wheel gunicorn psycopg2-binary',
|
||||||
|
'/opt/jugendhackt_tools/venv/bin/pip install --upgrade -r requirements.txt',
|
||||||
|
]),
|
||||||
|
'needs': {
|
||||||
|
'action:jugendhackt_tools_create_virtualenv',
|
||||||
|
},
|
||||||
|
'triggered': True,
|
||||||
|
}
|
||||||
|
|
||||||
|
actions['jugendhackt_tools_migrate'] = {
|
||||||
|
'command': ' && '.join([
|
||||||
|
'cd /opt/jugendhackt_tools/src',
|
||||||
|
'CONFIG_PATH=/opt/jugendhackt_tools/config.toml /opt/jugendhackt_tools/venv/bin/python manage.py migrate',
|
||||||
|
'CONFIG_PATH=/opt/jugendhackt_tools/config.toml /opt/jugendhackt_tools/venv/bin/python manage.py collectstatic --noinput',
|
||||||
|
]),
|
||||||
|
'needs': {
|
||||||
|
'action:jugendhackt_tools_install',
|
||||||
|
'file:/opt/jugendhackt_tools/config.toml',
|
||||||
|
'postgres_db:jugendhackt_tools',
|
||||||
|
'postgres_role:jugendhackt_tools',
|
||||||
|
},
|
||||||
|
'triggered': True,
|
||||||
|
}
|
||||||
|
|
||||||
|
files['/opt/jugendhackt_tools/config.toml'] = {
|
||||||
|
'content_type': 'mako',
|
||||||
|
'triggers': {
|
||||||
|
'svc_systemd:jugendhackt_tools:restart',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
files['/usr/local/lib/systemd/system/jugendhackt_tools.service'] = {
|
||||||
|
'triggers': {
|
||||||
|
'action:systemd-reload',
|
||||||
|
'svc_systemd:jugendhackt_tools:restart',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
svc_systemd['jugendhackt_tools'] = {
|
||||||
|
'needs': {
|
||||||
|
'action:jugendhackt_tools_migrate',
|
||||||
|
'file:/opt/jugendhackt_tools/config.toml',
|
||||||
|
'file:/usr/local/lib/systemd/system/jugendhackt_tools.service',
|
||||||
|
'git_deploy:/opt/jugendhackt_tools/src',
|
||||||
|
'user:jugendhackt_tools',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
users['jugendhackt_tools'] = {
|
||||||
|
'home': '/opt/jugendhackt_tools/src',
|
||||||
|
}
|
28
bundles/jugendhackt_tools/metadata.py
Normal file
28
bundles/jugendhackt_tools/metadata.py
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
defaults = {
|
||||||
|
'jugendhackt_tools': {
|
||||||
|
'django_secret': repo.vault.random_bytes_as_base64_for(f'{node.name} jugendhackt_tools django_secret'),
|
||||||
|
'django_debug': False,
|
||||||
|
'static_root': '/opt/jugendhackt_tools/static/',
|
||||||
|
'database': {
|
||||||
|
'ENGINE': 'django.db.backends.postgresql',
|
||||||
|
'NAME': 'jugendhackt_tools',
|
||||||
|
'USER': 'jugendhackt_tools',
|
||||||
|
'PASSWORD': repo.vault.password_for(f'{node.name} postgresql jugendhackt_tools'),
|
||||||
|
'HOST': 'localhost',
|
||||||
|
'PORT': '5432'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'postgresql': {
|
||||||
|
'roles': {
|
||||||
|
'jugendhackt_tools': {
|
||||||
|
'password': repo.vault.password_for(f'{node.name} postgresql jugendhackt_tools'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'databases': {
|
||||||
|
'jugendhackt_tools': {
|
||||||
|
'owner': 'jugendhackt_tools',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ nodes['rx300'] = {
|
||||||
'gitea',
|
'gitea',
|
||||||
'ipmitool',
|
'ipmitool',
|
||||||
'jenkins-ci',
|
'jenkins-ci',
|
||||||
|
'jugendhackt_tools',
|
||||||
'lm-sensors',
|
'lm-sensors',
|
||||||
'matrix-dimension',
|
'matrix-dimension',
|
||||||
'matrix-media-repo',
|
'matrix-media-repo',
|
||||||
|
@ -180,6 +181,10 @@ nodes['rx300'] = {
|
||||||
'/var/www/franzi.business', # for deployment task
|
'/var/www/franzi.business', # for deployment task
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'jugendhackt_tools': {
|
||||||
|
'allowed_hosts': ['jh.franzi.business'],
|
||||||
|
'timezone': 'Europe/Berlin',
|
||||||
|
},
|
||||||
'letsencrypt': {
|
'letsencrypt': {
|
||||||
'concat_and_deploy': {
|
'concat_and_deploy': {
|
||||||
'kunsi-weechat': {
|
'kunsi-weechat': {
|
||||||
|
@ -358,6 +363,18 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'jugendhackt_tools': {
|
||||||
|
'domain': 'jh.franzi.business',
|
||||||
|
'ssl': '_.franzi.business',
|
||||||
|
'locations': {
|
||||||
|
'/': {
|
||||||
|
'target': 'http://127.0.0.1:22090/',
|
||||||
|
},
|
||||||
|
'/static/': {
|
||||||
|
'alias': '/opt/jugendhackt_tools/static/',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
'kunbox.net': {},
|
'kunbox.net': {},
|
||||||
'kunsmann.eu': {
|
'kunsmann.eu': {
|
||||||
'locations': {
|
'locations': {
|
||||||
|
|
Loading…
Reference in a new issue