diff --git a/common/docker_traefik/tasks/main.yml b/common/docker_traefik/tasks/main.yml index a13407e70b1816a3076aaaf0e9b982ce2c3d533d..7367fe7e0399b42ec30c306f7c4b496b4ecfaa7f 100644 --- a/common/docker_traefik/tasks/main.yml +++ b/common/docker_traefik/tasks/main.yml @@ -52,4 +52,4 @@ docker_compose: project_src: "{{ basedir }}" state: present - \ No newline at end of file + diff --git a/site.yml b/site.yml index 0a33384bdb2341bde2b58c1a58fff0ad331f155e..58b6b6562379ed432696b4db9a82d72f044d717f 100644 --- a/site.yml +++ b/site.yml @@ -173,7 +173,9 @@ - { role: webserver/docker_dokuwiki, tags: dokuwiki, servicename: "dokuwiki", - domain: "wiki.warpzone.ms" + domain: "wiki.warpzone.ms", + basedir: /srv/dokuwiki, + healthchecks_url: "https://hc-ping.com/038adcfe-05bf-45b4-919b-88b69aab8844" } - { role: webserver/docker_gitlab, tags: gitlab, diff --git a/webserver/docker_dokuwiki/tasks/main.yml b/webserver/docker_dokuwiki/tasks/main.yml index 2cf690395aa8dcd39aa78307fcdb51deee4a8482..060c0394e20584ae35cdafa18bf3388fd2da5d61 100644 --- a/webserver/docker_dokuwiki/tasks/main.yml +++ b/webserver/docker_dokuwiki/tasks/main.yml @@ -9,22 +9,23 @@ path: "{{item}}" state: "directory" with_items: - - /srv/dokuwiki/ - - /srv/dokuwiki/data - - /srv/dokuwiki/pdftemplate + - {{ basedir }}/ + - {{ basedir }}/data + - {{ basedir }}/pdftemplate - name: Docker Compose Konfig-Datei erstellen template: src: "{{item}}" - dest: "/srv/dokuwiki/{{item}}" + dest: "{{ basedir }}/{{item}}" with_items: - docker-compose.yml - Dockerfile - sendmail_plenum.py + register: config - name: start dokuwiki docker docker_compose: - project_src: /srv/dokuwiki/ + project_src: {{ basedir }} state: present - name: Cronjob für Mailversand Plenumsmail @@ -33,5 +34,16 @@ weekday: "0" hour: "20" minute: "0" - job: "/usr/bin/python3 /srv/dokuwiki/sendmail_plenum.py" + job: "/usr/bin/python3 {{ basedir }}/sendmail_plenum.py" disabled: false + +- name: "stop {{ servicename}} docker" + docker_compose: + project_src: "{{ basedir }}" + state: absent + when: config.changed + +- name: "start {{ servicename}} docker" + docker_compose: + project_src: "{{ basedir }}" + state: present diff --git a/webserver/docker_dokuwiki/templates/sendmail_plenum.py b/webserver/docker_dokuwiki/templates/sendmail_plenum.py index d673b261ed3357175a0614b5cd5a18e8e4937a66..98c8f4e4307512365f9cdb391e3394deb15a5808 100644 --- a/webserver/docker_dokuwiki/templates/sendmail_plenum.py +++ b/webserver/docker_dokuwiki/templates/sendmail_plenum.py @@ -2,73 +2,76 @@ import smtplib import datetime from email.message import EmailMessage from email.utils import formatdate - -with open("/srv/dokuwiki/data/data/pages/intern/diskussionsthemen.txt") as fp: - raw = fp.read().split('\n') - - # Extract Themen - firstline = 0 - lastline = 0 - for index, line in enumerate(raw): - # Start marker - if "====== 1." in line: - firstline = index + 1 - continue +import requests + +def do_work(): + with open("/srv/dokuwiki/data/data/pages/intern/diskussionsthemen.txt") as fp: + raw = fp.read().split('\n') + + # Extract Themen + firstline = 0 + lastline = 0 + for index, line in enumerate(raw): + # Start marker + if "====== 1." in line: + firstline = index + 1 + continue + + # End marker + if "====== 2." in line: + lastline = index + break - # End marker - if "====== 2." in line: - lastline = index - break - - # Remove empty lines from topics - topics = [] - for extracted in raw[firstline:lastline-1]: - if extracted != '': - topics.append(extracted) - - # There are no topics - just exit - if (len(topics) == 0): - exit() - - # calculate date of next tuesday - d = datetime.date.today() - while d.strftime('%a') != 'Tue': - d += datetime.timedelta(1) - - # mail template - mail = f""" -Liebe Zonies, - -es gibt wieder Themen die im Plenum besprochen werden sollen. Der nächste -Reguläre Termin ist am nächsten Dienstag ({str(d)}) um 20:00. -Im Wiki (https://wiki.warpzone.ms/intern:diskussionsthemen#diskussionsthemen_naechstes_plenum_automatische_einladung) -stehen folgende Themen: - -{chr(10).join(topics)} - -Die Teilnahme ist natürlich auch remote möglich unter -https://jitsi.dorf-post.de/warpzone-plenum möglich. - -Viele Grüße und bis Dienstag, - -sendmail_plenum.py -""" - - msg = EmailMessage() - msg['Subject'] = f'Aktuelle Plenumsthemen für Dienstag ({str(d)} 20:00)' - msg['From'] = '{{noreply_email_user}}' - msg['To'] = 'intern@warpzone.ms' - msg['Date'] = formatdate(localtime=True) - msg.set_content(mail) - - server = smtplib.SMTP('{{smtp_host}}', {{smtp_port}}) - server.starttls() - server.login("{{noreply_email_user}}", "{{noreply_email_pass}}") - server.send_message(msg) - server.quit() - + # Remove empty lines from topics + topics = [] + for extracted in raw[firstline:lastline-1]: + if extracted != '': + topics.append(extracted) + + # There are no topics - just exit + if (len(topics) == 0): + exit() + + # calculate date of next tuesday + d = datetime.date.today() + while d.strftime('%a') != 'Tue': + d += datetime.timedelta(1) + + # mail template + mail = f""" + Liebe Zonies, + + es gibt wieder Themen die im Plenum besprochen werden sollen. Der nächste + Reguläre Termin ist am nächsten Dienstag ({str(d)}) um 20:00. + Im Wiki (https://wiki.warpzone.ms/intern:diskussionsthemen#diskussionsthemen_naechstes_plenum_automatische_einladung) + stehen folgende Themen: + {chr(10).join(topics)} + Die Teilnahme ist natürlich auch remote möglich unter + https://jitsi.dorf-post.de/warpzone-plenum möglich. + Viele Grüße und bis Dienstag, + sendmail_plenum.py + """ + msg = EmailMessage() + msg['Subject'] = f'Aktuelle Plenumsthemen für Dienstag ({str(d)} 20:00)' + msg['From'] = '{{noreply_email_user}}' + msg['To'] = 'intern@warpzone.ms' + msg['Date'] = formatdate(localtime=True) + msg.set_content(mail) + + server = smtplib.SMTP('{{smtp_host}}', {{smtp_port}}) + server.starttls() + server.login("{{noreply_email_user}}", "{{noreply_email_pass}}") + server.send_message(msg) + server.quit() + return True + +success = False +try: + success = do_work() +finally: + requests.get"{{ healthchecks_url }}" if success else "{{ healthchecks_url }}" + "/fail") \ No newline at end of file