From 9991411f293b19d0c653e3cc0ffe77d34800a1b5 Mon Sep 17 00:00:00 2001 From: mwiegand Date: Wed, 31 Aug 2022 12:06:45 +0200 Subject: [PATCH] wip --- bundles/openldap/README.md | 5 +++ bundles/openldap/items.py | 0 bundles/openldap/metadata.py | 8 +++++ bundles/web2ldap/items.py | 63 ++++++++++++++++++++++++++++++++++++ bundles/web2ldap/metadata.py | 63 ++++++++++++++++++++++++++++++++++++ 5 files changed, 139 insertions(+) create mode 100644 bundles/openldap/README.md create mode 100644 bundles/openldap/items.py create mode 100644 bundles/openldap/metadata.py create mode 100644 bundles/web2ldap/items.py create mode 100644 bundles/web2ldap/metadata.py diff --git a/bundles/openldap/README.md b/bundles/openldap/README.md new file mode 100644 index 0000000..959c1a2 --- /dev/null +++ b/bundles/openldap/README.md @@ -0,0 +1,5 @@ +dpkg-reconfigure -plow slapd + +QqLeyREjjrWgK2kjNQ + +ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" diff --git a/bundles/openldap/items.py b/bundles/openldap/items.py new file mode 100644 index 0000000..e69de29 diff --git a/bundles/openldap/metadata.py b/bundles/openldap/metadata.py new file mode 100644 index 0000000..151f735 --- /dev/null +++ b/bundles/openldap/metadata.py @@ -0,0 +1,8 @@ +defaults = { + 'apt': { + 'packages': { + 'slapd': {}, + 'ldap-utils': {}, + }, + }, +} diff --git a/bundles/web2ldap/items.py b/bundles/web2ldap/items.py new file mode 100644 index 0000000..9ccf489 --- /dev/null +++ b/bundles/web2ldap/items.py @@ -0,0 +1,63 @@ +from shlex import quote + +users = { + 'web2ldap': {}, +} + +directories = { + '/opt/web2ldap': { + 'owner': 'web2ldap', + }, +} + +actions = { + 'web2ldap_initialize_venv': { + 'command': 'sudo -u web2ldap python3 -m venv /opt/web2ldap', + 'unless': 'test -e /opt/web2ldap/bin/pip3', + 'needs': [ + 'directory:/opt/web2ldap', + ], + 'triggers': [ + 'svc_systemd:web2ldap.service:restart', + ], + }, + 'web2ldap_install': { + 'command': """sudo -u web2ldap /opt/web2ldap/bin/pip3 install web2ldap""", + 'unless': """sudo -u web2ldap /opt/web2ldap/bin/pip3 list --format=freeze | cut -d '=' -f 1 | grep -q '^web2ldap$'""", + 'needs': [ + 'action:web2ldap_initialize_venv', + ], + 'triggers': [ + 'svc_systemd:web2ldap.service:restart', + ], + }, + 'web2ldap_set_cookie_domain': { + 'command': f"""sed -iE "s/^cookie_domain.*/cookie_domain = '{node.metadata.get('web2ldap/domain')}'/g" /opt/web2ldap/etc/web2ldap/web2ldapcnf/__init__.py""", + 'unless': f"""grep -q "^cookie_domain = '{node.metadata.get('web2ldap/domain')}'$" /opt/web2ldap/etc/web2ldap/web2ldapcnf/__init__.py""", + 'needs': [ + 'action:web2ldap_install', + ], + 'triggers': [ + 'svc_systemd:web2ldap.service:restart', + ], + }, + 'web2ldap_upgrade_venv': { + 'command': """sudo -u web2ldap /opt/web2ldap/bin/pip3 list --outdated --format=freeze | cut -d '=' -f 1 | xargs -n1 /opt/web2ldap/bin/pip3 install --upgrade""", + 'unless': """sudo -u web2ldap /opt/web2ldap/bin/pip3 list --outdated --format=freeze | wc -l | grep -q '^0$'""", + 'needs': [ + 'action:web2ldap_install', + ], + 'triggers': [ + 'svc_systemd:web2ldap.service:restart', + ], + }, +} + +svc_systemd = { + 'web2ldap.service': { + 'needs': [ + 'action:web2ldap_initialize_venv', + 'action:web2ldap_upgrade_venv', + ], + }, +} diff --git a/bundles/web2ldap/metadata.py b/bundles/web2ldap/metadata.py new file mode 100644 index 0000000..94a714f --- /dev/null +++ b/bundles/web2ldap/metadata.py @@ -0,0 +1,63 @@ +from importlib.metadata import metadata + + +defaults = { + 'apt': { + 'packages': { + 'libsasl2-dev': {}, + 'python3-dev': {}, + 'libldap2-dev': {}, + 'libssl-dev': {}, + }, + }, +} + + +@metadata_reactor.provides( + 'systemd/units/web2ldap.service', +) +def systemd(metadata): + return { + 'systemd': { + 'units': { + 'web2ldap.service': { + 'Unit': { + 'Description': 'gitea', + 'After': 'syslog.target', + 'After': 'network.target', + }, + 'Service': { + 'User': 'web2ldap', + 'WorkingDirectory': '/opt/web2ldap', + 'ExecStart': '/opt/web2ldap/bin/web2ldap 127.0.0.1 1760', + 'Restart': 'always', + 'Environment': [ + '"SERVER_NAME=' + metadata.get('web2ldap/domain') + '"', + '"HTTP_HOST=' + metadata.get('web2ldap/domain') + '"', + ], + }, + 'Install': { + 'WantedBy': {'multi-user.target'}, + }, + }, + }, + }, + } + + +@metadata_reactor.provides( + 'nginx/vhosts', +) +def nginx(metadata): + return { + 'nginx': { + 'vhosts': { + metadata.get('web2ldap/domain'): { + 'content': 'nginx/proxy_pass.conf', + 'context': { + 'target': 'http://127.0.0.1:1760', + } + }, + }, + }, + }