From d8e559b10288d78380c659369ac4fdf0db7bbcda Mon Sep 17 00:00:00 2001 From: Menno van Leeuwen Date: Wed, 12 Mar 2025 20:42:17 +0100 Subject: [PATCH] feat: add GeeseFS mount service and associated scripts --- config/ansible/tasks/servers/geesefs.yml | 40 +++++++++++++++++++ .../templates/geesefs-mount.service.j2 | 15 +++++++ config/ansible/templates/geesefs-mount.sh.j2 | 15 +++++++ 3 files changed, 70 insertions(+) create mode 100644 config/ansible/templates/geesefs-mount.service.j2 create mode 100644 config/ansible/templates/geesefs-mount.sh.j2 diff --git a/config/ansible/tasks/servers/geesefs.yml b/config/ansible/tasks/servers/geesefs.yml index 097c2fc..69786ad 100644 --- a/config/ansible/tasks/servers/geesefs.yml +++ b/config/ansible/tasks/servers/geesefs.yml @@ -55,3 +55,43 @@ path: "{{ temp_dir.path }}" state: absent when: temp_dir.path is defined + +- name: Create mount directory if it doesn't exist + ansible.builtin.file: + path: /mnt/object_storage + state: directory + mode: '0755' + become: true + +- name: Create GeeseFS mount script + ansible.builtin.template: + src: geesefs-mount.sh.j2 + dest: /usr/local/bin/geesefs-mount.sh + mode: '0700' + owner: root + group: root + become: true + no_log: true + +- name: Create GeeseFS systemd service + ansible.builtin.template: + src: geesefs-mount.service.j2 + dest: /etc/systemd/system/geesefs-mount.service + mode: '0644' + owner: root + group: root + become: true + register: geesefs_service_file + +- name: Systemd daemon-reload + ansible.builtin.systemd: + daemon_reload: true + become: true + when: geesefs_service_file.changed + +- name: Enable and start GeeseFS mount service + ansible.builtin.systemd: + name: geesefs-mount + enabled: true + state: started + become: true diff --git a/config/ansible/templates/geesefs-mount.service.j2 b/config/ansible/templates/geesefs-mount.service.j2 new file mode 100644 index 0000000..8713005 --- /dev/null +++ b/config/ansible/templates/geesefs-mount.service.j2 @@ -0,0 +1,15 @@ +[Unit] +Description=Mount GeeseFS object storage +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +ExecStart=/usr/local/bin/geesefs-mount.sh +Restart=on-failure +RestartSec=5 +User=root +Group=root + +[Install] +WantedBy=multi-user.target diff --git a/config/ansible/templates/geesefs-mount.sh.j2 b/config/ansible/templates/geesefs-mount.sh.j2 new file mode 100644 index 0000000..e4b298f --- /dev/null +++ b/config/ansible/templates/geesefs-mount.sh.j2 @@ -0,0 +1,15 @@ +#!/bin/bash + +# Export AWS credentials from 1Password +export AWS_ACCESS_KEY_ID="$(op read "op://j7nmhqlsjmp2r6umly5t75hzb4/Hetzner Object Storage Bucket/AWS_ACCESS_KEY_ID")" +export AWS_SECRET_ACCESS_KEY="$(op read "op://j7nmhqlsjmp2r6umly5t75hzb4/Hetzner Object Storage Bucket/AWS_SECRET_ACCESS_KEY")" + +# Mount GeeseFS +exec {{ geesefs_install_path }} \ + --endpoint https://hel1.your-objectstorage.com \ + --list-type=2 \ + --disable-xattr \ + --no-implicit-dir \ + --no-dir-object \ + mvl-sh \ + /mnt/object_storage