rx300: add bundle:jugendhackt_tools
This commit is contained in:
parent
714fa88d72
commit
906994b50f
6 changed files with 142 additions and 0 deletions
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',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue