From 5f9605745f4f8e59d5aba78da18b8a50bc4a5d88 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Mon, 10 Jun 2024 06:02:45 +0200 Subject: Copy webmap-import. --- files/etc/systemd/system/webmap-import@.service | 41 +++++++ tasks/webmap.yml | 139 ++++++++++++++++++++++++ webmap-tools | 2 +- 3 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 files/etc/systemd/system/webmap-import@.service diff --git a/files/etc/systemd/system/webmap-import@.service b/files/etc/systemd/system/webmap-import@.service new file mode 100644 index 0000000..540e7de --- /dev/null +++ b/files/etc/systemd/system/webmap-import@.service @@ -0,0 +1,41 @@ +[Unit] +Description=Webmap updater service (import %I to PostgreSQL) +After=postgresql.service webmap-update@%i.target +After=webmap-download@%i.service +Upholds=webmap-update@%i.target + +# XXX webmap-download write cached files atomatically but there is no +# guarantee that GDAL/OGR opens them atomically. It'd therefore make +# sense to use the following Conflict= directive, however systemd skips +# webmap-download@%i.service in that case. +#Conflicts=webmap-download@%i.service + +[Service] +User=_webmap-import +Group=_webmap + +Nice=15 +IOSchedulingClass=idle + +Type=oneshot +ExecStart=/usr/local/bin/webmap-import \ + --cachedir=/var/cache/webmap \ + --lockfile=%t/webmap/lock \ + -- %I + +RuntimeDirectory=webmap +RuntimeDirectoryPreserve=yes + +# Hardening +NoNewPrivileges=yes +ProtectHome=yes +ProtectSystem=strict +PrivateDevices=yes +ProtectControlGroups=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 +PrivateTmp=yes + +[Install] +WantedBy=webmap-update@%i.target diff --git a/tasks/webmap.yml b/tasks/webmap.yml index ff212e5..053b744 100644 --- a/tasks/webmap.yml +++ b/tasks/webmap.yml @@ -12,6 +12,7 @@ - python3-gdal - python3-lxml - python3-requests + - python3-systemd - python3-tqdm - python3-urllib3 - python3-xdg @@ -117,6 +118,16 @@ - meta: flush_handlers +- name: Create system user '_webmap-import' + user: name=_webmap-import system=true + group=_webmap + createhome=false + home=/nonexistent + shell=/usr/sbin/nologin + comment="Webmap update (extract/import)" + password="!" + state=present + - name: Install PostgreSQL and PostGIS apt: pkg={{ packages }} vars: @@ -137,6 +148,13 @@ - meta: flush_handlers +# Usage: \sudo -u postgres psql