Add logic to create db, configure supervisor, for install_luigi()

This commit is contained in:
Lance Edgar 2023-01-08 14:55:33 -06:00
parent d68b57baa8
commit 7d536499d6

View file

@ -26,13 +26,16 @@ Fabric library for Luigi apps
import os
from rattail_fabric2 import make_deploy, mkdir
from rattail_fabric2 import postgresql, make_deploy, mkdir
deploy_common = make_deploy(__file__)
def install_luigi(c, envroot, luigi='luigi', user='rattail', db_connection=None,
def install_luigi(c, envroot, luigi='luigi', user='rattail',
db=False, dbuser='rattail', dbpass='TODO_PASSWORD',
db_connection=None,
supervisor=False, autostart=False,
crontab=False, crontab_mailto=None):
"""
Install and configure Luigi to the given virtualenv.
@ -55,6 +58,13 @@ def install_luigi(c, envroot, luigi='luigi', user='rattail', db_connection=None,
c.sudo('touch {}/luigitasks/__init__.py'.format(appdir),
user=user)
# database
if db:
postgresql.create_db(c, 'luigi', owner=dbuser)
if not db_connection:
db_connection = 'postgresql://{}:{}@localhost/luigi'.format(
dbuser, dbpass)
# config
deploy_common(c, 'luigi/luigi.cfg.mako', '{}/luigi/luigi.cfg'.format(appdir),
use_sudo=True, owner=user, mode='0640',
@ -64,6 +74,20 @@ def install_luigi(c, envroot, luigi='luigi', user='rattail', db_connection=None,
use_sudo=True, owner=user,
context={'appdir': appdir})
# supervisor
if supervisor:
c.sudo('supervisorctl stop luigi:', warn=True)
deploy_common(c, 'luigi/supervisor.conf.mako',
'/etc/supervisor/conf.d/luigi.conf',
use_sudo=True,
context={'envroot': envroot,
'appdir': appdir,
'user': user,
'autostart': autostart})
c.sudo('supervisorctl update')
if autostart:
c.sudo('supervisorctl start luigi:')
# logrotate
deploy_common(c, 'luigi/luigi-logrotate.conf.mako', '{}/luigi/logrotate.conf'.format(appdir),
use_sudo=True, owner='root:', # must be owned by root (TODO: why is that again?)