repo.libs.tools.require_bundle(node, 'nodejs') repo.libs.tools.require_bundle(node, 'postgresql') directories = { '/opt/powerdnsadmin/src': {}, } git_deploy = { '/opt/powerdnsadmin/src': { 'repo': 'https://github.com/ngoduykhanh/PowerDNS-Admin.git', 'rev': node.metadata['powerdnsadmin']['version'], 'triggers': { 'action:powerdnsadmin_install_deps', 'action:powerdnsadmin_upgrade_database', 'action:powerdnsadmin_compile_assets', 'svc_systemd:powerdnsadmin:restart', }, }, } files = { '/opt/powerdnsadmin/config.py': { 'content_type': 'mako', 'triggers': { 'svc_systemd:powerdnsadmin:restart', }, }, '/etc/systemd/system/powerdnsadmin.service': { 'triggers': { 'action:systemd-reload', 'svc_systemd:powerdnsadmin:restart', }, }, } actions = { 'powerdnsadmin_create_virtualenv': { 'command': '/usr/bin/python3 -m virtualenv -p python3 /opt/powerdnsadmin/venv/', 'unless': 'test -d /opt/powerdnsadmin/venv/', 'needs': { 'directory:/opt/powerdnsadmin', # provided by bundle:users }, 'after': { 'pkg_apt:', }, }, 'powerdnsadmin_install_deps': { 'triggered': True, 'command': '/opt/powerdnsadmin/venv/bin/pip install --upgrade psycopg2-binary -r /opt/powerdnsadmin/src/requirements.txt', 'needs': { 'action:powerdnsadmin_create_virtualenv', 'pkg_apt:', }, }, 'powerdnsadmin_upgrade_database': { 'triggered': True, 'command': 'cd /opt/powerdnsadmin/src && FLASK_CONF=/opt/powerdnsadmin/config.py FLASK_APP=/opt/powerdnsadmin/src/powerdnsadmin/__init__.py /opt/powerdnsadmin/venv/bin/flask db upgrade', # TODO unless 'needs': { 'action:powerdnsadmin_install_deps', 'bundle:postgresql', 'pkg_apt:', }, }, 'powerdnsadmin_compile_assets': { 'triggered': True, 'command': ' && '.join([ 'cd /opt/powerdnsadmin/src', 'yarn install --pure-lockfile --ignore-scripts', 'FLASK_APP=/opt/powerdnsadmin/src/powerdnsadmin/__init__.py /opt/powerdnsadmin/venv/bin/flask assets build', 'chown -R powerdnsadmin:powerdnsadmin /opt/powerdnsadmin/src/powerdnsadmin/static/', ]), 'needs': { 'action:powerdnsadmin_install_deps', 'bundle:nodejs', 'pkg_apt:', }, }, } svc_systemd = { 'powerdnsadmin': { 'needs': { 'file:/opt/powerdnsadmin/config.py', 'file:/etc/systemd/system/powerdnsadmin.service', 'git_deploy:/opt/powerdnsadmin/src', 'action:powerdnsadmin_install_deps', 'action:powerdnsadmin_upgrade_database', 'action:powerdnsadmin_compile_assets', }, }, }